<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Wed, 30 Sep 2026 15:25:08 +0000</lastBuildDate>
    <item>
      <title>BREW-ocrmypdf-CVE-2025-64512 — Arbitrary Code Execution in pdfminer.six via Crafted PDF Input</title>
      <link>https://vulnerability.circl.lu/vuln/brew-ocrmypdf-cve-2025-64512</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: ocrmypdf&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;```python
# Vulnerable code in pdfminer/cmapdb.py:233-246
def _load_data(cls, name: str) -&amp;gt; Any:
    name = name.replace(&amp;#34;\0&amp;#34;, &amp;#34;&amp;#34;)  # Insufficient sanitization
    filename = &amp;#34;%s.pickle.gz&amp;#34; % 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
```&lt;/p&gt;
&lt;p&gt;An attacker can:
1. Create a malicious PDF with a CMap reference like `/malicious`
2. Place a malicious pickle file at `/malicious.pickle.gz`
3. When the PDF is processed, pdfminer loads and deserializes the malicious pickle
4. The pickle deserialization can execute arbitrary Python code&lt;/p&gt;
&lt;p&gt;### POC&lt;/p&gt;
&lt;p&gt;#### Malicious PDF&lt;/p&gt;
&lt;p&gt;Create a PDF with a malicious CMAP entry:&lt;/p&gt;
&lt;p&gt;```
5 0 obj
&amp;lt;&amp;lt;
/Type /Font
/Subtype /Type0
/BaseFont /MaliciousFont-Identity-H
/Encoding /#2Fpdfs#2Fmalicious
/DescendantFonts [6…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: ocrmypdf&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;```python
# Vulnerable code in pdfminer/cmapdb.py:233-246
def _load_data(cls, name: str) -&amp;gt; Any:
    name = name.replace(&amp;#34;\0&amp;#34;, &amp;#34;&amp;#34;)  # Insufficient sanitization
    filename = &amp;#34;%s.pickle.gz&amp;#34; % 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
```&lt;/p&gt;
&lt;p&gt;An attacker can:
1. Create a malicious PDF with a CMap reference like `/malicious`
2. Place a malicious pickle file at `/malicious.pickle.gz`
3. When the PDF is processed, pdfminer loads and deserializes the malicious pickle
4. The pickle deserialization can execute arbitrary Python code&lt;/p&gt;
&lt;p&gt;### POC&lt;/p&gt;
&lt;p&gt;#### Malicious PDF&lt;/p&gt;
&lt;p&gt;Create a PDF with a malicious CMAP entry:&lt;/p&gt;
&lt;p&gt;```
5 0 obj
&amp;lt;&amp;lt;
/Type /Font
/Subtype /Type0
/BaseFont /MaliciousFont-Identity-H
/Encoding /#2Fpdfs#2Fmalicious
/DescendantFonts [6…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/brew-ocrmypdf-cve-2025-64512</guid>
    </item>
    <item>
      <title>CVE-2025-64512 — pdfminer.six vulnerable to Arbitrary Code Execution via Crafted PDF Input</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2025-64512</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; pdfminer.six&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; pdfminer.six&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2025-64512</guid>
    </item>
    <item>
      <title>PYSEC-2026-1762 — Arbitrary Code Execution in pdfminer.six via Crafted PDF Input</title>
      <link>https://vulnerability.circl.lu/vuln/pysec-2026-1762</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: pdfminer-six&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;```python
# Vulnerable code in pdfminer/cmapdb.py:233-246
def _load_data(cls, name: str) -&amp;gt; Any:
    name = name.replace(&amp;#34;\0&amp;#34;, &amp;#34;&amp;#34;)  # Insufficient sanitization
    filename = &amp;#34;%s.pickle.gz&amp;#34; % 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
```&lt;/p&gt;
&lt;p&gt;An attacker can:
1. Create a malicious PDF with a CMap reference like `/malicious`
2. Place a malicious pickle file at `/malicious.pickle.gz`
3. When the PDF is processed, pdfminer loads and deserializes the malicious pickle
4. The pickle deserialization can execute arbitrary Python code&lt;/p&gt;
&lt;p&gt;### POC&lt;/p&gt;
&lt;p&gt;#### Malicious PDF&lt;/p&gt;
&lt;p&gt;Create a PDF with a malicious CMAP entry:&lt;/p&gt;
&lt;p&gt;```
5 0 obj
&amp;lt;&amp;lt;
/Type /Font
/Subtype /Type0
/BaseFont /MaliciousFont-Identity-H
/Encoding /#2Fpdfs#2Fmalicious
/DescendantFonts [6…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: pdfminer-six&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;```python
# Vulnerable code in pdfminer/cmapdb.py:233-246
def _load_data(cls, name: str) -&amp;gt; Any:
    name = name.replace(&amp;#34;\0&amp;#34;, &amp;#34;&amp;#34;)  # Insufficient sanitization
    filename = &amp;#34;%s.pickle.gz&amp;#34; % 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
```&lt;/p&gt;
&lt;p&gt;An attacker can:
1. Create a malicious PDF with a CMap reference like `/malicious`
2. Place a malicious pickle file at `/malicious.pickle.gz`
3. When the PDF is processed, pdfminer loads and deserializes the malicious pickle
4. The pickle deserialization can execute arbitrary Python code&lt;/p&gt;
&lt;p&gt;### POC&lt;/p&gt;
&lt;p&gt;#### Malicious PDF&lt;/p&gt;
&lt;p&gt;Create a PDF with a malicious CMAP entry:&lt;/p&gt;
&lt;p&gt;```
5 0 obj
&amp;lt;&amp;lt;
/Type /Font
/Subtype /Type0
/BaseFont /MaliciousFont-Identity-H
/Encoding /#2Fpdfs#2Fmalicious
/DescendantFonts [6…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/pysec-2026-1762</guid>
    </item>
  </channel>
</rss>
