fpdf2 loads attacker-chosen image URLs and local paths when rendering
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Information disclosure
- Confidentiality · integrity · availability
- Low · 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
fpdf2 before 2.8.8 is a PDF creation library for Python. Its shared image loader automatically fetches attacker-supplied HTTP(S) URLs and opens raw local paths from image calls, HTML img tags, SVG image references and template image fields (CWE-918). A remote attacker who can supply content that fpdf2 renders can make the library send requests to internal or external services and attempt to open local files, with limited confidentiality impact. Local content is exposed only when it is a valid supported image or SVG.
Written with Claude Haiku 5.5 from the sources below · 2026-10-29
Description from the CNA
fpdf2 is a PDF creation library for Python. Prior to 2.8.8, fpdf2's shared image loader automatically dereferences attacker-controlled HTTP(S) URLs and raw local paths supplied through FPDF.image(), FPDF.write_html() HTML <img src> values, SVG <image href> or xlink:href values, and template image fields. This can cause outbound requests to attacker-selected internal or external services and local file open attempts, although local content is exposed only when it is a valid supported image or SVG resource. file:// URLs are not specially handled, so the local-path case requires a raw filesystem path. This issue is fixed in version 2.8.8.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- 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
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| py-pdf | fpdf2 | before 2.8.8 | 2.8.8 | Patch available | CNA |
| — | fpdf2 (PyPI) | before 2.8.8 | 2.8.8 | Patch available | GHSA-rw7v-4hrq-x6r9 |
- fpdf2 Vendorpy-pdf Affected before 2.8.8 Fixed in 2.8.8 Patch available CNA
- fpdf2 (PyPI) Vendor— Affected before 2.8.8 Fixed in 2.8.8 Patch available GHSA-rw7v-4hrq-x6r9
Remediation
Upgrade fpdf2 on PyPI to version 2.8.8, which fixes the issue. The sources list no fixed version for fpdf2 under the py-pdf vendor entry.
Written with Claude Haiku 5.5 from the sources below · 2026-10-29
- Fix · CNA fpdf2 (py-pdf) Fixed in 2.8.8
- Fix · GHSA-rw7v-4hrq-x6r9 fpdf2 (PyPI) Fixed in 2.8.8 Advisory →
Timeline
- 2026-10-22 Threatist record created from CVE-2026-114609
- 2026-10-23 Priority changed: MEDIUM → LOW
- 2026-10-27 Alias added: GHSA-rw7v-4hrq-x6r9
- 2026-10-29 CISA SSVC decision points changed
References
Other 7
- https://github.com/py-pdf/fpdf2/security/advisories/GHSA-rw7v-4hrq-x6r9
- https://github.com/py-pdf/fpdf2/pull/1824
- https://github.com/py-pdf/fpdf2/pull/1857
- https://github.com/py-pdf/fpdf2/commit/0d27190a8c907e02ebe9cd881471a14d0622b432
- https://github.com/py-pdf/fpdf2/commit/6e23f610b7946e96e9a5dd0535dcbfbe7ac1397d
- https://github.com/py-pdf/fpdf2/releases/tag/2.8.8
- https://github.com/py-pdf/fpdf2
More py-pdf vulnerabilities
- TI-2026-79334 Exponential SVG use expansion exhausts CPU and memory in fpdf2 CVSS 3.1MEDIUM 6.5
- TI-2023-18601 Infinite Loop when reading malformed objects in pypdf CVSS 3.1MEDIUM 6.5
- TI-2023-18305 Infinite Loop when a comment isn't followed by a character in pypdf CVSS 3.1MEDIUM 6.2
- TI-2022-08670 Manipulated inline images can cause Infinite Loop in PyPDF2 CVSS 3.1MEDIUM 6.2
- TI-2026-42743 pypdf: Possible infinite loop for not terminated inline images CVSS 4.0HIGH 8.7
- TI-2026-42742 pypdf: Possible infinite loop for not terminated inline images (ASCII85 and ASCIIHex filter) CVSS 4.0HIGH 8.7
Sources
- CVE-2026-114609 · CVE Program
- CVE-2026-114609 · NVD
- FIRST EPSS
- GHSA-rw7v-4hrq-x6r9 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences