{"description":"Trending threats, MITRE ATT\u0026CK coverage, and detection metadata. Fed continuously.","favicon":"https://feed.craftedsignal.io/favicon-32x32.png","feed_url":"https://feed.craftedsignal.io/products/pillow--11.0.0--13.0.0/feed.json","home_page_url":"https://feed.craftedsignal.io/","icon":"https://feed.craftedsignal.io/apple-touch-icon.png","items":[{"_cs_actors":[],"_cs_cpes":["cpe:2.3:a:python:pillow:*:*:*:*:*:*:*:*"],"_cs_cves":[{"cvss":9.8,"id":"CVE-2026-96639"}],"_cs_exploited":false,"_cs_has_poc":false,"_cs_poc_references":[],"_cs_products":["Pillow (\u003e= 11.0.0, \u003c 13.0.0)"],"_cs_severities":["critical"],"_cs_tags":["vulnerability","remote-code-execution","memory-corruption","pillow"],"_cs_type":"advisory","_cs_vendors":[],"content_html":"\u003cp\u003ePillow (versions 11.0.0 through 12.3.0) contains a vulnerability where multi-frame image loaders do not properly validate retained native \u003ccode\u003eImagingCore\u003c/code\u003e storage when a frame transition changes the image mode or dimensions. If frame 0 allocates a narrow buffer (e.g., mode \u003ccode\u003eL\u003c/code\u003e) and a subsequent frame requires a wider mode (e.g., \u003ccode\u003eRGB\u003c/code\u003e, \u003ccode\u003eCMYK\u003c/code\u003e), 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.\u003c/p\u003e\n\u003ch2 id=\"attack-chain\"\u003eAttack Chain\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAttacker crafts a multi-frame image file (PSD, MPO, DCX, or MIC) containing at least two frames.\u003c/li\u003e\n\u003cli\u003eFrame 0 is set to a narrow pixel mode (e.g., \u003ccode\u003eL\u003c/code\u003e) to trigger allocation of native storage.\u003c/li\u003e\n\u003cli\u003eFrame 1 is crafted with a wider pixel mode (e.g., \u003ccode\u003eRGB\u003c/code\u003e or \u003ccode\u003eCMYK\u003c/code\u003e) and the same dimensions as Frame 0.\u003c/li\u003e\n\u003cli\u003eThe victim application calls \u003ccode\u003eImage.open()\u003c/code\u003e on the crafted file.\u003c/li\u003e\n\u003cli\u003eThe application iterates to the second frame using \u003ccode\u003eImageSequence.Iterator\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe application invokes \u003ccode\u003eframe.load()\u003c/code\u003e on the second frame.\u003c/li\u003e\n\u003cli\u003ePillow reuses the native storage buffer from Frame 0 without revalidating the mode/size requirements.\u003c/li\u003e\n\u003cli\u003eThe decoder performs an out-of-bounds write to the native buffer, leading to memory corruption or code execution.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"impact\"\u003eImpact\u003c/h2\u003e\n\u003cp\u003eThe 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.\u003c/p\u003e\n\u003ch2 id=\"recommendation\"\u003eRecommendation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate Pillow to version 13.0.0 or later immediately.\u003c/li\u003e\n\u003cli\u003eAudit all internal and public-facing services for the use of \u003ccode\u003ePIL.Image\u003c/code\u003e and \u003ccode\u003ePIL.ImageSequence\u003c/code\u003e to process user-supplied image files.\u003c/li\u003e\n\u003cli\u003eImplement strict input validation or file-type filtering for image uploads to block potentially malicious multi-frame formats if an immediate upgrade is not feasible.\u003c/li\u003e\n\u003cli\u003eRestrict 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).\u003c/li\u003e\n\u003c/ul\u003e\n","date_modified":"2026-10-30T00:25:26Z","date_published":"2026-10-30T00:25:26Z","id":"https://feed.craftedsignal.io/briefs/2026-10-pillow-oob-write/","summary":"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.","title":"Pillow: Native out-of-bounds write via multi-frame image mode transition (CVE-2026-96639)","url":"https://feed.craftedsignal.io/briefs/2026-10-pillow-oob-write/"}],"language":"en","title":"CraftedSignal Threat Feed - Pillow (\u003e= 11.0.0, \u003c 13.0.0)","version":"https://jsonfeed.org/version/1.1"}