[CLSA-2026:1788421416] Fix CVE(s): CVE-2026-18503
Type:
security
Severity:
Low
Release date:
2026-09-03 07:43:46 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.6'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.
CVEs fixed:
Updated packages:
  • alt-python36_3.6.15-46_amd64.deb
    sha:5a2a7d8f03ef16238a060601b11c0734320a73ca
  • alt-python36-debug_3.6.15-46_amd64.deb
    sha:2f202915f6a564b1fc617902dcae59d5a12660d6
  • alt-python36-devel_3.6.15-46_amd64.deb
    sha:7a027a1bca9c9ad4e1505145232e933c645f1a43
  • alt-python36-libs_3.6.15-46_amd64.deb
    sha:55f29154dbc83f08483c46c695914d7235140354
  • alt-python36-test_3.6.15-46_amd64.deb
    sha:731855fee54138be3e185a278e7cf250142e3378
  • alt-python36-tkinter_3.6.15-46_amd64.deb
    sha:42868d7ffec2c103c86531aaf4df5eead88900ec
  • alt-python36-tools_3.6.15-46_amd64.deb
    sha:e592c96d3f80cc62870d286cb7e435a438226b20
  • alt-python36_3.6.15-46_arm64.deb
    sha:4fd0949322458d7fd8063924d79bb0e566ff4e08
  • alt-python36-debug_3.6.15-46_arm64.deb
    sha:66a975d637148d0bd495b94a77c8e2e8689bff15
  • alt-python36-devel_3.6.15-46_arm64.deb
    sha:96d3fb163f890fe45759b363b3e63e7d53f8cfc8
  • alt-python36-libs_3.6.15-46_arm64.deb
    sha:4f830b8c6bfb66256d6f846c5392df11dc65abbc
  • alt-python36-test_3.6.15-46_arm64.deb
    sha:94e63682a4fe4b961ee0e2f51a4b6d11338b1679
  • alt-python36-tkinter_3.6.15-46_arm64.deb
    sha:8e2a34ccdd2117dd48b1b5f2b637b957ddce86bf
  • alt-python36-tools_3.6.15-46_arm64.deb
    sha:ad0b49423fa9dc6832b27b2d51d3ec77ea68adde
Notes:
This page is generated automatically and has not been checked for errors. For clarification or corrections please contact the CloudLinux Packaging Team.