{"id":"CVE-2026-114609","kind":"vulnerability","aliases":["CVE-2026-114609"],"related":[],"title":"fpdf2: image loader fetches attacker-chosen URLs and local paths","description":"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.","summary":"fpdf2, a Python PDF library, automatically fetches HTTP(S) URLs and opens raw local paths passed as image sources, including in HTML img tags and SVG image references. An attacker who controls those inputs can make the server send requests to internal or external services and read local files that happen to be valid images or SVGs.","severity":"medium","cvss":5.8,"epss":0.00252,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["fpdf2","package","python","self-hosted"],"not_affected_if":["fixed-image-paths","static-images-only"],"how_to_check":"- Run `pip show fpdf2` and check whether the version is below `2.8.8`\n- Search application code for `FPDF.image(`, `write_html(` and template image fields that take user-supplied sources","fix":"- Upgrade fpdf2 to `2.8.8` or later with `pip install --upgrade fpdf2`\n- Until upgraded, do not pass user-controlled strings as image sources","status":"open","published_at":"2026-10-22T18:17:28+00:00","first_seen_at":"2026-10-23T21:57:31+00:00","triaged_at":"2026-10-25T04:09:57+00:00","updated_at":"2026-10-25T04:09:57+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-25T04:09:57Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade fpdf2 to `2.8.8` or later with `pip install --upgrade fpdf2`\n- Until upgraded, do not pass user-controlled strings as image sources","reach":"internet","title":"fpdf2: image loader fetches attacker-chosen URLs and local paths","impact":"medium","summary":"fpdf2, a Python PDF library, automatically fetches HTTP(S) URLs and opens raw local paths passed as image sources, including in HTML img tags and SVG image references. An attacker who controls those inputs can make the server send requests to internal or external services and read local files that happen to be valid images or SVGs.","category":"package","nicknames":[],"who_cares":["python","fpdf2","self-hosted"],"confidence":0.7,"needs_auth":"unknown","worst_case":"server makes internal requests and reads some local image files","analyst_note":"","how_to_check":"- Run `pip show fpdf2` and check whether the version is below `2.8.8`\n- Search application code for `FPDF.image(`, `write_html(` and template image fields that take user-supplied sources","needs_analyst":false,"not_affected_if":["static-images-only","fixed-image-paths"],"who_is_affected":"Applications that generate PDFs from user-supplied content, such as HTML with img tags, SVG, or templates with image fields, using a version before 2.8.8. Apps that only embed images from fixed, trusted paths have little exposure. unknown for any other deployment detail.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.000618,"input_tokens":3457,"output_tokens":545,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-114609':14A,17A '-2026':13A,16A '2.8.8':91C,181C 'although':143C 'attack':6A,53B,100C,132C 'attacker-chosen':5A 'attacker-control':99C 'attacker-select':131C 'attempt':142C 'automat':29B,97C 'case':169C 'caus':127C 'chosen':7A 'content':145C 'control':55B,101C 'creation':85C 'cve':12A,15A 'derefer':98C 'expos':147C 'extern':67B,136C 'fetch':4A,30B 'field':124C 'file':72B,140C 'filesystem':173C 'fix':178C 'fpdf.image':111C 'fpdf.write':112C 'fpdf2':1A,18B,24B,81C,92C 'handl':163C 'happen':74B 'host':23B 'href':119C 'html':45B,113C,114C 'http':31B,102C 'imag':2A,41B,50B,78B,95C,123C,155C 'img':46B 'includ':43B 'input':57B 'intern':65B,134C 'issu':176C 'librari':28B,86C 'loader':3A,96C 'local':10A,37B,71B,107C,139C,144C,167C 'local-path':166C 'make':59B 'open':35B,141C 'outbound':128C 'packag':19B 'pass':39B 'path':11A,38B,108C,168C,174C 'pdf':27B,84C 'prior':89C 'python':20B,26B,88C 'raw':36B,106C,172C 'read':70B 'refer':51B 'request':63B,129C 'requir':170C 'resourc':158C 'select':133C 'self':22B 'self-host':21B 'send':62B 'server':61B 'servic':68B,137C 'share':94C 'sourc':42B 'special':162C 'suppli':109C 'support':154C 'svg':49B,116C,157C 'svgs':80B 'tag':47B 'templat':122C 'url':8A,33B,104C,159C 'valid':77B,153C 'valu':115C,120C 'version':180C 'xlink':118C","nicknames":[],"mitigations":[],"who_affected":"Applications that generate PDFs from user-supplied content, such as HTML with img tags, SVG, or templates with image fields, using a version before 2.8.8. Apps that only embed images from fixed, trusted paths have little exposure. unknown for any other deployment detail.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-22T18:17:28+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-114609","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-114609","severity":null,"published_at":"2026-10-22T18:17:28+00:00","modified_at":"2026-10-23T19:42:24+00:00","first_seen_at":"2026-10-23T21:57:31+00:00","fetched_at":"2026-10-23T22:29:02+00:00","note":null},{"source":"epss","external_id":"CVE-2026-114609","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-114609","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-24T07:15:51+00:00","fetched_at":"2026-10-24T07:15:51+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}