CVE-2026-55073 WeasyPrint restrictive URL fetcher bypass allows local file read and SSRF
Attackers can bypass URL restrictions in WeasyPrint to read local files or access internal resources via crafted PDF generation inputs.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Local or same network only
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-55073?
CVE-2026-55073 is a medium-severity server-side request forgery vulnerability in Kozea WeasyPrint, published on 14 Sep 2026. It can only be exploited from the same machine or local network, with no action from the victim.
Official description
WeasyPrint helps web developers to create PDF documents. Prior to 70.0, server-side applications that configure a restrictive url_fetcher and pass attacker-influenced values to HTML.write_pdf() can have the restriction bypassed through the xmp_metadata or stylesheets options. In weasyprint/pdf/init.py, xmp_metadata calls select_source() without the document url_fetcher, allowing an accessible local file to be read and embedded verbatim in the output PDF. In weasyprint/document.py, stylesheets constructs CSS() without the document url_fetcher, allowing local or internal resource loading and propagating the permissive fetcher through nested CSS imports and url() references. The stylesheets channel applies fetched resources but does not by itself disclose stylesheet comments verbatim. This issue is fixed in version 70.0.
Weakness: CWE-918
Which versions are affected by CVE-2026-55073?
3 open source packages ship an affected version, including weasyprint.
| Package | Affected | Fixed in |
|---|---|---|
weasyprint PyPI | All versions | 70.0 |
weasyprint PyPI | All versions | 70.0 |
weasyprint PyPI | All versions | 70.0 |
Linux distribution packages (2)
python-weasyprint openSUSE:Leap 16.0 | All versions | 65.1-bp160.4.1 |
python-weasyprint openSUSE:Tumbleweed | All versions | 70.0-1.1 |
How do I fix CVE-2026-55073?
Upgrade weasyprint to 70.0 or later.
Upgrade, and send outbound requests through an allow-list that blocks internal addresses. More about Server-side request forgery.
Is CVE-2026-55073 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-55073 exists.
Sources
Also known as DEBIAN-CVE-2026-55073, GHSA-jf6q-chmf-3h3v, PYSEC-2026-3940, UBUNTU-CVE-2026-55073, openSUSE-SU-2026:11816-1, openSUSE-SU-2026:21928-1.