Read the docs
TI-2023-15603 Aliases CVE-2023-32309GHSA-jh85-wwv9-24hv

Arbitrary file inclusion with the pymdowm-snippets extension

Priority HIGH 72CWE-22Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
Low
Impact type
Information disclosure
Confidentiality · integrity · availability
High · None · None
Fix status
Fixed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-22 and the CVSS impact.

Summary

PyMdown Extensions is a set of extensions for the `Python-Markdown` markdown project. In affected versions an arbitrary file read is possible when using include file syntax. By using the syntax `--8<--"/etc/passwd"` or `--8<--"/proc/self/environ"` the content of these files will be rendered in the generated documentation. Additionally, a path relative to a specified, allowed base path can also be used to render the content of a file outside the specified base paths: `--8<-- "../../../../etc/passwd"`. Within the Snippets extension, there exists a `base_path` option but the implementation is vulnerable to Directory Traversal. The vulnerable section exists in `get_snippet_path(self, path)` lines 155 to 174 in snippets.py. Any readable file on the host where the plugin is executing may have its content exposed. This can impact any use of Snippets that exposes the use of Snippets to external users. It is never recommended to use Snippets to process user-facing, dynamic content. It is designed to process known content on the backend under the control of the host, but if someone were to accidentally enable it for user-facing content, undesired information could be exposed. This issue has been addressed in version 10.0. Users are advised to upgrade. Users unable to upgrade may restrict relative paths by filtering input.

Why it matters now

Exploitation Proof of concept CISA SSVC · not in CISA KEV
EPSS 0.01658 76th percentileScored 2026-11-07
Public exploit Yes 1 exploit referenceTagged by NVD
Fix Fixed pymdown-extensions (facelessuser): 10.0pymdown-extensions (PyPI): 10.0

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
Poc
Automatable
Yes
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
facelessuserpymdown-extensions1.5 to before 10.010.0Patch availableCNA
—pymdown-extensions (PyPI)1.5 to before 10.010.0Patch availableGHSA-jh85-wwv9-24hv
  • pymdown-extensions Vendorfacelessuser Affected 1.5 to before 10.0 Fixed in 10.0 Patch available CNA
  • pymdown-extensions (PyPI) Vendor— Affected 1.5 to before 10.0 Fixed in 10.0 Patch available GHSA-jh85-wwv9-24hv

CPE configurations NVD · 1

CPEVersionsRoleVendor
cpe:2.3:a:facelessuser:pymdown_extensions:*:*:*:*:*:*:*:*1.5.0 to before 10.0Vulnerablefacelessuser
  • cpe:2.3:a:facelessuser:pymdown_extensions:*:*:*:*:*:*:*:* Versions 1.5.0 to before 10.0 Vulnerable ·facelessuser

Remediation

  • Fix · CNA pymdown-extensions (facelessuser) Fixed in 10.0
  • Fix · GHSA-jh85-wwv9-24hv pymdown-extensions (PyPI) Fixed in 10.0 Advisory →

Timeline

  1. 2026-10-02 Threatist record created from CVE-2023-32309
  2. 2026-10-03 Alias added: GHSA-jh85-wwv9-24hv

References

  • TI-2026-34058 Path traversal in facelessuser pymdown-extensions CVSS 3.1MEDIUM 4.3
  • TI-2025-41723 PyMdown Extensions has ReDOS bug in Figure Capture extension CVSS 4.0LOW 2.7

Sources