CVE-2026-114610 json
fpdf2: Exponential SVG '<use>' expansion causes CPU and memory exhaustion in 'FPDF.image()'
published 18d ago modified 11d ago also GHSA-wqw6-wpr3-45rh , EUVD-2026-108262
- cvss
- 6.5
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.5%
- EPSS 0.5% chance of exploitation in 30 days, percentile 40%
- public exploits
- 0
- none known
Summary
fpdf2 is a PDF creation library for Python. From 2.5.0 until 2.8.8, fpdf2's SVGObject.build_xref() passes nested SVG <use> references to GraphicsContext.add_item(), whose default clone=True deep-copy behavior copies the complete referenced graphics tree during FPDF.image() processing. Repeating references at each nesting level makes the in-memory object count and processing work grow exponentially, allowing a small user-controlled SVG to consume excessive CPU and memory, raise MemoryError, fail PDF generation jobs, and reduce or exhaust worker capacity. ResourceAccessPolicy does not prevent the issue because the references are inline and require no external resource, XML entity, local file, or permissive network setting. This issue is fixed in version 2.8.8.
Patch / fix
- pypi fpdf2 2.8.8
- fpdf2 Debian 14 2.8.8-1
debian advisories DEBIAN-CVE-2026-114610
- github.com/py-pdf/fpdf2@d7bd106 commit
- github.com/py-pdf/fpdf2#1889 pull request
- github.com/py-pdf/fpdf2/releases/tag/2.8.8 release
Is CVE-2026-114610 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerCISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- no
- Technical impact
- partial
- Assessed
- 12d ago
Exploit prediction
0.46% chance of exploitation in the next 30 days, higher than 40% of all scored CVEs (FIRST EPSS, 2026-11-09).
Exploits and checks
- github.com https://github.com/py-pdf/fpdf2/security/advisories/GHSA-wqw6-wpr3-45rh referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
| GitHub | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | fpdf2 | >=2.5.0, <2.8.8 |
2.8.8 |
Affected products
- py-pdf fpdf2
Classification
References
-
github.com
/py-pdf/fpdf2/pull/1889
web
-
github.com
/py-pdf/fpdf2/commit/d7bd1061205d50da6a541dadfdb9d66beb763f2f
web
-
github.com
/py-pdf/fpdf2/security/advisories/GHSA-wqw6-wpr3-45rh
exploit, web
-
github.com
/py-pdf/fpdf2/releases/tag/2.8.8
web
-
nvd.nist.gov
/vuln/detail/CVE-2026-114610
advisory
-
github.com
/py-pdf/fpdf2
package
Sources
- CVE List CVE-2026-114610
- GitHub Advisory GHSA-wqw6-wpr3-45rh
- NVD CVE-2026-114610
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.