<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://db.gcve.eu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-29T08:38:02.471751+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@gcve.eu</email>
  </author>
  <link href="https://db.gcve.eu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://db.gcve.eu/vuln/cve-2026-114501</id>
    <title>CVE-2026-114501 — Pillow: Arrow export leaks stale heap memory when PILLOW_ALIGNMENT &gt; 1</title>
    <updated>2026-10-29T08:38:02.473971+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> python-pillow Pillow</p>
<p>Pillow is a Python imaging library. From 11.2.1 until 13.0.0, Arrow export assumes that an image's rows are tightly contiguous and exports from im-&gt;blocks[0].ptr even when PILLOW_ALIGNMENT makes aligned_linesize include row padding or an aligned offset before the first row. The resulting Arrow buffer can include uninitialized padding, bytes preceding the first row, or stale heap contents from previously freed images. Applications that configure alignment and export images to Arrow can therefore disclose one user's pixels or other process memory to another user. This issue is fixed in version 13.0.0.</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/cve-2026-114501"/>
  </entry>
  <entry>
    <id>https://db.gcve.eu/vuln/ghsa-654x-cwwv-5j9c</id>
    <title>GHSA-654x-cwwv-5j9c — Pillow: Arrow export leaks stale heap memory when PILLOW_ALIGNMENT &gt; 1</title>
    <updated>2026-10-29T08:38:02.474037+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: Pillow</p>
<p>### Summary</p>
<p>When [`PILLOW_ALIGNMENT`](https://pillow.readthedocs.io/en/stable/reference/block_allocator.html#memory-pools) is set above 1, exporting an image to Arrow returns uninitialized heap memory mixed in with the pixel data. That memory can include pixels from images the process freed earlier.</p>
<p>### Details</p>
<p>With an alignment above 1, the default allocator pads each row up to `aligned_linesize` and starts the first row at an aligned offset into the block. It then exports `im-&gt;blocks[0].ptr` as `xsize * ysize` tightly packed pixels, so exported data includes the padding bytes, and can include a few bytes from before the first row.</p>
<p>Tested vulnerable on 11.2.1, 12.3.0, 4c1ed27a5.</p>
<p>### PoC</p>
<p>Whether things leak may depend on allocator configuration. This does show a leak on my Mac.</p>
<p>```python
import os</p>
<p>os.environ["PILLOW_ALIGNMENT"] = "64"</p>
<p>from PIL import Image</p>
<p># Image A: 64 px wide, so its rows fill the whole aligned stride
a = Image.new("L", (64, 40), 0x41).transpose(Image.Transpose.FLIP_LEFT_RIGHT)
del a</p>
<p># Image B: 61 px wide, so each row has 3 bytes of padding; its pixels are all 0
b = Image.new("L", (61, 40), 0).transpose(Image.Transpose.FLIP_LEFT_RIGHT)</p>
<p>try:
    exported = Image.fromarrow(b, b.mode, b.size).tobytes()
except ValueError as e:
    print("Not vulnerable:", e)
else:
    if leaked := len(exported) - exported.count(0):
        raise RuntimeError(f"{leaked} of {len(exported)} exported bytes are not B's pixels")
```</p>
<p>### Impact</p>
<p>Information disclosure f…</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/ghsa-654x-cwwv-5j9c"/>
  </entry>
</feed>
