pymdown-extensions — security advisory
PyMdown Extensions is a set of extensions for the Python-Markdown markdown project. In versions up to and including 10.21.3, the b64 extension is vulnerable to a path traversal that discloses arbitrary files: it inlines images referenced by by joining the src onto the configured base_path with os.path.normpath and opening the result directly, without verifying that the resolved path stays inside base_path. As a result, an src containing ../ sequences or an absolute path reads a file outside base_path as long as it has an allowed image extension (.png, .jpg, .jpeg, .gif, .svg), and the file's contents are then base64-encoded into the rendered output, disclosing them. An application that renders untrusted Markdown with pymdownx.b64 enabled can therefore leak the contents of image-extension files readable by the process to whoever controls the Markdown or views the output, a targeted file-read bounded by the extension check. This issue has been fixed in version 11.0.
- Products
- pymdown-extensions
- Affected versions
- 10.11.2-1, 10.13-1, 10.13-1+deb13u1, 10.13-2, 10.13-3, 10.13-4, 10.19.1-1, 10.19.1-3, 10.8.1-1, 10.9-1, 11.0.1-1, 9.5-2, 9.5-3, 9.5-4, 9.5-5
- Fixed versions
- 11.0.1-1
- CVEs
- CVE-2026-61632
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 1 Nov 2026, 09:56 UTC · Revision 1
Source evidence
PyMdown Extensions is a set of extensions for the Python-Markdown markdown project. In versions up to and including 10.21.3, the b64 extension is vulnerable to a path traversal that discloses arbitrary files: it inlines images referenced by by joining the src onto the configured base_path with os.path.normpath and opening the result directly, without verifying that the resolved path stays inside base_path. As a result, an src containing ../ sequences or an absolute path reads a file outside base_path as long as it has an allowed image extension (.png, .jpg, .jpeg, .gif, .svg), and the file's contents are then base64-encoded into the rendered output, disclosing them. An application that renders untrusted Markdown with pymdownx.b64 enabled can therefore leak the contents of image-extension files readable by the process to whoever controls the Markdown or views the output, a targeted file-read bounded by the extension check. This issue has been fixed in version 11.0.
osv:DEBIAN-CVE-2026-61632
pymdown-extensions
Fixed versions: Not specified
pymdown-extensions
Fixed versions: Not specified
pymdown-extensions
Fixed versions: 11.0.1-1
Complete source record
{
"id": "91803711fac3528694e95fb1d4086cc30292ef8133b03d10404eeb026bc48789",
"url": "https://osv.dev/vulnerability/DEBIAN-CVE-2026-61632",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "DEBIAN-CVE-2026-61632",
"summary": "PyMdown Extensions is a set of extensions for the Python-Markdown markdown project. In versions up to and including 10.21.3, the b64 extension is vulnerable to a path traversal that discloses arbitrary files: it inlines images referenced by by joining the src onto the configured base_path with os.path.normpath and opening the result directly, without verifying that the resolved path stays inside base_path. As a result, an src containing ../ sequences or an absolute path reads a file outside base_path as long as it has an allowed image extension (.png, .jpg, .jpeg, .gif, .svg), and the file's contents are then base64-encoded into the rendered output, disclosing them. An application that renders untrusted Markdown with pymdownx.b64 enabled can therefore leak the contents of image-extension files readable by the process to whoever controls the Markdown or views the output, a targeted file-read bounded by the extension check. This issue has been fixed in version 11.0.",
"evidence": "osv:DEBIAN-CVE-2026-61632",
"products": [
{
"name": {
"value": "pymdown-extensions",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "10.11.2-1",
"evidence": "/affected/0/versions"
},
{
"value": "10.13-1",
"evidence": "/affected/0/versions"
},
{
"value": "10.13-2",
"evidence": "/affected/0/versions"
},
{
"value": "10.13-3",
"evidence": "/affected/0/versions"
},
{
"value": "10.13-4",
"evidence": "/affected/0/versions"
},
{
"value": "10.19.1-1",
"evidence": "/affected/0/versions"
},
{
"value": "10.19.1-3",
"evidence": "/affected/0/versions"
},
{
"value": "10.8.1-1",
"evidence": "/affected/0/versions"
},
{
"value": "10.9-1",
"evidence": "/affected/0/versions"
},
{
"value": "11.0.1-1",
"evidence": "/affected/0/versions"
},
{
"value": "9.5-2",
"evidence": "/affected/0/versions"
},
{
"value": "9.5-3",
"evidence": "/affected/0/versions"
},
{
"value": "9.5-4",
"evidence": "/affected/0/versions"
},
{
"value": "9.5-5",
"evidence": "/affected/0/versions"
}
]
},
{
"name": {
"value": "pymdown-extensions",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "10.13-1",
"evidence": "/affected/1/versions"
},
{
"value": "10.13-1+deb13u1",
"evidence": "/affected/1/versions"
},
{
"value": "10.13-2",
"evidence": "/affected/1/versions"
},
{
"value": "10.13-3",
"evidence": "/affected/1/versions"
},
{
"value": "10.13-4",
"evidence": "/affected/1/versions"
},
{
"value": "10.19.1-1",
"evidence": "/affected/1/versions"
},
{
"value": "10.19.1-3",
"evidence": "/affected/1/versions"
},
{
"value": "11.0.1-1",
"evidence": "/affected/1/versions"
}
]
},
{
"name": {
"value": "pymdown-extensions",
"evidence": "/affected/2/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "11.0.1-1",
"evidence": "/affected/2/ranges"
}
],
"affected_versions": [
{
"value": "10.13-1",
"evidence": "/affected/2/versions"
},
{
"value": "10.13-2",
"evidence": "/affected/2/versions"
},
{
"value": "10.13-3",
"evidence": "/affected/2/versions"
},
{
"value": "10.13-4",
"evidence": "/affected/2/versions"
},
{
"value": "10.19.1-1",
"evidence": "/affected/2/versions"
},
{
"value": "10.19.1-3",
"evidence": "/affected/2/versions"
}
]
}
],
"severity": "medium",
"structured": {
"id": "DEBIAN-CVE-2026-61632",
"aliases": [
"DEBIAN-CVE-2026-61632"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N"
}
],
"affected": [
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "pymdown-extensions",
"purl": "pkg:deb/debian/pymdown-extensions?arch=source&distro=bookworm",
"ecosystem": "Debian:12"
},
"versions": [
"10.11.2-1",
"10.13-1",
"10.13-2",
"10.13-3",
"10.13-4",
"10.19.1-1",
"10.19.1-3",
"10.8.1-1",
"10.9-1",
"11.0.1-1",
"9.5-2",
"9.5-3",
"9.5-4",
"9.5-5"
],
"database_specific": {
"source": "https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-61632.json"
},
"ecosystem_specific": {
"urgency": "not yet assigned"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "pymdown-extensions",
"purl": "pkg:deb/debian/pymdown-extensions?arch=source&distro=trixie",
"ecosystem": "Debian:13"
},
"versions": [
"10.13-1",
"10.13-1+deb13u1",
"10.13-2",
"10.13-3",
"10.13-4",
"10.19.1-1",
"10.19.1-3",
"11.0.1-1"
],
"database_specific": {
"source": "https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-61632.json"
},
"ecosystem_specific": {
"urgency": "not yet assigned"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "11.0.1-1"
}
]
}
],
"package": {
"name": "pymdown-extensions",
"purl": "pkg:deb/debian/pymdown-extensions?arch=source&distro=forky",
"ecosystem": "Debian:14"
},
"versions": [
"10.13-1",
"10.13-2",
"10.13-3",
"10.13-4",
"10.19.1-1",
"10.19.1-3"
],
"database_specific": {
"source": "https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-61632.json"
},
"ecosystem_specific": {
"urgency": "not yet assigned"
}
}
],
"modified": "2026-10-25T09:47:40.817175866Z",
"provider": "osv",
"upstream": [
"CVE-2026-61632"
],
"references": [
"https://security-tracker.debian.org/tracker/CVE-2026-61632"
]
},
"related_cves": [
{
"value": "CVE-2026-61632",
"evidence": "/upstream"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 445339,
"published_at": "2026-08-06T22:18:11.41+00:00"
}