Skip to content

[3.14] gh-146333: Fix quadratic regex backtracking in configparser option parsing (GH-146399)#148287

Open
miss-islington wants to merge 1 commit intopython:3.14from
miss-islington:backport-7e0a0be-3.14
Open

[3.14] gh-146333: Fix quadratic regex backtracking in configparser option parsing (GH-146399)#148287
miss-islington wants to merge 1 commit intopython:3.14from
miss-islington:backport-7e0a0be-3.14

Conversation

@miss-islington
Copy link
Copy Markdown
Contributor

@miss-islington miss-islington commented Apr 9, 2026

Use negative lookahead in option regex to prevent backtracking, and to avoid changing logic outside the regexes (since people could use the regex directly).
(cherry picked from commit 7e0a0be)

Co-authored-by: Joshua Swanson 22283299+joshuaswanson@users.noreply.github.com

…ion parsing (pythonGH-146399)

Use negative lookahead in option regex to prevent backtracking, and to avoid changing logic outside the regexes (since people could use the regex directly).
(cherry picked from commit 7e0a0be)

Co-authored-by: Joshua Swanson <22283299+joshuaswanson@users.noreply.github.com>
@miss-islington miss-islington requested a review from jaraco as a code owner April 9, 2026 09:02
mandree added a commit to mandree/freebsd-ports that referenced this pull request Apr 11, 2026
Add a -flto=full option, which can speed up the port build
in terms of wallclock time at the expense of overall more
CPU time.

Issue a warning that test_ssl will fail from pre-test
if DEBUG is enabled.

Changelog:	https://docs.python.org/release/3.14.4/whatsnew/changelog.html

Which contains these security fixes:

pyexpat.c: Unbounded C recursion in conv_content_model causes crash
Security:	python/cpython#145986
which is the same as
Security:	CVE-2026-4224

Reject control characters in more places in http.cookies.Morsel
Security:	python/cpython#145599
which is the same as
Security:	CVE-2026-3644

SourcelessFileLoader does not use io.open_code()
Security:	python/cpython#145506
which is the same as
Security:	CVE-2026-2297

[security] Disallow usage of control characters in status, headers and
values for security in Lib/wsgiref/handlers.py
Security:	python/cpython#144370

Reject leading dashes in webbrowser.open()
Security:	python/cpython#143930
which is the same as
Security:	9fdad262-2e0f-11f1-88c7-00a098b42aeb
which is the same as
Security:	CVE-2026-4519

Excess Base64 data ignored after padding by default
Security:	python/cpython#145264
which is the same as
Security:	CVE-2026-3446

Added into PORTREVISION=1: 2 cherry-picks post-3.14.4
HTTP proxy via "CONNECT" tunneling doesn't sanitize CR/LF
Obtained from:	python/cpython#148342
Security:	python/cpython#146212
Security:	CVE-2026-1502

configparser.RawConfigParser.{OPTCRE,OPTCRE_NV} regexes vulnerable to
quadratic backtracking
Obtained from:	python/cpython#148287
Security:	python/cpython#146333

lang/python314: add FULLLTO and warning
mandree added a commit to mandree/freebsd-ports that referenced this pull request Apr 11, 2026
Add a -flto=full option, which can speed up the port build
in terms of wallclock time at the expense of overall more
CPU time.

Issue a warning that test_ssl will fail from pre-test
if DEBUG is enabled.

Changelog:	https://docs.python.org/release/3.14.4/whatsnew/changelog.html

Which contains these security fixes:

pyexpat.c: Unbounded C recursion in conv_content_model causes crash
Security:	python/cpython#145986
which is the same as
Security:	CVE-2026-4224

Reject control characters in more places in http.cookies.Morsel
Security:	python/cpython#145599
which is the same as
Security:	CVE-2026-3644

SourcelessFileLoader does not use io.open_code()
Security:	python/cpython#145506
which is the same as
Security:	CVE-2026-2297

[security] Disallow usage of control characters in status, headers and
values for security in Lib/wsgiref/handlers.py
Security:	python/cpython#144370

Reject leading dashes in webbrowser.open()
Security:	python/cpython#143930
which is the same as
Security:	9fdad262-2e0f-11f1-88c7-00a098b42aeb
which is the same as
Security:	CVE-2026-4519

Excess Base64 data ignored after padding by default
Security:	python/cpython#145264
which is the same as
Security:	CVE-2026-3446

Added into PORTREVISION=1: 2 cherry-picks post-3.14.4
HTTP proxy via "CONNECT" tunneling doesn't sanitize CR/LF
Obtained from:	python/cpython#148342
Security:	python/cpython#146212
Security:	CVE-2026-1502

configparser.RawConfigParser.{OPTCRE,OPTCRE_NV} regexes vulnerable to
quadratic backtracking
Obtained from:	python/cpython#148287
Security:	python/cpython#146333

lang/python314: add FULLLTO and warning

(cherry picked from commit b526f87)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants