python-pillow/Pillow
CVE History
| CVE | Affected | Published | CVSS v3 | CVSS v2 |
|---|---|---|---|---|
| — | 7.5 HIGH | — | ||
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. | ||||
| — | 8.2 HIGH | — | ||
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. | ||||
| — | — | — | ||
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. | ||||
| < 12.3.0 | 7.5 HIGH | — | ||
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. | ||||
| >= 8.2.0, < 12.3.0 | 7.5 HIGH | — | ||
Pillow is a Python imaging library. From 8.2.0 through 12.2.0, src/libImaging/Jpeg2KDecode.c accumulates total_component_width across every tile in a JPEG2000 image instead of recomputing it per tile, allowing a crafted tiled JPEG2000 file to force substantially higher transient memory usage and trigger out-of-memory failures during decoding. This issue is fixed in version 12.3.0. | ||||
| >= 12.0.0, < 12.3.0 | 5.3 MEDIUM | — | ||
Pillow is a Python imaging library. From 12.0.0 through 12.2.0, Pillow's EPS parser in PIL/EpsImagePlugin.py accepts a negative byte count in the %%BeginBinary directive, allowing a crafted EPS file to cause Image.open() to seek backwards to the same directive and parse it repeatedly in an infinite loop. This issue is fixed in version 12.3.0. | ||||
| < 12.3.0 | 7.5 HIGH | — | ||
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. | ||||
| >= 5.2.0, < 12.3.0 | 6.5 MEDIUM | — | ||
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. | ||||
| < 12.3.0 | 4.5 MEDIUM | — | ||
Pillow is a Python imaging library. Prior to 12.3.0, WindowsViewer.get_command() constructed a cmd.exe shell command by directly embedding a file path into an f-string without escaping and passed the result to subprocess.Popen(..., shell=True), allowing shell metacharacters in the file path to inject arbitrary cmd.exe commands. This issue is fixed in version 12.3.0. | ||||
| < 12.3.0 | 7.5 HIGH | — | ||
Pillow is a Python imaging library. Prior to 12.3.0, PIL/GdImageFile.py GdImageFile._open() read image dimensions from the GD 2.x header and stored them in self._size without calling Image._decompression_bomb_check(), allowing a crafted .gd file to trigger excessive C-heap allocation when loaded. This issue is fixed in version 12.3.0. | ||||
| < 12.3.0 | 7.5 HIGH | — | ||
Pillow is a Python imaging library. Prior to 12.3.0, PIL/BdfFontFile.py bdf_char() read the BBX width and height field from a BDF font file and passed attacker-controlled dimensions to Image.new() without calling Image._decompression_bomb_check(), bypassing Pillow's documented decompression bomb protection and allowing excessive memory allocation. This issue is fixed in version 12.3.0. | ||||
| < 12.3.0 | 7.5 HIGH | — | ||
Pillow is a Python imaging library. Prior to 12.3.0, PIL/FontFile.py FontFile.compile() assembled per-glyph images into a combined bitmap with Image.new("1", (xsize, ysize)) without calling Image._decompression_bomb_check(), allowing a font to trigger excessive allocation during conversion or saving. This issue is fixed in version 12.3.0. | ||||
| < 12.3.0 | 7.5 HIGH | — | ||
Pillow is a Python imaging library. Prior to 12.3.0, PIL/PcfFontFile.py _load_bitmaps() read glyph dimensions from the PCF METRICS section and passed them directly to Image.frombytes() without calling Image._decompression_bomb_check(), allowing crafted PCF font data to cause excessive memory allocation. This issue is fixed in version 12.3.0. | ||||
| >= 10.3.0, < 12.2.0 | 7.8 HIGH | — | ||
Pillow is a Python imaging library. From version 10.3.0 to before version 12.2.0, processing a malicious PSD file could lead to memory corruption, potentially resulting in a crash or arbitrary code execution. This issue has been patched in version 12.2.0. | ||||
| >= 4.2.0, < 12.2.0 | 5.5 MEDIUM | — | ||
Pillow is a Python imaging library. From version 4.2.0 to before version 12.2.0, an attacker can supply a malicious PDF that causes the process to hang indefinitely, consuming 100% CPU and making the application unresponsive. This issue has been patched in version 12.2.0. | ||||
| >= 11.2.1, < 12.2.0 | 5.5 MEDIUM | — | ||
Pillow is a Python imaging library. From version 11.2.1 to before version 12.2.0, passing nested lists as coordinates to APIs that accept coordinates such as ImagePath.Path, ImageDraw.ImageDraw.polygon and ImageDraw.ImageDraw.line could cause a heap buffer overflow, as nested lists were recursively unpacked beyond the allocated buffer. Coordinate lists are now validated to contain exactly two numeric coordinates. This issue has been patched in version 12.2.0. | ||||
| < 12.2.0 | 5.5 MEDIUM | — | ||
Pillow is a Python imaging library. Prior to version 12.2.0, if a font advances for each glyph by an exceeding large amount, when Pillow keeps track of the current position, it may lead to an integer overflow. This issue has been patched in version 12.2.0. | ||||
| >= 10.3.0, < 12.2.0 | 7.5 HIGH | — | ||
Pillow is a Python imaging library. Versions 10.3.0 through 12.1.1 did not limit the amount of GZIP-compressed data read when decoding a FITS image, making them vulnerable to decompression bomb attacks. A specially crafted FITS file could cause unbounded memory consumption, leading to denial of service (OOM crash or severe performance degradation). If users are unable to immediately upgrade, they should only open specific image formats, excluding FITS, as a workaround. | ||||
| >= 10.3.0, < 12.1.1 | 7.5 HIGH | — | ||
Pillow is a Python imaging library. From 10.3.0 to before 12.1.1, an out-of-bounds write may be triggered when loading a specially crafted PSD image. This vulnerability is fixed in 12.1.1. | ||||
| = 11.2.1 | 7.1 HIGH | — | ||
Pillow is a Python imaging library. In versions 11.2.0 to before 11.3.0, there is a heap buffer overflow when writing a sufficiently large (>64k encoded with default settings) image in the DDS format due to writing into a buffer without checking for available space. This only affects users who save untrusted data as a compressed DDS image. This issue has been patched in version 11.3.0. | ||||
| < 10.3.0 | 6.7 MEDIUM | — | ||
In _imagingcms.c in Pillow before 10.3.0, a buffer overflow exists because strcpy is used instead of strncpy. | ||||
| <= 10.1.0 | 8.1 HIGH | — | ||
Pillow through 10.1.0 allows PIL.ImageMath.eval Arbitrary Code Execution via the environment parameter, a different vulnerability than CVE-2022-22817 (which was about the expression parameter). | ||||
| < 10.0.0 | 7.5 HIGH | — | ||
An issue was discovered in Pillow before 10.0.0. It is a Denial of Service that uncontrollably allocates memory to process a given task, potentially causing a service to crash by having it run out of memory. This occurs for truetype in ImageFont when textlength in an ImageDraw instance operates on a long text argument. | ||||
| < 9.3.0 | 7.5 HIGH | — | ||
Pillow before 9.3.0 allows denial of service via SAMPLESPERPIXEL. | ||||
| < 9.2.0 | 7.5 HIGH | — | ||
Pillow before 9.2.0 performs Improper Handling of Highly Compressed GIF Data (Data Amplification). | ||||
| = 9.1.0 | 9.8 CRITICAL | 7.5 HIGH | ||
libImaging/TgaRleDecode.c in Pillow 9.1.0 has a heap buffer overflow in the processing of invalid TGA image files. | ||||
| < 9.0.1 | 9.1 CRITICAL | 6.4 MEDIUM | ||
Pillow before 9.0.1 allows attackers to delete files because spaces in temporary pathnames are mishandled. | ||||
| < 9.0.1 | 9.8 CRITICAL | 7.5 HIGH | ||
PIL.ImageMath.eval in Pillow before 9.0.0 allows evaluation of arbitrary expressions, such as ones that use the Python exec method. A lambda expression could also be used. | ||||
| < 9.0.0 | 6.5 MEDIUM | 6.4 MEDIUM | ||
path_getbbox in path.c in Pillow before 9.0.0 improperly initializes ImagePath.Path. | ||||
| < 9.0.0 | 6.5 MEDIUM | 6.4 MEDIUM | ||
path_getbbox in path.c in Pillow before 9.0.0 has a buffer over-read during initialization of ImagePath.Path. | ||||
| >= 5.2.0, < 8.3.2 | 7.5 HIGH | 5 MEDIUM | ||
The package pillow 5.2.0 and before 8.3.2 are vulnerable to Regular Expression Denial of Service (ReDoS) via the getrgb function. | ||||
| >= 1.2, <= 8.2.0, >= 1.0, <= 1.1.7 | 9.8 CRITICAL | 7.5 HIGH | ||
Pillow through 8.2.0 and PIL (aka Python Imaging Library) through 1.1.7 allow an attacker to pass controlled parameters directly into a convert function to trigger a buffer overflow in Convert.c. | ||||
| < 8.2.0 | 7.5 HIGH | 5 MEDIUM | ||
An issue was discovered in Pillow before 8.2.0. For FLI data, FliDecode did not properly check that the block advance was non-zero, potentially leading to an infinite loop on load. | ||||
| < 8.2.0 | 9.1 CRITICAL | 6.4 MEDIUM | ||
An issue was discovered in Pillow before 8.2.0. There is an out-of-bounds read in J2kDecode, in j2ku_gray_i. | ||||
| < 8.2.0 | 7.5 HIGH | 5 MEDIUM | ||
An issue was discovered in Pillow before 8.2.0. For EPS data, the readline implementation used in EPSImageFile has to deal with any combination of \r and \n as line endings. It used an accidentally quadratic method of accumulating lines while looking for a line ending. A malicious EPS file could use this to perform a DoS of Pillow in the open phase, before an image was accepted for opening. | ||||
| < 8.2.0 | 5.5 MEDIUM | 4.3 MEDIUM | ||
An issue was discovered in Pillow before 8.2.0. For BLP data, BlpImagePlugin did not properly check that reads (after jumping to file offsets) returned data. This could lead to a DoS where the decoder could be run a large number of times on empty data. | ||||
| < 8.2.0 | 9.1 CRITICAL | 6.4 MEDIUM | ||
An issue was discovered in Pillow before 8.2.0. There is an out-of-bounds read in J2kDecode, in j2ku_graya_la. | ||||
| < 8.2.0 | 5.5 MEDIUM | 4.3 MEDIUM | ||
An issue was discovered in Pillow before 8.2.0. PSDImagePlugin.PsdImageFile lacked a sanity check on the number of input layers relative to the size of the data block. This could lead to a DoS on Image.open prior to Image.load. | ||||
| < 8.1.1 | 6.5 MEDIUM | 4.3 MEDIUM | ||
An issue was discovered in Pillow before 8.1.1. The PDF parser allows a regular expression DoS (ReDoS) attack via a crafted PDF file because of a catastrophic backtracking regex. | ||||
| < 8.1.1 | 7.5 HIGH | 5 MEDIUM | ||
An issue was discovered in Pillow before 8.1.1. There is an out-of-bounds read in SGIRleDecode.c. | ||||
| < 8.1.1 | 7.5 HIGH | 5 MEDIUM | ||
An issue was discovered in Pillow before 8.1.1. In TiffDecode.c, there is an out-of-bounds read in TiffreadRGBATile via invalid tile boundaries. | ||||
| < 8.1.1 | 7.5 HIGH | 5 MEDIUM | ||
An issue was discovered in Pillow before 8.1.1. In TiffDecode.c, there is a negative-offset memcpy with an invalid size. | ||||
| < 8.1.1 | 9.8 CRITICAL | 7.5 HIGH | ||
An issue was discovered in Pillow before 8.1.1. TiffDecode has a heap-based buffer overflow when decoding crafted YCbCr files because of certain interpretation conflicts with LibTIFF in RGBA mode. NOTE: this issue exists because of an incomplete fix for CVE-2020-35654. | ||||
| < 8.1.1 | 7.5 HIGH | 5 MEDIUM | ||
Pillow before 8.1.2 allows attackers to cause a denial of service (memory consumption) because the reported size of a contained image is not properly checked for an ICNS container, and thus an attempted memory allocation can be very large. | ||||
| < 8.1.1 | 7.5 HIGH | 5 MEDIUM | ||
Pillow before 8.1.2 allows attackers to cause a denial of service (memory consumption) because the reported size of a contained image is not properly checked for an ICO container, and thus an attempted memory allocation can be very large. | ||||
| < 8.1.1 | 7.5 HIGH | 5 MEDIUM | ||
Pillow before 8.1.2 allows attackers to cause a denial of service (memory consumption) because the reported size of a contained image is not properly checked for a BLP container, and thus an attempted memory allocation can be very large. | ||||
| >= 4.3.0, < 8.1.0 | 5.4 MEDIUM | 5.8 MEDIUM | ||
In Pillow before 8.1.0, SGIRleDecode has a 4-byte buffer over-read when decoding crafted SGI RLE image files because offsets and length tables are mishandled. | ||||
| < 8.1.0 | 7.1 HIGH | 5.8 MEDIUM | ||
In Pillow before 8.1.0, PcxDecode has a buffer over-read when decoding a crafted PCX file because the user-supplied stride value is trusted for buffer calculations. | ||||
| < 8.1.0 | 8.8 HIGH | 6.8 MEDIUM | ||
In Pillow before 8.1.0, TiffDecode has a heap-based buffer overflow when decoding crafted YCbCr files because of certain interpretation conflicts with LibTIFF in RGBA mode. | ||||
| = 7.0.0, = *, < 7.1.0 | 5.5 MEDIUM | 4.3 MEDIUM | ||
Pillow before 7.1.0 has multiple out-of-bounds reads in libImaging/FliDecode.c. | ||||
| <= 7.0.0 | 8.1 HIGH | 6.8 MEDIUM | ||
In libImaging/SgiRleDecode.c in Pillow through 7.0.0, a number of out-of-bounds reads exist in the parsing of SGI image files, a different issue than CVE-2020-5311. | ||||
| = *, < 7.1.0 | 5.5 MEDIUM | 4.3 MEDIUM | ||
In libImaging/Jpeg2KDecode.c in Pillow before 7.1.0, there are multiple out-of-bounds reads via a crafted JP2 file. | ||||
| = 7.0.0, = *, < 7.1.0 | 7.8 HIGH | 6.8 MEDIUM | ||
In Pillow before 7.1.0, there are two Buffer Overflows in libImaging/TiffDecode.c. | ||||
| = 7.0.0, = *, < 7.1.0 | 5.5 MEDIUM | 4.3 MEDIUM | ||
In libImaging/PcxDecode.c in Pillow before 7.1.0, an out-of-bounds read can occur when reading PCX files where state->shuffle is instructed to read beyond state->buffer. | ||||
| < 6.2.2 | 7.5 HIGH | 5 MEDIUM | ||
There is a DoS vulnerability in Pillow before 6.2.2 caused by FpxImagePlugin.py calling the range function on an unvalidated 32-bit integer if the number of bands is large. On Windows running 32-bit Python, this results in an OverflowError or MemoryError due to the 2 GB limit. However, on Linux running 64-bit Python this results in the process being terminated by the OOM killer. | ||||
| < 6.2.2 | 9.8 CRITICAL | 7.5 HIGH | ||
libImaging/SgiRleDecode.c in Pillow before 6.2.2 has an SGI buffer overflow. | ||||
| < 6.2.2 | 9.8 CRITICAL | 7.5 HIGH | ||
libImaging/PcxDecode.c in Pillow before 6.2.2 has a PCX P mode buffer overflow. | ||||
| < 6.2.2 | 7.1 HIGH | 5.8 MEDIUM | ||
libImaging/FliDecode.c in Pillow before 6.2.2 has an FLI buffer overflow. | ||||
| < 6.2.2 | 8.8 HIGH | 6.8 MEDIUM | ||
libImaging/TiffDecode.c in Pillow before 6.2.2 has a TIFF decoding integer overflow, related to realloc. | ||||
| < 6.2.0 | 7.5 HIGH | 5 MEDIUM | ||
An issue was discovered in Pillow before 6.2.0. When reading specially crafted invalid image files, the library can either allocate very large amounts of memory or take an extremely long period of time to process the image. | ||||
| = 2.5.1, = 3.0.0, = 2.8.0, = 2.6.1, = 2.9.0, = 2.8.2, = 2.5.2, = 2.5.3, = 2.6.2, = 2.6.0, = 2.5.0, = 2.7.0, = 3.1.0, = 2.8.1 | — | 4.3 MEDIUM | ||
Heap-based buffer overflow in the j2k_encode_entry function in Pillow 2.5.0 through 3.1.1 allows remote attackers to cause a denial of service (memory corruption) via a crafted Jpeg2000 file. | ||||
| <= 3.3.1 | — | 6.8 MEDIUM | ||
Pillow before 3.3.2 allows context-dependent attackers to execute arbitrary code by using the "crafted image file" approach, related to an "Insecure Sign Extension" issue affecting the ImagingNew in Storage.c component. | ||||
| <= 3.3.1 | — | 4.3 MEDIUM | ||
Pillow before 3.3.2 allows context-dependent attackers to obtain sensitive information by using the "crafted image file" approach, related to an "Integer Overflow" issue affecting the Image.core.map_buffer in map.c component. | ||||
| <= 3.1.0 | — | 10 HIGH | ||
Integer overflow in the ImagingResampleHorizontal function in libImaging/Resample.c in Pillow before 3.1.1 allows remote attackers to have unspecified impact via negative values of the new size, which triggers a heap-based buffer overflow. | ||||
| <= 3.1.0 | — | 4.3 MEDIUM | ||
Buffer overflow in the ImagingPcdDecode function in PcdDecode.c in Pillow before 3.1.1 and Python Imaging Library (PIL) 1.1.7 and earlier allows remote attackers to cause a denial of service (crash) via a crafted PhotoCD file. | ||||
| <= 3.1.0 | — | 4.3 MEDIUM | ||
Buffer overflow in the ImagingFliDecode function in libImaging/FliDecode.c in Pillow before 3.1.1 allows remote attackers to cause a denial of service (crash) via a crafted FLI file. | ||||
| <= 3.1.0 | — | 4.3 MEDIUM | ||
Buffer overflow in the ImagingLibTiffDecode function in libImaging/TiffDecode.c in Pillow before 3.1.1 allows remote attackers to overwrite memory via a crafted TIFF file. | ||||
| <= 2.5.2 | — | 5 MEDIUM | ||
The Jpeg2KImagePlugin plugin in Pillow before 2.5.3 allows remote attackers to cause a denial of service via a crafted image. | ||||
| <= 2.6.2 | — | 5 MEDIUM | ||
Pillow before 2.7.0 allows remote attackers to cause a denial of service via a compressed text chunk in a PNG image that has a large size when it is decompressed. | ||||
| = 2.5.1, = 2.5.2, = 2.5.0, = 2.3.0, <= 2.3.1 | — | 5 MEDIUM | ||
PIL/IcnsImagePlugin.py in Python Imaging Library (PIL) and Pillow before 2.3.2 and 2.5.x before 2.5.2 allows remote attackers to cause a denial of service via a crafted block size. | ||||
| = 2.3.0 | — | 10 HIGH | ||
Python Image Library (PIL) 1.1.7 and earlier and Pillow 2.3 might allow remote attackers to execute arbitrary commands via shell metacharacters in unspecified vectors related to CVE-2014-1932, possibly JpegImagePlugin.py. | ||||
| <= 2.3.0 | — | 4.4 MEDIUM | ||
The (1) load_djpeg function in JpegImagePlugin.py, (2) Ghostscript function in EpsImagePlugin.py, (3) load function in IptcImagePlugin.py, and (4) _copy function in Image.py in Python Image Library (PIL) 1.1.7 and earlier and Pillow before 2.3.1 do not properly create temporary files, which allow local users to overwrite arbitrary files and obtain sensitive information via a symlink attack on the temporary file. | ||||
| <= 2.3.0 | — | 2.1 LOW | ||
The (1) JpegImagePlugin.py and (2) EpsImagePlugin.py scripts in Python Image Library (PIL) 1.1.7 and earlier and Pillow before 2.3.1 uses the names of temporary files on the command line, which makes it easier for local users to conduct symlink attacks by listing the processes. | ||||