GHSA-r4rv-85jg-w4mf
Mistune: Arbitrary File Read via Include directive path traversal
En bref
- Publiée
- Mise à jour
- CVE
- CVE-2026-59924
- Alias
- PYSEC-2026-2212
- CVSS_V3
- CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Description
### Summary A path traversal issue exists in mistune's `Include` directive when markdown files are processed using `md.read()`. A crafted include path can cause files outside the intended markdown directory to be accessed. ### Details The issue occurs in the `Include.parse()` method where user-supplied paths are joined and normalized without verifying that the resulting path remains within an expected directory. ```python relpath = self.parse_title(m) dest = os.path.join(os.path.dirname(source_file), relpath) dest = os.path.normpath(dest) ``` Because the final path is not restricted to a trusted base directory, path traversal sequences such as `../` may reference files outside the intended location. ### Proof of Concept Create a markdown file: ```markdown .. include:: ../../../example.txt ``` Process it using: ```python import mistune from mistune.directives import RSTDirective, Include md = mistune.create_markdown( plugins=[RSTDirective([Include()])] ) result, state = md.read("test.md") print(result) ``` ### Impact Applications that process untrusted markdown files with the `Include` directive enabled may allow unintended file access. The impact depends on how the feature is used and what files are accessible to the running process. ### Recommended Fix Validate the resolved path and ensure it remains within an allowed directory before opening the file.
Paquets affectés
| Paquet | Versions |
|---|---|
| PyPI · mistune | introduced 0, fixed 3.3.0 |
Références
- https://github.com/lepture/mistune/security/advisories/GHSA-r4rv-85jg-w4mf WEB
- https://nvd.nist.gov/vuln/detail/CVE-2026-59924 ADVISORY
- https://github.com/lepture/mistune/commit/1bef343ade163fc3bb95572b15be720084cdb993 WEB
- https://github.com/lepture/mistune PACKAGE
- https://github.com/lepture/mistune/releases/tag/v3.3.0 WEB
- https://github.com/pypa/advisory-database/tree/main/vulns/mistune/PYSEC-2026-2212.yaml WEB
Sources
| Source | Licence |
|---|---|
| OSV.dev | CC-BY 4.0 — GitHub Advisory Database |