Medium

PyPDF2 vulnerable to possible Infinite Loop when reading malformed objects

  • Disclosed: 30.06.2023
  • Updated: 11.10.2026 13:18

Impact

An attacker who uses this vulnerability 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 if the user extracted metadata from such a malformed PDF.

Patches

The issue was fixed with https://github.com/py-pdf/pypdf/pull/1331

Workarounds

If you cannot update your version of PyPDF2 (preferably to pypdf>3.1.0 as PyPDF2 is deprecated), you should modify PyPDF2/generic/_data_structures.py::read_object.

Replace:

python
    else:
        # number object OR indirect reference
        peek = stream.read(20)
        stream.seek(-len(peek), 1)  # reset to start
        if IndirectPattern.match(peek) is not None:
            return IndirectObject.read_from_stream(stream, pdf)
        else:
            return NumberObject.read_from_stream(stream)

by

python
    elif tok in b"0123456789+-.":
        # number object OR indirect reference
        peek = stream.read(20)
        stream.seek(-len(peek), 1)  # reset to start
        if IndirectPattern.match(peek) is not None:
            return IndirectObject.read_from_stream(stream, pdf)
        else:
            return NumberObject.read_from_stream(stream)
    else:
        raise PdfReadError(
            f"Invalid Elementary Object starting with {tok} @{stream.tell()}"
        )

References

Affected software

Click a technology to see all vulnerabilities affecting it.

PlatformPackageVulnerable versionsFixed in
Python (PyPI) pypdf2 >= 2.10.5, < 2.10.6 2.10.6

References

CVSS score 6.2/10
CVSS vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness (CWE)
CWE-835
Platform
Python (PyPI)
Package
pypdf2
Disclosed
30.06.2023
Updated
11.10.2026 13:18

Sources and licenses

OSV / GitHub Advisory Database - PYSEC-2026-1836 - PyPA Advisory Database; CC BY 4.0

OSV / GitHub Advisory Database - GHSA-hm9v-vj3r-r55m - CC BY 4.0

Vulnerability history: pypdf2

All published vulnerabilities of this package (Python (PyPI)), newest first. Shows whether this is a one-off slip or a package that needs watching.

Total entries
4
First → latest
04.2022 06.2023
Without a fix
1
Exploited in attacks
0

Severity breakdown

  • Medium 4

Disclosures per year

  1. 2022: 1
  2. 2023: 3
  3. 2024: 0
  4. 2025: 0
  5. 2026: 0
  1. PyPDF2 vulnerable to possible Infinite Loop when reading malformed objects this entry
    Medium · 6.2 CVE-2023-36807 >= 2.10.5, < 2.10.6 2.10.6
  2. Medium · 6.2 CVE-2023-36810 < 1.27.9 1.27.9
  3. Medium · 6.2 CVE-2022-24859 < 1.27.5 1.27.5

Know which vulnerabilities affect your application

With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.

Connect your application
DockRay newsletter

Application security in your inbox

Important vulnerabilities, actionable guidance and practical advice for your applications. Choose your technologies and follow what matters to your project.

  • A daily digest of new vulnerabilities, critical ones included.
  • Notifications about important updates.
  • Practical advice on application security and monitoring.

Leave empty to receive updates for every technology.

Free to subscribe. Unsubscribe with one click in any email.