CVE-2026-29780Medium· 5.5▾ TwilightPoC availableeml_parser: Path Traversal in Official Example Script Leads to Arbitrary File Write
▾ Twilight zone — High severity, or a signal on a lesser flaw
impact 30.3 · likelihood 0 · exploitation 12
A public proof-of-concept already exists for this vulnerability — see Exploit availability below.
Public exploit / PoC code seen in 1 source. Availability, not in-the-wild use.
Exploit-prediction probability, daily snapshots since Jul 13.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via OSV
Last analysed / modified upstream
0.2%
1 GitHub repo
The official example script examples/recursively_extract_attachments.py contains a path traversal vulnerability that allows arbitrary file write outside the intended output directory. Attachment filenames extracted from parsed emails are directly used to construct output file paths without any sanitization, allowing an attacker-controlled filename to escape the target directory.
File: examples/recursively_extract_attachments.py
Lines: 61–64
for a in m['attachment']:
out_filepath = out_path / a['filename'] # No sanitization
print(f'\tWriting attachment: {out_filepath}')
with out_filepath.open('wb') as a_out:
a_out.write(base64.b64decode(a['raw']))
The value a['filename'] is attacker-controlled via crafted email attachment headers:
Content-Disposition: attachment; filename="../outside/pwned.txt"
No path normalization or boundary validation is performed before writing.
.eml file:Content-Disposition: attachment; filename="../outside/pwned.txt"
python recursively_extract_attachments.py -p ./emails -o ./safe
./safe/pwned.txt./outside/pwned.txt ← written outside the intended directoryVerified on Kali Linux with eml_parser installed via pip in a virtual environment.
This vulnerability is limited to the example script only and does not affect the core eml_parser library. However, as the script is part of the official repository and is likely to be adapted for production use, an attacker supplying a crafted email could achieve arbitrary file write within the execution context.
Potential attack scenarios include:
filename="../../etc/cron.d/backdoor"filename="../../var/www/html/shell.php"filename="../../home/user/.ssh/authorized_keys"import os.path
for a in m['attachment']:
filename = os.path.basename(a['filename'])
out_filepath = out_path / filename
if not out_filepath.resolve().is_relative_to(out_path.resolve()):
print(f'[!] Skipping suspicious filename: {a["filename"]}')
continue
print(f'\tWriting attachment: {out_filepath}')
with out_filepath.open('wb') as a_out:
a_out.write(base64.b64decode(a['raw']))
eml-parser < 2.0.1Upgrade to a patched release:
eml-parser 2.0.1Field changes observed since this record was first indexed.
Connected by shared product, vendor, weakness, or advisory.
CVE-2026-55618Medium· 6.5eml_parser has a URL extraction bypass via HTML entities in URLs
CVE-2026-55619Medium· 5.3eml_parser has parser DoS via deeply nested parentheses in e-mail headers
CVE-2026-55620High· 7.5eml_parser vulnerable to DoS via deeply nested parens in Received headers
CVE-2026-44844Mediumeml_parser has recursion DoS via nested message/rfc822 attachments