CVE-2026-113786
pypdf: Unvalidated JPEG image data loading
pypdf is a free and open-source pure-python PDF library. Prior to 6.21.1, an attacker can craft a PDF containing image data labeled with the /DCTDecode filter that causes Pillow to select and invoke an unintended image parser when the image is loaded. Environments without the optional Pillow dependency are not affected. This issue is fixed in version 6.21.1.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Passive
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- Low
Exploit likelihood
What each source reports
CVE List Score used
2.3
pypdf: Unvalidated JPEG image data loading
pypdf is a free and open-source pure-python PDF library. Prior to 6.21.1, an attacker can craft a PDF containing image data labeled with the /DCTDecode filter that causes Pillow to select and invoke an unintended image parser when the image is loaded. Environments without the optional Pillow dependency are not affected. This issue is fixed in version 6.21.1.
- Record
CVE-2026-113786- CVSS 4.0
- 2.3 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N - Weakness
- CWE-20, CWE-183
- Updated
- 2026-11-02
EUVDEUVD-2026-107286
2.3
pypdf is a free and open-source pure-python PDF library. Prior to 6.21.1, an attacker can craft a PDF containing image data labeled with the /DCTDecode filter that causes Pillow to select and invoke an unintended image parser when the image is loaded. Environments without the optional Pillow dependency are not affected. This issue is fixed in version 6.21.1.
- Record
EUVD-2026-107286- CVSS 4.0
- 2.3 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-5hx5-vpf9-5wcv
2.3
pypdf: Unvalidated JPEG image data loading
Impact
An attacker who uses this vulnerability can craft a PDF which leads to arbitrary image parsers being called. This requires loading an image which claims to use the /DCTDecode filter (JPEG data).
Users which do not have the optional Pillow dependency installed in their environment are not affected.
Patches
This has been fixed in pypdf==6.21.1.
Workarounds
If you cannot upgrade yet, consider applying the changes from PR #4222.
- Record
GHSA-5hx5-vpf9-5wcv- CVSS 4.0
- 2.3 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N - Weakness
- CWE-20, CWE-183
- Updated
- 2026-11-02
NVD
2.3
pypdf is a free and open-source pure-python PDF library. Prior to 6.21.1, an attacker can craft a PDF containing image data labeled with the /DCTDecode filter that causes Pillow to select and invoke an unintended image parser when the image is loaded. Environments without the optional Pillow dependency are not affected. This issue is fixed in version 6.21.1.
- Record
CVE-2026-113786- CVSS 4.0
- 2.3 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:L/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 - Weakness
- CWE-20, CWE-183
- Updated
- 2026-11-02
OSV
2.3
pypdf: Unvalidated JPEG image data loading
pypdf is a free and open-source pure-python PDF library. Prior to 6.21.1, an attacker can craft a PDF containing image data labeled with the /DCTDecode filter that causes Pillow to select and invoke an unintended image parser when the image is loaded. Environments without the optional Pillow dependency are not affected. This issue is fixed in version 6.21.1.
- Record
CVE-2026-113786- CVSS 4.0
- 2.3 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N - Weakness
- CWE-183, CWE-20
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-113786
2.3
pypdf is a free and open-source pure-python PDF library. Prior to 6.21.1, an attacker can craft a PDF containing image data labeled with the /DCTDecode filter that causes Pillow to select and invoke an unintended image parser when the image is loaded. Environments without the optional Pillow dependency are not affected. This issue is fixed in version 6.21.1.
- Record
DEBIAN-CVE-2026-113786- CVSS 4.0
- 2.3 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:L/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 - Updated
- 2026-11-02
Show 5 moreShow less
OSVGHSA-5hx5-vpf9-5wcv
2.3
pypdf: Unvalidated JPEG image data loading
Impact
An attacker who uses this vulnerability can craft a PDF which leads to arbitrary image parsers being called. This requires loading an image which claims to use the /DCTDecode filter (JPEG data).
Users which do not have the optional Pillow dependency installed in their environment are not affected.
Patches
This has been fixed in pypdf==6.21.1.
Workarounds
If you cannot upgrade yet, consider applying the changes from PR #4222.
- Record
GHSA-5hx5-vpf9-5wcv- CVSS 4.0
- 2.3 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N - Weakness
- CWE-183, CWE-20
- Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-113786
2.3
pypdf is a free and open-source pure-python PDF library. Prior to 6.21.1, an attacker can craft a PDF containing image data labeled with the /DCTDecode filter that causes Pillow to select and invoke an unintended image parser when the image is loaded. Environments without the optional Pillow dependency are not affected. This issue is fixed in version 6.21.1.
- Record
UBUNTU-CVE-2026-113786- CVSS 4.0
- 2.3 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N - Updated
- 2026-11-02
OSVCLSA-2026-1793019428 No score
TuxCare security update for pypdf (5 CVEs)
TuxCare rebuilt pypdf to address 5 CVEs. Fixed in 5.9.0.post21+tuxcare.
- Record
CLSA-2026-1793019428- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:12306-1 No score
python313-pypdf-6.21.2-1.1 on GA media
These are all security issues fixed in the python313-pypdf-6.21.2-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:12306-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:22188-1 No score
Security update for python-pypdf
This update for python-pypdf fixes the following issues:
Changes in python-pypdf:
- CVE-2026-113786: PDF containing image data labeled with the
/DCTDecodefilter causes Pillow to select and invoke an unintended image parser when the image is loaded (bsc#1286632) - CVE-2026-113789: crafted PDF causes large memory usage or long runtimes when an application retrieves the document's form fields (bsc#1286633)
- CVE-2026-113790: PDF containing arrays or dictionaries with many elements causes parsing to consume large amounts of memory (bsc#1286634)
- CVE-2026-113791: PDF containing a content stream with many small operations causes parsing to consume large amounts of memory (bsc#1286635)
- CVE-2026-113792: calling
PdfWriter.find_outline_itemon a crafted PDF with a cyclic outline hierarchy can enter an infinite loop and block the current process (bsc#1286636) - CVE-2026-113793: removing an object from a crafted cyclic PDF tree can enter an infinite loop and block the current process (bsc#1286637)
- CVE-2026-113794: incomplete PDF that ends inside a standard cross-reference table causes pypdf to mishandle the unexpected end of file and enter an infinite loop (bsc#1286638)
- CVE-2026-113795: accessing a crafted PDF stream with a large number of filters or multiple filters that pass around large amounts of data can cause large memory consumption (bsc#1286639)
- Record
openSUSE-SU-2026:22188-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
pypdfPyPI |
before 6.21.1 | 6.21.1 |
pypdfTuxCare:PyPI From an advisory covering 5 CVEs |
5.9.0 up to 5.9.0.post21+tuxcare, plus listed versions 5.9.0.post1+tuxcare5.9.0.post10+tuxcare5.9.0.post11+tuxcare5.9.0.post12+tuxcare5.9.0.post13+tuxcare Show 15 moreShow less5.9.0.post14+tuxcare5.9.0.post15+tuxcare5.9.0.post16+tuxcare5.9.0.post17+tuxcare5.9.0.post18+tuxcare5.9.0.post19+tuxcare5.9.0.post2+tuxcare5.9.0.post20+tuxcare5.9.0.post3+tuxcare5.9.0.post4+tuxcare5.9.0.post5+tuxcare5.9.0.post6+tuxcare5.9.0.post7+tuxcare5.9.0.post8+tuxcare5.9.0.post9+tuxcare |
5.9.0.post21+tuxcare |
pypdfDebian:12 |
All versions, plus listed versions 3.17.4-13.4.1-13.4.1-1+deb12u14.0.0-14.0.0-1~exp1 Show 12 moreShow less4.0.1-14.0.2-14.1.0-14.2.0-14.3.1-15.4.0-16.19.0-16.21.0-16.21.1-16.9.0-16.9.2-16.9.2-2 |
None known |
pypdfDebian:13 |
All versions, plus listed versions 5.4.0-16.19.0-16.21.0-16.21.1-16.9.0-16.9.2-16.9.2-2 |
None known |
pypdfDebian:14 |
before 6.21.1-1, plus listed versions 5.4.0-16.19.0-16.21.0-16.9.0-16.9.2-16.9.2-2 |
6.21.1-1 |
pypdf2Debian:12 |
All versions, plus listed versions 2.12.1-32.12.1-3+deb12u12.12.1-4 |
None known |
pypdfPyPI |
before 6.21.1, plus listed versions 1.01.11.101.111.12 Show 45 moreShow less1.131.21.31.41.51.61.71.81.93.1.03.10.03.11.03.11.13.12.03.12.13.12.23.13.03.14.03.15.03.15.13.15.23.15.33.15.43.15.53.16.03.16.13.16.23.16.33.16.43.17.03.17.13.17.23.17.33.17.43.2.03.2.13.3.03.4.03.4.13.5.03.5.13.5.23.6.03.7.03.7.1 |
6.21.1 |
pypdf2Ubuntu:Pro:16.04:LTS |
All versions, plus listed versions 1.23+git20141008-11.25.1-11.25.1-1ubuntu0.1~esm11.25.1-1ubuntu0.1~esm2 |
None known |
pypdf2Ubuntu:Pro:18.04:LTS |
All versions, plus listed versions 1.26.0-21.26.0-2ubuntu0.1~esm11.26.0-2ubuntu0.1~esm2 |
None known |
pypdf2Ubuntu:20.04:LTS |
All versions, plus listed versions 1.26.0-21.26.0-3ubuntu11.26.0-3ubuntu1.20.04.11.26.0-3ubuntu1.20.04.2 |
None known |
Show 7 moreShow less
| Package | Affected | Fixed |
|---|---|---|
pypdf2Ubuntu:22.04:LTS |
All versions, plus listed versions 1.26.0-41.26.0-4ubuntu0.22.04.11.26.0-4ubuntu0.22.04.2 |
None known |
pypdfUbuntu:24.04:LTS |
All versions, plus listed versions 3.4.1-13.17.4-14.0.0-14.0.1-14.0.2-1 |
None known |
pypdf2Ubuntu:24.04:LTS |
All versions, plus listed versions 2.12.1-32.12.1-4 |
None known |
pypdfUbuntu:26.10 |
All versions, plus listed versions 6.9.2-16.9.2-2 |
None known |
pypdfUbuntu:26.04:LTS |
All versions, plus listed versions 5.4.0-16.9.2-1 |
None known |
python-pypdfopenSUSE:Tumbleweed From an advisory covering 4 CVEs |
before 6.21.2-1.1 | 6.21.2-1.1 |
python-pypdfopenSUSE:Leap 16.0 From an advisory covering 8 CVEs |
before 6.19.0-bp160.2.1 | 6.19.0-bp160.2.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-113786 is a low vulnerability (CVSS 2.3) in Py-pdf Pypdf, published October 21, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.40%, the 34th percentile. Fixed in pypdf 6.21.1.
References
github.com/py-pdf/pypdf/security/advisories/GHSA-5hx5-vpf9-5wcv
github.com/py-pdf/pypdf/pull/4222
github.com/py-pdf/pypdf/commit/512d8eb94eb04be1d1c90504e6da2dcef8679e07
github.com/py-pdf/pypdf/releases/tag/6.21.1
nvd.nist.gov/vuln/detail/CVE-2026-113786
github.com/advisories/GHSA-5hx5-vpf9-5wcv
Show 21 moreShow less
github.com/CVEProject/cvelistV5/tree/main/cves/2026/113xxx/CVE-2026-113786.json
security-tracker.debian.org/tracker/CVE-2026-113786
github.com/py-pdf/pypdf
ubuntu.com/security/CVE-2026-113786
cve.org/CVERecord?id=CVE-2026-113786
suse.com/security/cve/CVE-2026-113786
suse.com/security/cve/CVE-2026-113789
suse.com/security/cve/CVE-2026-113792
suse.com/security/cve/CVE-2026-113795
bugzilla.suse.com/1286632
bugzilla.suse.com/1286633
bugzilla.suse.com/1286634
bugzilla.suse.com/1286635
bugzilla.suse.com/1286636
bugzilla.suse.com/1286637
bugzilla.suse.com/1286638
bugzilla.suse.com/1286639
suse.com/security/cve/CVE-2026-113790
suse.com/security/cve/CVE-2026-113791
suse.com/security/cve/CVE-2026-113793
suse.com/security/cve/CVE-2026-113794
Left out here: 73 versions. The JSON record has them.