<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Imaging security watch on Tetrak</title><link>https://tetrak.dev/security/</link><description>Recent content in Imaging security watch on Tetrak</description><generator>Hugo</generator><language>en-gb</language><atom:link href="https://tetrak.dev/security/index.xml" rel="self" type="application/rss+xml"/><item><title>Protecting yourself</title><link>https://tetrak.dev/security/protecting-yourself/</link><pubDate>Sun, 01 Nov 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/protecting-yourself/</guid><description>&lt;p&gt;Every row in the &lt;a href="https://tetrak.dev/security/"&gt;watch&lt;/a&gt; ends with
advice specific to that flaw. This page is the advice that applies to all
of them. It is written for someone who runs a pipeline rather than someone
who writes decoders: the steps are things you can do this week.&lt;/p&gt;
&lt;h2 id="upgrade-and-know-what-you-have"&gt;Upgrade, and know what you have&lt;/h2&gt;
&lt;p&gt;The fixed version is the first line of every row for a reason: a flaw with
a fix is closed by installing the fix, and nothing below is as good. The
part people miss is knowing what to upgrade. An image library is several
libraries: Pillow carries libjpeg-turbo, libpng, libtiff, OpenJPEG and
zlib inside its wheels, and a Docker image carries the operating system&amp;rsquo;s
copies of the same underneath. Pin exact versions in a lock file, scan the
lock file &lt;em&gt;and&lt;/em&gt; the built image for published flaws (Trivy does both, for
free), and let a tool propose the updates so that you only have to read
them.&lt;/p&gt;</description></item><item><title>A FlashPix file runs code when opened, if olefile is installed</title><link>https://tetrak.dev/security/cve-2026-112398/</link><pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-112398/</guid><description>&lt;p&gt;Heap buffer overflow in FlashPix (FPX) JPEG-tile decoding leads to code execution.&lt;/p&gt;</description></item><item><title>Pillow advisories</title><link>https://tetrak.dev/security/pillow/</link><pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/pillow/</guid><description>&lt;p&gt;The Python image library. Most Python programs that open a JPEG, PNG or TIFF do it with Pillow, Tetrak OCR included; it wraps libjpeg-turbo, libpng, libtiff and the others below&lt;/p&gt;</description></item><item><title>A later frame of an MPO or DCX file is never checked against the pixel limit</title><link>https://tetrak.dev/security/cve-2026-96636/</link><pubDate>Thu, 22 Oct 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-96636/</guid><description>&lt;p&gt;The decompression-bomb check runs only on the first frame; MpoImageFile.seek() and DcxImageFile.seek() do not repeat it.&lt;/p&gt;</description></item><item><title>A multi-frame file that changes colour mode writes into a buffer sized for the first frame</title><link>https://tetrak.dev/security/cve-2026-96639/</link><pubDate>Thu, 22 Oct 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-96639/</guid><description>&lt;p&gt;Multi-frame loaders can reuse stale native image storage after a mode transition, giving out-of-bounds writes; command execution was demonstrated through the MPO path.&lt;/p&gt;</description></item><item><title>A PNG's EXIF chunk makes parsing take quadratic time</title><link>https://tetrak.dev/security/cve-2026-96643/</link><pubDate>Thu, 22 Oct 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-96643/</guid><description>&lt;p&gt;A PNG eXIf chunk full of repeated six-byte markers makes Exif.load() copy the buffer once per marker.&lt;/p&gt;</description></item><item><title>A SPIDER stack file bypasses the pixel limit on seek</title><link>https://tetrak.dev/security/cve-2026-96637/</link><pubDate>Thu, 22 Oct 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-96637/</guid><description>&lt;p&gt;SpiderImagePlugin&amp;rsquo;s seek() re-parses the header without the decompression-bomb check, so a file under 1 KB can trigger a multi-gigabyte allocation.&lt;/p&gt;</description></item><item><title>A 512-byte XBM file stalls Image.open() for minutes</title><link>https://tetrak.dev/security/cve-2026-112901/</link><pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-112901/</guid><description>&lt;p&gt;A regular expression in XbmImagePlugin takes about six minutes of CPU on a crafted 512-byte file before Image.open() gives up.&lt;/p&gt;</description></item><item><title>A MIC file makes counting its frames loop for ever</title><link>https://tetrak.dev/security/cve-2026-112390/</link><pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-112390/</guid><description>&lt;p&gt;Infinite loop in MIC n_frames when the embedded TIFF has three or more directories; needs the optional olefile package.&lt;/p&gt;</description></item><item><title>An animated PNG allocates its full canvas before the pixel limit is checked</title><link>https://tetrak.dev/security/cve-2026-112399/</link><pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-112399/</guid><description>&lt;p&gt;APNG background disposal allocates the full canvas before the decompression-bomb check; a 126-byte file claiming 22,000 x 22,000 pixels costs about 1.9 GB.&lt;/p&gt;</description></item><item><title>An EPS file's name is passed to Ghostscript as an option</title><link>https://tetrak.dev/security/cve-2026-112900/</link><pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-112900/</guid><description>&lt;p&gt;Argument injection in the Ghostscript call, potentially leading to remote code execution.&lt;/p&gt;</description></item><item><title>Pillow's PDF parser recurses without limit when appending</title><link>https://tetrak.dev/security/cve-2026-112391/</link><pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-112391/</guid><description>&lt;p&gt;PdfParser can recurse without limit in get_value() and linearize_page_tree().&lt;/p&gt;</description></item><item><title>Saving a TIFF to memory overruns a heap buffer</title><link>https://tetrak.dev/security/cve-2026-112393/</link><pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-112393/</guid><description>&lt;p&gt;Heap buffer overflow in _tiffWriteProc when saving TIFF to BytesIO.&lt;/p&gt;</description></item><item><title>A lossless JPEG overruns the decode buffer when scaled</title><link>https://tetrak.dev/security/cve-2026-112403/</link><pubDate>Tue, 20 Oct 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-112403/</guid><description>&lt;p&gt;Heap buffer overflow in ImagingJpegDecode: a lossless (SOF3) frame ignores the requested scaling and writes full-width rows into a buffer sized for the scaled width.&lt;/p&gt;</description></item><item><title>A malformed compressed TIFF leaks heap memory into its pixels</title><link>https://tetrak.dev/security/cve-2026-112404/</link><pubDate>Tue, 20 Oct 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-112404/</guid><description>&lt;p&gt;Out-of-bounds read in TiffDecode.c tile and RGBA paths copies heap memory into the returned image.&lt;/p&gt;</description></item><item><title>A tiled TIFF makes the decoder read past its tile buffer</title><link>https://tetrak.dev/security/cve-2026-112395/</link><pubDate>Tue, 20 Oct 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-112395/</guid><description>&lt;p&gt;The tiled-TIFF decoder reads past the tile buffer in copy4 when libtiff returns a tile smaller than the worst case.&lt;/p&gt;</description></item><item><title>A PixarLog-compressed TIFF overflows a libtiff heap buffer</title><link>https://tetrak.dev/security/cve-2026-12912/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-12912/</guid><description>&lt;p&gt;Decoding a PixarLog image with the 8-bit ABGR output format and a specific stride leads to a heap-based buffer overflow.&lt;/p&gt;</description></item><item><title>libtiff advisories</title><link>https://tetrak.dev/security/libtiff/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/libtiff/</guid><description>&lt;p&gt;The C library that reads and writes TIFF, the format most archival scans are kept in. Pillow, poppler, ImageMagick and nearly everything else decode TIFF through it&lt;/p&gt;</description></item><item><title>A palette PNG reaches a flaw in libpng's palette handling</title><link>https://tetrak.dev/security/cve-2026-33636/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-33636/</guid><description>&lt;p&gt;One of three libpng flaws in the paths that handle palette (indexed-colour) PNGs. The upstream record was not re-fetched when this entry was written; see notes.&lt;/p&gt;</description></item><item><title>libpng advisories</title><link>https://tetrak.dev/security/libpng/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/libpng/</guid><description>&lt;p&gt;The reference C library for PNG, used by Pillow, browsers and most image software&lt;/p&gt;</description></item><item><title>A YCbCr TIFF subsampled four to one overflows a libtiff buffer</title><link>https://tetrak.dev/security/cve-2026-4775/</link><pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-4775/</guid><description>&lt;p&gt;Signed integer overflow in putcontig8bitYCbCr44tile leads to an out-of-bounds heap write.&lt;/p&gt;</description></item><item><title>An interlaced 16-bit PNG overflows a libpng buffer</title><link>https://tetrak.dev/security/cve-2026-22695/</link><pubDate>Mon, 12 Jan 2026 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2026-22695/</guid><description>&lt;p&gt;One of two libpng overflows on the Adam7-interlaced 16-bit path. The upstream record was not re-fetched when this entry was written; see notes.&lt;/p&gt;</description></item><item><title>A palette PNG reaches a flaw in libpng's palette handling</title><link>https://tetrak.dev/security/cve-2025-66293/</link><pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2025-66293/</guid><description>&lt;p&gt;One of three libpng flaws in the paths that handle palette (indexed-colour) PNGs. The upstream record was not re-fetched when this entry was written; see notes.&lt;/p&gt;</description></item><item><title>A palette PNG reaches a flaw in libpng's palette handling</title><link>https://tetrak.dev/security/cve-2025-64720/</link><pubDate>Mon, 24 Nov 2025 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2025-64720/</guid><description>&lt;p&gt;One of three libpng flaws in the paths that handle palette (indexed-colour) PNGs. The upstream record was not re-fetched when this entry was written; see notes.&lt;/p&gt;</description></item><item><title>An interlaced 16-bit PNG overflows a libpng buffer</title><link>https://tetrak.dev/security/cve-2025-65018/</link><pubDate>Mon, 24 Nov 2025 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2025-65018/</guid><description>&lt;p&gt;One of two libpng overflows on the Adam7-interlaced 16-bit path. The upstream record was not re-fetched when this entry was written; see notes.&lt;/p&gt;</description></item><item><title>A TIFF tag that points past the file makes libtiff allocate for nothing</title><link>https://tetrak.dev/security/cve-2023-6277/</link><pubDate>Fri, 24 Nov 2023 00:00:00 +0000</pubDate><guid>https://tetrak.dev/security/cve-2023-6277/</guid><description>&lt;p&gt;An out-of-memory flaw in libtiff: a crafted file passed to TIFFOpen() makes it allocate from a tag&amp;rsquo;s declared size.&lt;/p&gt;</description></item></channel></rss>