PYSEC-2026-3833

See a problem?
Import Source
https://github.com/pypa/advisory-database/blob/main/vulns/eml-parser/PYSEC-2026-3833.yaml
JSON Data
https://api.osv.dev/v1/vulns/PYSEC-2026-3833
Aliases
Published
2026-09-10T09:44:56Z
Modified
2026-09-10T12:15:06Z
Severity
  • 5.3 (Medium) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L CVSS Calculator
Summary
eml_parser has parser DoS via deeply nested parentheses in e-mail headers
Details

Summary

eml_parser uses the email.utils.getaddresses() function from the CPython standard library to parse e-mail headers that contain e-mail addresses (such as To, Cc, Bcc, From, Reply-To, Sender, ...). When the input header contains a deeply nested CFWS (comment / folding white space) construct, the recursive descent parser in the standard library exhausts the call stack. The resulting RecursionError is not caught by eml_parser, so the exception propagates and aborts parsing of the whole message.

Impact

SOC pipelines use eml_parser to process untrusted e-mails. An attacker can easily create an eml file that will trigger the RecursionError during parsing.

The impact is mitigated by the fact that there are various other situations in which eml_parser will raise an exception when attempting to parse a malformed or pathological eml file. In particular, very deeply nested multipart e-mails also result in a RecursionError being raised by the library voluntarily. Therefore, systems relying on eml_parser already need to detect and handle errors emanating from the library in an appropriate way.

Workarounds

The issue can be avoided by wrapping the call to eml_parser.decode_email or eml_parser.decode_email_bytes in a try/except construct.

Patches

Since version 3.0.2, eml_parser will catch the error in the standard library parser and fall back to a simpler parser based on a regular expression.

References

Affected packages

PyPI / eml-parser

Package

Name
eml-parser
View open source insights on deps.dev
Purl
pkg:pypi/eml-parser

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
3.0.2

Affected versions

0.*
0.9
1.*
1.0
1.1
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
1.11
1.11.1
1.11.2
1.11.4
1.11.5
1.11.6
1.11.7
1.12.0
1.13.0
1.14.0
1.14.1
1.14.2
1.14.3
1.14.4
1.14.5
1.14.6
1.14.7
1.14.8
1.15.0
1.16.0
1.17.0
1.17.1
1.17.2
1.17.3
1.17.4
1.17.5
2.*
2.0.0
2.0.1
3.*
3.0.0
3.0.1

Database specific

source
"https://github.com/pypa/advisory-database/blob/main/vulns/eml-parser/PYSEC-2026-3833.yaml"