{"id":"CVE-2026-115585","kind":"vulnerability","aliases":["CVE-2026-115585","GHSA-jr96-gvgh-j3r4"],"related":[],"title":"pypdf: Possible long runtimes for repeated malformed cross-reference entries (Follow-up)","description":"### Impact\n\nAn attacker who uses this vulnerability can craft a PDF which leads to long runtimes. This requires cross-reference streams with repeated malformed cross-reference streams.\n\n### Patches\n\nThis has been fixed in [pypdf==6.21.2](https://github.com/py-pdf/pypdf/releases/tag/6.21.2).\n\n### Workarounds\n\nIf you cannot upgrade yet, consider applying the changes from PR [#4240](https://github.com/py-pdf/pypdf/pull/4240).\n\n### Notes\n\nThis is a follow-up to https://github.com/py-pdf/pypdf/security/advisories/GHSA-55h5-xmcq-c37v, which had the side-effect of still loading the whole stream again despite the cache being present.","summary":"pypdf, a Python PDF library, can take a very long time to process a crafted PDF with repeated malformed cross-reference streams. An attacker who can get such a PDF processed can tie up the process and cause a denial of service.","severity":"high","cvss":7.1,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"pypdf","fixed":["6.21.2"],"affected":"< 6.21.2","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["cwe-400","cwe-407","package","pdf-processing","pypdf","python"],"not_affected_if":["no-untrusted-pdfs"],"how_to_check":"pip show pypdf","fix":"Upgrade pypdf to 6.21.2 or later.\nIf upgrading is not possible yet, apply the changes from PR #4240 (https://github.com/py-pdf/pypdf/pull/4240).","status":"open","published_at":"2026-10-23T20:17:21+00:00","first_seen_at":"2026-10-23T20:59:05+00:00","triaged_at":"2026-10-23T21:00:30+00:00","updated_at":"2026-10-23T21:57:34+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-23T21:00:30Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade pypdf to 6.21.2 or later.\nIf upgrading is not possible yet, apply the changes from PR #4240 (https://github.com/py-pdf/pypdf/pull/4240).","reach":"unknown","impact":"low","summary":"pypdf, a Python PDF library, can take a very long time to process a crafted PDF with repeated malformed cross-reference streams. An attacker who can get such a PDF processed can tie up the process and cause a denial of service.","category":"package","who_cares":["python","pypdf","pdf-processing"],"confidence":0.7,"needs_auth":"unknown","worst_case":"Attacker stalls PDF processing for long periods, causing denial of service","analyst_note":"","how_to_check":"pip show pypdf\nunknown","needs_analyst":false,"not_affected_if":["no-untrusted-pdfs"],"user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"high"},"cost_usd":0.000469,"input_tokens":2986,"output_tokens":340,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-115585':16A,24A '-2026':15A,23A '-400':27B '-407':29B '/py-pdf/pypdf/pull/4240).':134C '/py-pdf/pypdf/releases/tag/6.21.2).':118C '/py-pdf/pypdf/security/advisories/ghsa-55h5-xmcq-c37v,':145C '4240':131C '6.21.2':115C 'appli':126C 'attack':60B,81C 'cach':161C 'cannot':122C 'caus':74B 'chang':128C 'consid':125C 'craft':50B,87C 'cross':9A,56B,98C,105C 'cross-refer':8A,55B,97C,104C 'cve':14A,22A 'cwe':26B,28B 'denial':76B 'despit':159C 'effect':151C 'entri':11A 'fix':112C 'follow':13A,140C 'follow-up':12A,139C 'get':63B 'ghsa':18A 'ghsa-jr96-gvgh-j3r4':17A 'github.com':117C,133C,144C 'github.com/py-pdf/pypdf/pull/4240).':132C 'github.com/py-pdf/pypdf/releases/tag/6.21.2).':116C 'github.com/py-pdf/pypdf/security/advisories/ghsa-55h5-xmcq-c37v,':143C 'gvgh':20A 'impact':79C 'j3r4':21A 'jr96':19A 'lead':91C 'librari':40B 'load':154C 'long':3A,45B,93C 'malform':7A,54B,103C 'note':135C 'packag':30B 'patch':108C 'pdf':32B,39B,51B,66B,89C 'pdf-process':31B 'possibl':2A 'pr':130C 'present':163C 'process':33B,48B,67B,72B 'pypdf':1A,25A,34B,36B,114C 'python':35B,38B 'refer':10A,57B,99C,106C 'repeat':6A,53B,102C 'requir':96C 'runtim':4A,94C 'servic':78B 'side':150C 'side-effect':149C 'still':153C 'stream':58B,100C,107C,157C 'take':42B 'tie':69B 'time':46B 'upgrad':123C 'use':83C 'vulner':85C 'whole':156C 'workaround':119C 'yet':124C","nicknames":[],"mitigations":[],"who_affected":null,"tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-23T20:17:21+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/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","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-jr96-gvgh-j3r4","url":"https://github.com/advisories/GHSA-jr96-gvgh-j3r4","severity":"high","published_at":"2026-10-23T20:54:27+00:00","modified_at":"2026-10-23T20:54:28+00:00","first_seen_at":"2026-10-23T20:59:05+00:00","fetched_at":"2026-10-23T20:59:05+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-115585","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-115585","severity":null,"published_at":"2026-10-23T20:17:21+00:00","modified_at":"2026-10-23T20:17:21+00:00","first_seen_at":"2026-10-23T21:57:34+00:00","fetched_at":"2026-10-23T22:29:04+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"}