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
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.