CVE-2026-29780

mediumpriority · track · 10EPSS 0.003 · 17 %ileexploit · PoCEUUS
grimoire priorityP1 · Urgent
Exploitable?
Public exploit
1 exploit · PoC
Likely / severe?
0.25% (17th) EPSS
CVSS 5.5 · medium
Is it mine?
3 products
Check your exposure
Who says so?
4 sources
cnnvd · enisa_euvd · osv · nvd

EPSS · scored 2026-10-27

eml_parser serves as a python module for parsing eml files and returning various information found in the e-mail as well as computed information. Prior to version 2.0.1, 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. This issue has been patched in version 2.0.1.

01

cvss

Technical severity, 0–10. One row per scoring source.

5.5
010

base score 0–10 · higher = more severe · hover a vector to decode

v3.15.5mediumCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:Nsecondary · ENISA EU
v3.15.5mediumCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:Nsecondary · security-advisories@github.comexploitability 1.8 · impact 3.6
v3.15.5mediumCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:Nsecondary · OSV
v3.15.2mediumCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N/E:Psecondary · CVSS-BT (t0sche)
02

ssvc

A stakeholder decision — act, attend, or track — from exploitation and impact.

Exploitation: poc · Automatable: no · Technical Impact: partialcoordinatorcisa_ssvcUS
03

weaknesses

The CWE weakness classes this flaw belongs to.

04

exploits (1)

Public proof-of-concept and weaponised exploit code.

05

affected products (3)

Products and version ranges known to be affected.

06

advisories (2)

Vendor and ecosystem advisories describing this.

  • GHSA-389r-rccm-h3h5eml_parser: Path Traversal in Official Example Script Leads to Arbitrary File Write2026-03-05ghsa · osvUS

    ### Summary 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. ### Details File: `examples/recursively_extract_attachments.py` Lines: 61–64 ```python 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. ### PoC 1. Create a malicious `.eml` file: ``` Content-Disposition: attachment; filename="../outside/pwned.txt" ``` 2. Run the example script: ``` python recursively_extract_attachments.py -p ./emails -o ./safe ``` 3. Expected: `./safe/pwned.txt` 4. Actual: `./outside/pwned.txt` ← written outside the intended directory Verified on Kali Linux with eml_parser installed via pip in a virtual environment. ### Impact 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: - Cron job injection: `filename="../../etc/cron.d/backdoor"` - Web shell upload: `filename="../../var/www/html/shell.php"` - SSH key injection: `filename="../../home/user/.ssh/authorized_keys"` ### Recommended Fix ```python 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'])) ```

  • PYSEC-2026-21482026-03-07vendor · osvUS

    eml_parser serves as a python module for parsing eml files and returning various information found in the e-mail as well as computed information. Prior to version 2.0.1, 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. This issue has been patched in version 2.0.1.

07

also known as (6)

Other names and identifiers for this entity.

08

sources

Which sources assert this record, and when.

published 2026-03-07modified 2026-06-17
09

references (11)

External citations — patches, advisories, analysis.

scry

Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.

Free scan