Vulnerability · Published Oct 31, 2023 · Assigned by GitHub_M
CVE-2023-46250pypdf possible Infinite Loop when PdfWriter(clone_from) is used with a PDF
Medium 5.1
In plain English
A medium-severity infinite loop in pypdf from py-pdf. There are no confirmed reports of exploitation so far. The chance it is exploited in the next 30 days is estimated at 0.3% (higher than 17% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.
Official description
pypdf is a free and open-source pure-python PDF library. An attacker who uses a vulnerability present in versions 3.7.0 through 3.16.4 can craft a PDF which leads to an infinite loop. This infinite loop blocks the current process and can utilize a single core of the CPU by 100%. It does not affect memory usage. That is, for example, the case when the pypdf-user manipulates an incoming malicious PDF e.g. by merging it with another PDF or by adding annotations. The issue was fixed in version 3.17.0. As a workaround, apply the patch manually by modifying `pypdf/generic/_data_structures.py`.
Affected packages & fixed versions
| Ecosystem | Package | Fixed in | Advisory |
|---|---|---|---|
| PyPI | pypdf | 3.17.0 | PYSEC-2026-1834 |
| PyPI | pypdf | 3.17.0 | GHSA-wjcc-cq79-p63f |
| Ubuntu:24.04:LTS | pypdf | no fix listed | UBUNTU-CVE-2023-46250 |
| Ubuntu:25.10 | pypdf | no fix listed | UBUNTU-CVE-2023-46250 |
| Ubuntu:26.04:LTS | pypdf | no fix listed | UBUNTU-CVE-2023-46250 |
| Ubuntu:26.10 | pypdf | no fix listed | UBUNTU-CVE-2023-46250 |
| Ubuntu:22.04:LTS | pypdf2 | no fix listed | UBUNTU-CVE-2023-46250 |
| Ubuntu:24.04:LTS | pypdf2 | no fix listed | UBUNTU-CVE-2023-46250 |
Affected products (as reported)
Weakness: CWE-835 · Vector: CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
References
- https://github.com/py-pdf/pypdf/security/advisories/GHSA-wjcc-cq79-p63f x_refsource_CONFIRM
- https://github.com/py-pdf/pypdf/pull/2264 x_refsource_MISC
- https://github.com/py-pdf/pypdf/commit/9b23ac3c9619492570011d551d521690de9a3e2d x_refsource_MISC