[CLSA-2026:1788435964] Fix CVE(s): CVE-2026-18503
Type:
security
Severity:
Low
Release date:
2026-09-03 11:46:15 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 3.8's re module does not support. - CVE-2026-18503
CVEs fixed:
Updated packages:
  • alt-python38_3.8.20-28_amd64.deb
    sha:0c303602b60660d43c43e12ece76b68fc8a155d0
  • alt-python38-debug_3.8.20-28_amd64.deb
    sha:0d047a49f58fe5219d62f481a1bb9e30114689c8
  • alt-python38-devel_3.8.20-28_amd64.deb
    sha:e1a15734bb5da6b26a04972f2f87c6df7a2cd911
  • alt-python38-idle_3.8.20-28_amd64.deb
    sha:44f501dce6cbd47964f06aef24eb8501382a257d
  • alt-python38-libs_3.8.20-28_amd64.deb
    sha:a1f3f889aa97adfde8010e548051548e910a2685
  • alt-python38-test_3.8.20-28_amd64.deb
    sha:e7f90acef0401e0a35c94ac8f02b7e150472c17c
  • alt-python38-tkinter_3.8.20-28_amd64.deb
    sha:7bab7e0a3212b807a5c8e1e63bb3b23a2f9a0c8b
  • alt-python38_3.8.20-28_arm64.deb
    sha:69915d3c18a97ddb724186176541a5f1b1f0fcae
  • alt-python38-debug_3.8.20-28_arm64.deb
    sha:db9a97fde3e96b87a38cbec39a5d90387553fb46
  • alt-python38-devel_3.8.20-28_arm64.deb
    sha:9ee5a5cda07455ed90525aa785e810681b81077a
  • alt-python38-idle_3.8.20-28_arm64.deb
    sha:db4baab96400e6b851c2e443a25eaae899609039
  • alt-python38-libs_3.8.20-28_arm64.deb
    sha:df7f36e61d4e422aae5842e9dd62439b2455f615
  • alt-python38-test_3.8.20-28_arm64.deb
    sha:cfd2c2f9cbe703aff88e3fe0cb97a51f0c4633f5
  • alt-python38-tkinter_3.8.20-28_arm64.deb
    sha:fdcdc1bec50b404990941999a4bff727f16c35ba
Notes:
This page is generated automatically and has not been checked for errors. For clarification or corrections please contact the CloudLinux Packaging Team.