WeasyPrint restrictive URL fetcher bypass allows local file read and SSRF
Key facts
- Attack vector
- Local
- 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-918 and the CVSS impact.
Summary
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.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| Kozea | WeasyPrint | before 70.0 | 70.0 | Patch available | CNA |
| — | weasyprint (PyPI) | before 70.0 | 70.0 | Patch available | GHSA-jf6q-chmf-3h3v |
- WeasyPrint VendorKozea Affected before 70.0 Fixed in 70.0 Patch available CNA
- weasyprint (PyPI) Vendor— Affected before 70.0 Fixed in 70.0 Patch available GHSA-jf6q-chmf-3h3v
Remediation
- Fix · CNA WeasyPrint (Kozea) Fixed in 70.0
- Fix · GHSA-jf6q-chmf-3h3v weasyprint (PyPI) Fixed in 70.0 Advisory →
Vendor assessments
Red Hat
Red Hat rating: Moderate. Red Hat's page for this CVE →
Not affected: 1 product
- Red Hat Ansible Automation Platform 2
Timeline
- 2026-10-02 Threatist record created from CVE-2026-55073
- 2026-10-03 Alias added: GHSA-jf6q-chmf-3h3v
References
More Kozea vulnerabilities
- TI-2026-69644 Inefficient path parsing in CairoSVG enables denial of service CVSS 4.0HIGH 8.7
- TI-2026-24451 CairoSVG vulnerable to Exponential DoS via recursive <use> element amplification CVSS 3.1HIGH 7.5
- TI-2025-42134 WeasyPrint Vulnerable to Server-Side Request Forgery (SSRF) Protection Bypass via HTTP Redirect CVSS 3.1HIGH 7.5
- TI-2026-36607 WeasyPrint: CSS Injection via Presentational Hints CVSS 3.1MEDIUM 6.5
- TI-2023-12296 CairoSVG improperly processes SVG files loaded from external resources CVSS 3.1CRITICAL 9.9
- TI-2026-68895 WeasyPrint passes EPS images to Ghostscript, risking code execution CVSS 3.1HIGH 8.8
Sources
- CVE-2026-55073 · CVE Program
- CVE-2026-55073 · NVD
- FIRST EPSS
- GHSA-jf6q-chmf-3h3v · GitHub Advisory Database · CC BY 4.0
- CVE-2026-55073 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences