[CLSA-2026:1789727823] Fix CVE(s): CVE-2026-18503, CVE-2026-6879
Type:
security
Severity:
Low
Release date:
2026-09-18 10:37:24 UTC
Description:
* SECURITY UPDATE: CPU denial-of-service in csv.Sniffer. Two independent regexes in Sniffer._guess_quote_and_delimiter() ran in super-linear time on samples reachable from the public csv.Sniffer.sniff() API (CWE-1176, algorithmic complexity). The quoted-field probe matched a field body with a lazy ".*?" under re.DOTALL, so a closing quote not followed by a delimiter was retried against every later quote in the sample: quadratic. The doubled-quote probe dq_regexp was unanchored, rescanned leading whitespace and ran even when no delimiter had been found, which is exponential on a sample carrying a run of quote characters. - debian/patches/CVE-2026-18503.patch: backport of cpython 19e5024518 (gh-109638, GH-154868) and fd78b565 (gh-98820, GH-154867), both in their upstream 3.10-branch form. Both commits are part of Python 3.10.21, the release the CVE record names as fixing the "0 to < 3.10.21" range, and gh-98820 alone leaves the doubled-quote probe exponential: with it applied on its own, sniff() on '"",'*100 + '"'*100 + '0' + '"'*100 + '0', on '"a"\n' + ' '*100000 with delimiters=',;', and on '"a" "b"\n' + ' '*100000 each still runs unbounded inside a single C-level re call. Field bodies are now matched by unrolled, unambiguous loops that cannot backtrack, the doubled-quote probe is anchored on whole fields and skipped when no delimiter was found, and sniff() normalises CRLF and CR to LF first so the probe's "$" means end of record. The 3.10 commits are used rather than the 3.11+ ones, which express the same fix with a possessive quantifier that Python 2.7's re module does not support. - CVE-2026-18503 * The Misc/NEWS.d fragments of both commits are omitted; this version ships a single Misc/NEWS file.
Updated packages:
  • alt-python27_2.7.18-31_amd64.deb
    sha:632f25df44f9db07e5c2e8bbe8c83ad21288ed5c
  • alt-python27-debug_2.7.18-31_amd64.deb
    sha:2f37a6c1ac9b81c08e710588d0bef22b3cf6ac4d
  • alt-python27-devel_2.7.18-31_amd64.deb
    sha:6c055ae41acb29d99a9ad76bdd1aa5066b9cf051
  • alt-python27-idle_2.7.18-31_amd64.deb
    sha:0b6047d3039a27b29304654c7b630eb820214165
  • alt-python27-libs_2.7.18-31_amd64.deb
    sha:bd9ec21420ac11d7b7b34ee5e6cb2412b99fd988
  • alt-python27-test_2.7.18-31_amd64.deb
    sha:6929a88b33cac9bf0400faacf8f196ba694b4d85
  • alt-python27-tkinter_2.7.18-31_amd64.deb
    sha:a34a3adaf67cc0f2f130aa7542a3a7e82a2798e7
  • alt-python27-tools_2.7.18-31_amd64.deb
    sha:7a099101de9ce9740e5b7470aba269041ecbcb0d
  • alt-python27_2.7.18-31_arm64.deb
    sha:01d2bdbafb9ff2534cb02718cfb9d45d47019200
  • alt-python27-debug_2.7.18-31_arm64.deb
    sha:327474548ebd465cf6e49e09354d3880a2f57a12
  • alt-python27-devel_2.7.18-31_arm64.deb
    sha:21496c5b87a4b7f49bf79c4e48da32a2794be30f
  • alt-python27-idle_2.7.18-31_arm64.deb
    sha:46c603e5c35eb4afb8628c7523ea0269a8f9a045
  • alt-python27-libs_2.7.18-31_arm64.deb
    sha:970d560d7c6f59c456ae0d249df9dcd2129dd257
  • alt-python27-test_2.7.18-31_arm64.deb
    sha:c79104bd2825bc2d46fd767b962f4ff8ef6d94bf
  • alt-python27-tkinter_2.7.18-31_arm64.deb
    sha:33397fcda882d46d0863070970880a68fa1016da
  • alt-python27-tools_2.7.18-31_arm64.deb
    sha:da8f03aad5320f6a8a5193ee303f25a1157f522f
Notes:
This page is generated automatically and has not been checked for errors. For clarification or corrections please contact the CloudLinux Packaging Team.