fpdf2 implicitly dereferences image resource references supplied to rendering APIs. If an application passes untrusted HTML, SVG, template data, or image paths into those APIs, fpdf2 may issue outbound HTTP(S) requests or attempt to open local filesystem paths.
This behavior is relevant in applications that render untrusted or user-provided input without sanitizing or restricting embedded resource references.
In affected versions, fpdf2 uses a shared internal image-loading mechanism for multiple features. This loader:
http:// and https:// URLs over the networkDuring document processing, resource references embedded in input content are automatically dereferenced using this mechanism.
This behavior is reachable through:
FPDF.image()FPDF.write_html() via HTML <img src="...">FPDF.image() when rendering SVG files containing <image href="..."> or xlink:href="...">FPDF.image()If an application renders attacker-controlled input through these APIs, that input can cause:
This may enable Server-Side Request Forgery (SSRF) in applications that render untrusted content.
Local file access impact is limited: the library attempts to open the referenced path, but successful embedding depends on the target being a valid and supported image or SVG resource.
file:// URLs are not specially handled; raw filesystem paths such as /path/to/file or ../../file.png are the relevant local-path cases.
This issue affects applications that render untrusted or partially trusted content using fpdf2.
Applications may be impacted if they:
write_html()<image> referencesimage()Potential impacts include:
The severity depends on how fpdf2 is integrated and whether untrusted input is allowed to control resource references.
Example scenarios
HTML:
pdf.write_html('<img src="http://127.0.0.1:8000/internal.png">')
SVG:
<image href="http://169.254.169.254/latest/meta-data/" />
Direct image path:
pdf.image("../../.env")
Workarounds
Applications can mitigate this by:
src / href / image-path valuesfpdf2Credits
{
"cwe_ids": [
"CWE-918"
],
"github_reviewed": true,
"github_reviewed_at": "2026-10-27T14:43:16Z",
"nvd_published_at": "2026-10-22T18:17:28Z",
"severity": "MODERATE"
}