Skip to content

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

Merged
gpshead merged 1 commit into
python:3.14from
miss-islington:backport-7e0a0be-3.14
Apr 12, 2026
Merged

[3.14] gh-146333: Fix quadratic regex backtracking in configparser option parsing (GH-146399)#148287
gpshead merged 1 commit into
python:3.14from
miss-islington:backport-7e0a0be-3.14

Conversation

@miss-islington

@miss-islingtonmiss-islington commented Apr 9, 2026

Copy link
Copy Markdown
Contributor

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>
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)
@gpshead
gpshead enabled auto-merge (squash) April 12, 2026 00:05
@gpshead
gpshead merged commit af2f518 into python:3.14Apr 12, 2026
57 checks passed
@miss-islington
miss-islington deleted the backport-7e0a0be-3.14 branch April 12, 2026 00:05
freebsd-git pushed a commit to freebsd/freebsd-ports that referenced this pull request Apr 12, 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
PR: 294324
Which contains these security fixes:
pyexpat.c: Unbounded C recursion in conv_content_model causes crash
Security:	python/cpython#145986
/ CVE-2026-4224
Reject control characters in more places in http.cookies.Morsel
Security:	python/cpython#145599
/ CVE-2026-3644
SourcelessFileLoader does not use io.open_code()
Security:	python/cpython#145506
/ CVE-2026-2297
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
/ 9fdad262-2e0f-11f1-88c7-00a098b42aeb
/ CVE-2026-4519
Excess Base64 data ignored after padding by default
Security:	python/cpython#145264
/ CVE-2026-3446
Additional security related PRs from upstream
HTTP proxy via "CONNECT" tunneling doesn't sanitize CR/LF
Obtained from:	python/cpython#148342
Security	python/cpython#146212
/ CVE-2026-1502
configparser.RawConfigParser.{OPTCRE,OPTCRE_NV} regexes vulnerable to
quadratic backtracking
Obtained from:	python/cpython#148287
Security:	python/cpython#146333
freebsd-git pushed a commit to freebsd/freebsd-ports that referenced this pull request Apr 12, 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
PR: 294324
Which contains these security fixes:
pyexpat.c: Unbounded C recursion in conv_content_model causes crash
Security:	python/cpython#145986
/ CVE-2026-4224
Reject control characters in more places in http.cookies.Morsel
Security:	python/cpython#145599
/ CVE-2026-3644
SourcelessFileLoader does not use io.open_code()
Security:	python/cpython#145506
/ CVE-2026-2297
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
/ 9fdad262-2e0f-11f1-88c7-00a098b42aeb
/ CVE-2026-4519
Excess Base64 data ignored after padding by default
Security:	python/cpython#145264
/ CVE-2026-3446
Additional security related PRs from upstream
HTTP proxy via "CONNECT" tunneling doesn't sanitize CR/LF
Obtained from:	python/cpython#148342
Security	python/cpython#146212
/ CVE-2026-1502
configparser.RawConfigParser.{OPTCRE,OPTCRE_NV} regexes vulnerable to
quadratic backtracking
Obtained from:	python/cpython#148287
Security:	python/cpython#146333
(cherry picked from commit 955268b)
camachat pushed a commit to camachat/freebsd-ports that referenced this pull request Jul 22, 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
PR: 294324
Which contains these security fixes:
pyexpat.c: Unbounded C recursion in conv_content_model causes crash
Security:	python/cpython#145986
/ CVE-2026-4224
Reject control characters in more places in http.cookies.Morsel
Security:	python/cpython#145599
/ CVE-2026-3644
SourcelessFileLoader does not use io.open_code()
Security:	python/cpython#145506
/ CVE-2026-2297
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
/ 9fdad262-2e0f-11f1-88c7-00a098b42aeb
/ CVE-2026-4519
Excess Base64 data ignored after padding by default
Security:	python/cpython#145264
/ CVE-2026-3446
Additional security related PRs from upstream
HTTP proxy via "CONNECT" tunneling doesn't sanitize CR/LF
Obtained from:	python/cpython#148342
Security	python/cpython#146212
/ CVE-2026-1502
configparser.RawConfigParser.{OPTCRE,OPTCRE_NV} regexes vulnerable to
quadratic backtracking
Obtained from:	python/cpython#148287
Security:	python/cpython#146333
camachat pushed a commit to camachat/freebsd-ports that referenced this pull request Jul 24, 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
PR: 294324
Which contains these security fixes:
pyexpat.c: Unbounded C recursion in conv_content_model causes crash
Security:	python/cpython#145986
/ CVE-2026-4224
Reject control characters in more places in http.cookies.Morsel
Security:	python/cpython#145599
/ CVE-2026-3644
SourcelessFileLoader does not use io.open_code()
Security:	python/cpython#145506
/ CVE-2026-2297
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
/ 9fdad262-2e0f-11f1-88c7-00a098b42aeb
/ CVE-2026-4519
Excess Base64 data ignored after padding by default
Security:	python/cpython#145264
/ CVE-2026-3446
Additional security related PRs from upstream
HTTP proxy via "CONNECT" tunneling doesn't sanitize CR/LF
Obtained from:	python/cpython#148342
Security	python/cpython#146212
/ CVE-2026-1502
configparser.RawConfigParser.{OPTCRE,OPTCRE_NV} regexes vulnerable to
quadratic backtracking
Obtained from:	python/cpython#148287
Security:	python/cpython#146333
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@miss-islington@gpshead@joshuaswanson