{"id":"CVE-2026-113792","kind":"vulnerability","aliases":["CVE-2026-113792","GHSA-qfv9-64jg-mh7p"],"related":[],"title":"pypdf: Possible infinite loop in PdfWriter.find_outline_item","description":"### Impact\n\nAn attacker who uses this vulnerability can craft a PDF which leads to an infinite loop. This requires calling `find_outline_item` on a `PdfWriter`.\n\n### Patches\n\nThis has been fixed in [pypdf==6.20.1](https://github.com/py-pdf/pypdf/releases/tag/6.20.1).\n\n### Workarounds\n\nIf you cannot upgrade yet, consider applying the changes from PR [#4188](https://github.com/py-pdf/pypdf/pull/4188).","summary":"pypdf's PdfWriter.find_outline_item can enter an infinite loop when given a crafted PDF, causing the process to hang. An attacker who can supply a PDF to code that calls this method can stall that process (denial of service).","severity":"medium","cvss":6.0,"epss":0.004660000093281269,"exploited":false,"exploited_at":null,"products":[{"name":"pypdf","fixed":["6.20.1"],"affected":"< 6.20.1","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["cwe-835","package","pdf-processing","pypdf","python"],"not_affected_if":["does-not-call-find-outline-item","no-untrusted-pdf-input","pypdf-at-6.20.1-or-later"],"how_to_check":"Run pip show pypdf or check requirements/lockfiles for pypdf versions below 6.20.1.\nSearch code for calls to find_outline_item on a PdfWriter object.","fix":"Upgrade pypdf to 6.20.1 or later.\nIf you cannot upgrade, apply the changes from PR #4188 in the pypdf repository.","status":"open","published_at":"2026-10-21T16:17:27+00:00","first_seen_at":"2026-10-23T19:11:32+00:00","triaged_at":"2026-10-23T20:10:22+00:00","updated_at":"2026-10-23T21:57:29+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-23T20:10:22Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade pypdf to 6.20.1 or later.\nIf you cannot upgrade, apply the changes from PR #4188 in the pypdf repository.","summary":"pypdf's PdfWriter.find_outline_item can enter an infinite loop when given a crafted PDF, causing the process to hang. An attacker who can supply a PDF to code that calls this method can stall that process (denial of service).","category":"package","who_cares":["python","pypdf","pdf-processing"],"confidence":0.8,"analyst_note":"","how_to_check":"Run pip show pypdf or check requirements/lockfiles for pypdf versions below 6.20.1.\nSearch code for calls to find_outline_item on a PdfWriter object.\nunknown","needs_analyst":false,"not_affected_if":["pypdf-at-6.20.1-or-later","does-not-call-find-outline-item","no-untrusted-pdf-input"],"severity_if_unknown":"medium"},"cost_usd":0.000381,"input_tokens":2129,"output_tokens":337,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-113792':11A,19A '-2026':10A,18A '-835':22B '/py-pdf/pypdf/pull/4188).':121C '/py-pdf/pypdf/releases/tag/6.20.1).':105C '4188':118C '6.20.1':102C '64jg':15A 'appli':113C 'attack':50B,71C 'call':59B,88C 'cannot':109C 'caus':44B 'chang':115C 'code':57B 'consid':112C 'craft':42B,77C 'cve':9A,17A 'cwe':21B 'denial':66B 'enter':35B 'find':89C 'fix':99C 'ghsa':13A 'ghsa-qfv9-64jg-mh7p':12A 'github.com':104C,120C 'github.com/py-pdf/pypdf/pull/4188).':119C 'github.com/py-pdf/pypdf/releases/tag/6.20.1).':103C 'given':40B 'hang':48B 'impact':69C 'infinit':3A,37B,84C 'item':8A,33B,91C 'lead':81C 'loop':4A,38B,85C 'method':61B 'mh7p':16A 'outlin':7A,32B,90C 'packag':23B 'patch':95C 'pdf':25B,43B,55B,79C 'pdf-process':24B 'pdfwriter':94C 'pdfwriter.find':6A,31B 'possibl':2A 'pr':117C 'process':26B,46B,65B 'pypdf':1A,20A,27B,29B,101C 'python':28B 'qfv9':14A 'requir':87C 'servic':68B 'stall':63B 'suppli':53B 'upgrad':110C 'use':73C 'vulner':75C 'workaround':106C 'yet':111C","nicknames":[],"mitigations":[],"who_affected":null,"tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-21T16:17:27+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/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-qfv9-64jg-mh7p","url":"https://github.com/advisories/GHSA-qfv9-64jg-mh7p","severity":"medium","published_at":"2026-10-21T16:55:35+00:00","modified_at":"2026-10-21T16:55:37+00:00","first_seen_at":"2026-10-23T19:11:32+00:00","fetched_at":"2026-10-23T19:11:32+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-113792","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-113792","severity":null,"published_at":"2026-10-21T16:17:27+00:00","modified_at":"2026-10-23T16:16:51+00:00","first_seen_at":"2026-10-23T21:57:29+00:00","fetched_at":"2026-10-23T22:29:01+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"}