{"id":"CVE-2026-119342","kind":"vulnerability","aliases":["CVE-2026-119342"],"related":[],"title":"Stirling-PDF: crafted SVG upload reads server image files into PDF output","description":"Stirling-PDF is a locally hosted web application that facilitates various operations on PDF files. From 2.13.1 until 2.13.2, the POST /api/v1/convert/svg/pdf endpoint renders attacker-supplied SVG through Apache Batik, and a scheme-less root-relative image reference bypasses SvgSanitizer.isExternalUrl() before Batik resolves it against the file:///input.svg document base as a same-origin local file. The convert() and addSvgAsPage() paths in app/core/src/main/java/stirling/software/SPDF/utils/SvgToPdf.java can then render image-decodable server files into the returned PDF when sanitization is enabled, including without authentication on login-disabled deployments or with non-admin access when login is enabled. The issue discloses PNG, JPG, GIF, or SVG content and provides an existence oracle only for image-decodable paths; plain text, binary files, directories, XInclude text, external entities, explicit file URLs, and tested HTTP references are not disclosed through this mechanism. This issue is fixed in version 2.13.2.","summary":"Stirling-PDF versions 2.13.1 through 2.13.2 let a request to the SVG-to-PDF endpoint pull image files from the server's own disk into the returned PDF, because a root-relative image reference slips past the SVG sanitizer. An attacker can read PNG, JPG, GIF or SVG files the server can access, and can probe whether other image paths exist.","severity":"medium","cvss":5.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["java","package","self-hosted","stirling-pdf"],"not_affected_if":["endpoint-not-exposed","version-outside-2.13.1-2.13.2"],"how_to_check":"- Check the Stirling-PDF version in use; affected versions are `2.13.1` through `2.13.2`\n- Confirm whether login is disabled or whether non-admin users can reach `POST /api/v1/convert/svg/pdf`","fix":"- Stirling-PDF: upgrade to `2.13.2`","status":"open","published_at":"2026-10-30T21:16:53+00:00","first_seen_at":"2026-10-30T21:25:52+00:00","triaged_at":"2026-10-30T21:26:57+00:00","updated_at":"2026-10-30T21:26:57+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-30T21:26:57Z","model":"claude-haiku-5-5","output":{"fix":"- Stirling-PDF: upgrade to `2.13.2`","reach":"network","title":"Stirling-PDF: crafted SVG upload reads server image files into PDF output","impact":"medium","summary":"Stirling-PDF versions 2.13.1 through 2.13.2 let a request to the SVG-to-PDF endpoint pull image files from the server's own disk into the returned PDF, because a root-relative image reference slips past the SVG sanitizer. An attacker can read PNG, JPG, GIF or SVG files the server can access, and can probe whether other image paths exist.","audience":"businesses","category":"package","nicknames":[],"who_cares":["stirling-pdf","self-hosted","java"],"confidence":0.8,"fix_status":"available","needs_auth":"unknown","worst_case":"server image files readable inside returned PDFs","analyst_note":"","how_to_check":"- Check the Stirling-PDF version in use; affected versions are `2.13.1` through `2.13.2`\n- Confirm whether login is disabled or whether non-admin users can reach `POST /api/v1/convert/svg/pdf`","plain_action":"","needs_analyst":false,"not_affected_if":["version-outside-2.13.1-2.13.2","endpoint-not-exposed"],"who_is_affected":"Teams that self-host Stirling-PDF 2.13.1 or 2.13.2 with the SVG-to-PDF conversion endpoint reachable. Exposure is highest on deployments with login disabled, since no account is needed; with login enabled, a non-admin user with access can still trigger it. Instances on other versions or without the endpoint exposed can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000744,"input_tokens":4383,"output_tokens":611,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-119342':16A,19A '-2026':15A,18A '/api/v1/convert/svg/pdf':114C '/input.svg':142C '2.13.1':32B,109C '2.13.2':34B,111C,241C 'access':83B,188C 'addsvgaspag':155C 'admin':187C 'apach':122C 'app/core/src/main/java/stirling/software/spdf/utils/svgtopdf.java':158C 'applic':100C 'attack':71B,118C 'attacker-suppli':117C 'authent':177C 'base':144C 'batik':123C,137C 'binari':215C 'bypass':134C 'content':201C 'convert':153C 'craft':4A 'cve':14A,17A 'decod':164C,211C 'deploy':182C 'directori':217C 'disabl':181C 'disclos':195C,231C 'disk':53B 'document':143C 'enabl':174C,192C 'endpoint':44B,115C 'entiti':221C 'exist':91B,205C 'explicit':222C 'extern':220C 'facilit':102C 'file':10A,47B,79B,107C,151C,166C,216C,223C 'fix':238C 'gif':76B,198C 'host':24B,98C 'http':227C 'imag':9A,46B,63B,89B,132C,163C,210C 'image-decod':162C,209C 'includ':175C 'issu':194C,236C 'java':20B 'jpg':75B,197C 'less':128C 'let':35B 'local':97C,150C 'login':180C,190C 'login-dis':179C 'mechan':234C 'non':186C 'non-admin':185C 'oper':104C 'oracl':206C 'origin':149C 'output':13A 'packag':21B 'past':66B 'path':90B,156C,212C 'pdf':3A,12A,27B,30B,43B,57B,94C,106C,170C 'plain':213C 'png':74B,196C 'post':113C 'probe':86B 'provid':203C 'pull':45B 'read':7A,73B 'refer':64B,133C,228C 'relat':62B,131C 'render':116C,161C 'request':37B 'resolv':138C 'return':56B,169C 'root':61B,130C 'root-rel':60B,129C 'same-origin':147C 'sanit':69B,172C 'scheme':127C 'scheme-less':126C 'self':23B 'self-host':22B 'server':8A,50B,81B,165C 'slip':65B 'stirl':2A,26B,29B,93C 'stirling-pdf':1A,25B,28B,92C 'suppli':119C 'svg':5A,41B,68B,78B,120C,200C 'svg-to-pdf':40B 'svgsanitizer.isexternalurl':135C 'test':226C 'text':214C,219C 'upload':6A 'url':224C 'various':103C 'version':31B,240C 'web':99C 'whether':87B 'without':176C 'xinclud':218C","nicknames":[],"mitigations":[],"who_affected":"Teams that self-host Stirling-PDF 2.13.1 or 2.13.2 with the SVG-to-PDF conversion endpoint reachable. Exposure is highest on deployments with login disabled, since no account is needed; with login enabled, a non-admin user with access can still trigger it. Instances on other versions or without the endpoint exposed can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"first_public_at":"2026-10-30T21:16:53+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-119342","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119342","severity":null,"published_at":"2026-10-30T21:16:53+00:00","modified_at":"2026-10-30T21:16:53+00:00","first_seen_at":"2026-10-30T21:25:52+00:00","fetched_at":"2026-10-30T21:25:52+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"}