<?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>Thu, 01 Oct 2026 13:19:19 +0000</lastBuildDate>
    <item>
      <title>BIT-pillow-2026-59199 — Pillow: Heap out-of-bounds write `Image.paste()` / `Image.crop()` via signed coordinate overflow</title>
      <link>https://vulnerability.circl.lu/vuln/bit-pillow-2026-59199</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Bitnami: pillow&lt;/p&gt;
&lt;p&gt;Pillow is a Python imaging library. Prior to 12.3.0, Pillow public image coordinate APIs can trigger a native heap out-of-bounds write when given coordinates near the signed 32-bit integer limits in Image.paste(), Image.crop(), or Image.alpha_composite(). This issue is fixed in version 12.3.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Bitnami: pillow&lt;/p&gt;
&lt;p&gt;Pillow is a Python imaging library. Prior to 12.3.0, Pillow public image coordinate APIs can trigger a native heap out-of-bounds write when given coordinates near the signed 32-bit integer limits in Image.paste(), Image.crop(), or Image.alpha_composite(). This issue is fixed in version 12.3.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/bit-pillow-2026-59199</guid>
    </item>
    <item>
      <title>CVE-2026-59199 — Pillow: Heap out-of-bounds write `Image.paste()` / `Image.crop()` via signed coordinate overflow</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-59199</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; python-pillow Pillow&lt;/p&gt;
&lt;p&gt;Pillow is a Python imaging library. Prior to 12.3.0, Pillow public image coordinate APIs can trigger a native heap out-of-bounds write when given coordinates near the signed 32-bit integer limits in Image.paste(), Image.crop(), or Image.alpha_composite(). This issue is fixed in version 12.3.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; python-pillow Pillow&lt;/p&gt;
&lt;p&gt;Pillow is a Python imaging library. Prior to 12.3.0, Pillow public image coordinate APIs can trigger a native heap out-of-bounds write when given coordinates near the signed 32-bit integer limits in Image.paste(), Image.crop(), or Image.alpha_composite(). This issue is fixed in version 12.3.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-59199</guid>
    </item>
    <item>
      <title>GHSA-6r8x-57c9-28j4 — Pillow: Heap out-of-bounds write `Image.paste()` / `Image.crop()` via signed coordinate overflow</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-6r8x-57c9-28j4</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: Pillow&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;Pillow&amp;#39;s public image coordinate APIs can trigger a native heap out-of-bounds
write when given coordinates near the signed 32-bit integer limits. In 4-byte
pixel modes such as `RGBA`, this becomes a controlled backward heap underwrite:
for a source image of width `W`, Pillow writes `4 * W` attacker-controlled bytes
starting `4 * W` bytes before the destination row pointer. With successful large
image allocation, the theoretical upper bound is ~2 GiB backwards from
the destination row.&lt;/p&gt;
&lt;p&gt;Minimal public API trigger:&lt;/p&gt;
&lt;p&gt;```python
from PIL import Image&lt;/p&gt;
&lt;p&gt;INT_MIN = -(1 &amp;lt;&amp;lt; 31)&lt;/p&gt;
&lt;p&gt;src = Image.new(&amp;#34;RGBA&amp;#34;, (2, 1), (0x41, 0x42, 0x43, 0x44))
dst = Image.new(&amp;#34;RGBA&amp;#34;, (8, 1))
dst.paste(src, ((1 &amp;lt;&amp;lt; 31) - 2, 0, INT_MIN, 1))
```&lt;/p&gt;
&lt;p&gt;The same root cause is also reachable through `Image.crop()` and
`Image.alpha_composite()`. No private API, ctypes, custom Python object, or
malformed image file is needed.&lt;/p&gt;
&lt;p&gt;This has been confirmed as an ASAN heap-buffer-overflow write. On normal
non-ASAN Pillow builds, the minimal trigger corrupts the heap and aborts with
`double free or corruption (out)`&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`src/PIL/Image.py:paste()` accepts a 4-tuple box and passes it to the native
`ImagingCore.paste()` method:&lt;/p&gt;
&lt;p&gt;```python
self.im.paste(source, box)
```&lt;/p&gt;
&lt;p&gt;`src/_imaging.c:_paste()` parses the four Python coordinates into signed `int`
values and calls `ImagingPaste()`:&lt;/p&gt;
&lt;p&gt;```c
int x0, y0, x1, y1;
PyArg_ParseTuple(args, &amp;#34;O(iiii)|O!&amp;#34;, &amp;amp;source, &amp;amp;x0, &amp;amp;y0, &amp;amp;x1, &amp;amp;y1, ...);
status = ImagingPaste(self-&amp;gt;image,…&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&lt;/p&gt;
&lt;p&gt;Pillow&amp;#39;s public image coordinate APIs can trigger a native heap out-of-bounds
write when given coordinates near the signed 32-bit integer limits. In 4-byte
pixel modes such as `RGBA`, this becomes a controlled backward heap underwrite:
for a source image of width `W`, Pillow writes `4 * W` attacker-controlled bytes
starting `4 * W` bytes before the destination row pointer. With successful large
image allocation, the theoretical upper bound is ~2 GiB backwards from
the destination row.&lt;/p&gt;
&lt;p&gt;Minimal public API trigger:&lt;/p&gt;
&lt;p&gt;```python
from PIL import Image&lt;/p&gt;
&lt;p&gt;INT_MIN = -(1 &amp;lt;&amp;lt; 31)&lt;/p&gt;
&lt;p&gt;src = Image.new(&amp;#34;RGBA&amp;#34;, (2, 1), (0x41, 0x42, 0x43, 0x44))
dst = Image.new(&amp;#34;RGBA&amp;#34;, (8, 1))
dst.paste(src, ((1 &amp;lt;&amp;lt; 31) - 2, 0, INT_MIN, 1))
```&lt;/p&gt;
&lt;p&gt;The same root cause is also reachable through `Image.crop()` and
`Image.alpha_composite()`. No private API, ctypes, custom Python object, or
malformed image file is needed.&lt;/p&gt;
&lt;p&gt;This has been confirmed as an ASAN heap-buffer-overflow write. On normal
non-ASAN Pillow builds, the minimal trigger corrupts the heap and aborts with
`double free or corruption (out)`&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`src/PIL/Image.py:paste()` accepts a 4-tuple box and passes it to the native
`ImagingCore.paste()` method:&lt;/p&gt;
&lt;p&gt;```python
self.im.paste(source, box)
```&lt;/p&gt;
&lt;p&gt;`src/_imaging.c:_paste()` parses the four Python coordinates into signed `int`
values and calls `ImagingPaste()`:&lt;/p&gt;
&lt;p&gt;```c
int x0, y0, x1, y1;
PyArg_ParseTuple(args, &amp;#34;O(iiii)|O!&amp;#34;, &amp;amp;source, &amp;amp;x0, &amp;amp;y0, &amp;amp;x1, &amp;amp;y1, ...);
status = ImagingPaste(self-&amp;gt;image,…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-6r8x-57c9-28j4</guid>
    </item>
    <item>
      <title>PYSEC-2026-3451</title>
      <link>https://vulnerability.circl.lu/vuln/pysec-2026-3451</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: pillow&lt;/p&gt;
&lt;p&gt;Pillow is a Python imaging library. Prior to 12.3.0, Pillow public image coordinate APIs can trigger a native heap out-of-bounds write when given coordinates near the signed 32-bit integer limits in Image.paste(), Image.crop(), or Image.alpha_composite(). This issue is fixed in version 12.3.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: pillow&lt;/p&gt;
&lt;p&gt;Pillow is a Python imaging library. Prior to 12.3.0, Pillow public image coordinate APIs can trigger a native heap out-of-bounds write when given coordinates near the signed 32-bit integer limits in Image.paste(), Image.crop(), or Image.alpha_composite(). This issue is fixed in version 12.3.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/pysec-2026-3451</guid>
    </item>
  </channel>
</rss>
