<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>Pillow (&gt;= 11.0.0, &lt; 13.0.0) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/pillow--11.0.0--13.0.0/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Fri, 30 Oct 2026 00:25:26 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/pillow--11.0.0--13.0.0/feed.xml" rel="self" type="application/rss+xml"/><image><url>https://feed.craftedsignal.io/favicon-32x32.png</url><title>CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/</link><width>32</width><height>32</height></image><webfeeds:icon>https://feed.craftedsignal.io/favicon.svg</webfeeds:icon><item><title>Pillow: Native out-of-bounds write via multi-frame image mode transition (CVE-2026-96639)</title><link>https://feed.craftedsignal.io/briefs/2026-10-pillow-oob-write/</link><pubDate>Fri, 30 Oct 2026 00:25:26 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-10-pillow-oob-write/</guid><description>Pillow multi-frame loaders retain stale native image storage across mode transitions, leading to out-of-bounds writes and potential remote command execution when processing crafted MPO, PSD, DCX, or MIC files.</description><content:encoded><![CDATA[<p>Pillow (versions 11.0.0 through 12.3.0) contains a vulnerability where multi-frame image loaders do not properly validate retained native <code>ImagingCore</code> storage when a frame transition changes the image mode or dimensions. If frame 0 allocates a narrow buffer (e.g., mode <code>L</code>) and a subsequent frame requires a wider mode (e.g., <code>RGB</code>, <code>CMYK</code>), the decoder may write data into the stale, undersized buffer. This results in native out-of-bounds memory corruption, potential application crashes, and arbitrary command execution.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker crafts a multi-frame image file (PSD, MPO, DCX, or MIC) containing at least two frames.</li>
<li>Frame 0 is set to a narrow pixel mode (e.g., <code>L</code>) to trigger allocation of native storage.</li>
<li>Frame 1 is crafted with a wider pixel mode (e.g., <code>RGB</code> or <code>CMYK</code>) and the same dimensions as Frame 0.</li>
<li>The victim application calls <code>Image.open()</code> on the crafted file.</li>
<li>The application iterates to the second frame using <code>ImageSequence.Iterator</code>.</li>
<li>The application invokes <code>frame.load()</code> on the second frame.</li>
<li>Pillow reuses the native storage buffer from Frame 0 without revalidating the mode/size requirements.</li>
<li>The decoder performs an out-of-bounds write to the native buffer, leading to memory corruption or code execution.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>The vulnerability allows for denial-of-service via process crashes. In the MPO/JPEG path, exploitation can lead to native out-of-bounds writes and arbitrary command execution under the context of the user running the Python process. The attack is achievable via a single unauthenticated HTTP request in web applications that process uploaded images using affected Pillow versions.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Update Pillow to version 13.0.0 or later immediately.</li>
<li>Audit all internal and public-facing services for the use of <code>PIL.Image</code> and <code>PIL.ImageSequence</code> to process user-supplied image files.</li>
<li>Implement strict input validation or file-type filtering for image uploads to block potentially malicious multi-frame formats if an immediate upgrade is not feasible.</li>
<li>Restrict the execution environment of image processing services to minimize the impact of potential command execution (e.g., using containers with minimal privileges, no shells, and restricted file system access).</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>vulnerability</category><category>remote-code-execution</category><category>memory-corruption</category><category>pillow</category></item></channel></rss>