{"schemaVersion":3,"id":"CVE-2026-109603","aliases":[],"status":"published","duplicateOf":null,"title":null,"description":"Frappe Framework 15.x before 15.107.3 and 16.x before 16.17.0 relies on a vulnerable pdfkit library (CVE-2025-26240) for PDF generation, enabling server-side request forgery and local file inclusion. Authenticated attackers can supply crafted content to PDF rendering to make the server fetch internal resources or embed local server files in generated PDFs.","dates":{"published":"2026-10-12T22:21:55.804Z","modified":"2026-10-13T13:35:40.012Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":4.8,"severity":"medium","version":"4.0","versionLabel":"v4.0","source":"NVD","vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:L/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","computed":false,"selection":"backend-summary"},"metrics":[{"version":"4.0","versionLabel":"v4.0","source":"NVD","score":4.8,"severity":"medium","vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:L/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":3.3,"severity":"low","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"CVE.org","score":4.8,"severity":"medium","vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:L","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":3.3,"severity":"low","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.0024,"percentile":0.14268,"severity":"low","asOf":"2026-10-21T00:00:00.000Z","change":{"pp":null,"baselineDate":null,"baselineScore":null},"history":[{"date":"2026-10-13T00:00:00.000Z","score":0.0024,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.0024,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.0024,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.0024,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.0024,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.0024,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.0024,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.0024,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.0024,"percentile":0.14268}],"last30":[{"date":"2026-10-13T00:00:00.000Z","score":0.0024,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.0024,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.0024,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.0024,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.0024,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.0024,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.0024,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.0024,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.0024,"percentile":0.14268}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-918","name":"Server-Side Request Forgery (SSRF)","description":"The web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination.","type":"weakness","status":"Incomplete","abstraction":"Base","likelihoodOfExploit":null,"url":"https://cwe.mitre.org/data/definitions/918.html"}],"affected":[{"vendor":"frappe","product":"frappe","name":"frappe","label":"frappe","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 15.107.3","noFixRecorded":false,"fixedIn":null},{"text":"≥ 16.0.0-beta.1, < 16.17.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 15.107.3 | ≥ 16.0.0-beta.1, < 16.17.0","eol":null,"hubHref":"/vendor/frappe/frappe"}],"affectedCount":1,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/frappe/frappe/security/advisories/GHSA-pj59-9hv9-rmrv","label":"github.com/frappe/frappe/security/advisories/GHSA-pj59-9hv9-rmrv","hostname":"github.com","tags":["Vendor Advisory"]},{"url":"https://www.vulncheck.com/advisories/frappe-framework-before-16.17.0-authenticated-ssrf-and-lfi-via-pdfkit","label":"www.vulncheck.com/advisories/frappe-framework-before-16.17.0-authenticated-ssrf-and-lfi-via-pdfkit","hostname":"www.vulncheck.com","tags":["Third Party Advisory"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-10-12T22:21:55.804Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-10-13T13:35:40.012Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":19,"level":"low","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-22T05:46:51.798Z","stale":false,"partial":false}}