{"id":"CVE-2026-113789","kind":"vulnerability","aliases":["CVE-2026-113789","GHSA-6vvc-x485-93v7"],"related":[],"title":"pypdf: Possible long runtimes/large memory usage when retrieving form fields","description":"### Impact\n\nAn attacker who uses this vulnerability can craft a PDF which leads to large memory usage and/or long runtimes. This requires retrieving the form fields of a document.\n\n### Patches\n\nThis has been fixed in [pypdf==6.21.0](https://github.com/py-pdf/pypdf/releases/tag/6.21.0).\n\n### Workarounds\n\nIf you cannot upgrade yet, consider applying the changes from PR [#4219](https://github.com/py-pdf/pypdf/pull/4219).","summary":"pypdf can be made to use a lot of memory or run for a very long time when code retrieves the form fields of a crafted PDF. An attacker who can get a malicious PDF processed by your app can cause slowdowns or memory exhaustion (denial of service).","severity":"medium","cvss":6.0,"epss":0.003169999923557043,"exploited":false,"exploited_at":null,"products":[{"name":"pypdf","fixed":["6.21.0"],"affected":"< 6.21.0","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["cwe-400","cwe-407","document-processing","file-upload","package","pypdf","python"],"not_affected_if":["no-form-field-retrieval","no-untrusted-pdfs","pypdf-below-affected-range"],"how_to_check":"Run `pip show pypdf` or `pip freeze | grep -i pypdf` and check whether the version is below 6.21.0.\nSearch your code for calls that retrieve form fields (for example get_fields or get_form_text_fields) on untrusted PDFs.","fix":"Upgrade pypdf to 6.21.0 or later (pip install -U \"pypdf>=6.21.0\").\nIf you cannot upgrade yet, apply the changes from PR #4219 in the pypdf repository.","status":"open","published_at":"2026-10-21T16:17:26+00:00","first_seen_at":"2026-10-23T19:11:31+00:00","triaged_at":"2026-10-23T20:06:36+00:00","updated_at":"2026-10-23T21:57:29+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-23T20:06:36Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade pypdf to 6.21.0 or later (pip install -U \"pypdf>=6.21.0\").\nIf you cannot upgrade yet, apply the changes from PR #4219 in the pypdf repository.","summary":"pypdf can be made to use a lot of memory or run for a very long time when code retrieves the form fields of a crafted PDF. An attacker who can get a malicious PDF processed by your app can cause slowdowns or memory exhaustion (denial of service).","category":"package","who_cares":["python","pypdf","document-processing","file-upload"],"confidence":0.8,"analyst_note":"","how_to_check":"Run `pip show pypdf` or `pip freeze | grep -i pypdf` and check whether the version is below 6.21.0.\nSearch your code for calls that retrieve form fields (for example get_fields or get_form_text_fields) on untrusted PDFs.","needs_analyst":false,"not_affected_if":["pypdf-below-affected-range","no-untrusted-pdfs","no-form-field-retrieval"],"severity_if_unknown":"medium"},"cost_usd":0.000404,"input_tokens":2129,"output_tokens":383,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-113789':13A,21A '-2026':12A,20A '-400':24B '-407':26B '/py-pdf/pypdf/pull/4219).':139C '/py-pdf/pypdf/releases/tag/6.21.0).':123C '4219':136C '6.21.0':120C '6vvc':16A '93v7':18A 'and/or':101C 'app':74B 'appli':131C 'attack':64B,86C 'cannot':127C 'caus':76B 'chang':133C 'code':54B 'consid':130C 'craft':61B,92C 'cve':11A,19A 'cwe':23B,25B 'denial':81B 'document':28B,112C 'document-process':27B 'exhaust':80B 'field':10A,58B,109C 'file':31B 'file-upload':30B 'fix':117C 'form':9A,57B,108C 'get':67B 'ghsa':15A 'ghsa-6vvc-x485-93v7':14A 'github.com':122C,138C 'github.com/py-pdf/pypdf/pull/4219).':137C 'github.com/py-pdf/pypdf/releases/tag/6.21.0).':121C 'impact':84C 'larg':98C 'lead':96C 'long':3A,51B,102C 'lot':43B 'made':39B 'malici':69B 'memori':5A,45B,79B,99C 'packag':33B 'patch':113C 'pdf':62B,70B,94C 'possibl':2A 'pr':135C 'process':29B,71B 'pypdf':1A,22A,34B,36B,119C 'python':35B 'requir':105C 'retriev':8A,55B,106C 'run':47B 'runtim':103C 'runtimes/large':4A 'servic':83B 'slowdown':77B 'time':52B 'upgrad':128C 'upload':32B 'usag':6A,100C 'use':41B,88C 'vulner':90C 'workaround':124C 'x485':17A 'yet':129C","nicknames":[],"mitigations":[],"who_affected":null,"tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-21T16:17:26+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-6vvc-x485-93v7","url":"https://github.com/advisories/GHSA-6vvc-x485-93v7","severity":"medium","published_at":"2026-10-22T16:49:56+00:00","modified_at":"2026-10-22T16:50:09+00:00","first_seen_at":"2026-10-23T19:11:31+00:00","fetched_at":"2026-10-23T19:11:31+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-113789","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-113789","severity":null,"published_at":"2026-10-21T16:17:26+00:00","modified_at":"2026-10-22T16:46:48+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"}