- Top reward
- $1,500
- Top severity paid
- Critical
- Assets in scope
- 9
- Public CVEs
- 148
- Last change
- No changes yet
At a glance
What to know before you start testing.
- Pays from $1,500
- for critical bugs.
- Report on Sorona
- Submit through the program page.
- Partial safe harbor
- Some legal protection; read the terms.
- Publish after a fix
- Coordinate the timing with the company.
Rewards
What Sorona lists as the payout for each severity.
| Severity | Relative size | Reward |
|---|---|---|
| Critical | $1,500+ | |
| High | $700+ | |
| Medium | $300+ | |
| Low |
|
$100 $100 / 1 month Claude Max |
- Safe harbor
-
Partial
Sorona will not pursue legal action against you for good-faith research submitted to us in line with this policy. We cannot speak for the upstream project, its vendor, or any third party, and we do not grant authorization on their behalf.
Summarised with AI from the program policy on Sorona, read 12 Nov 2026, and checked word for word against it. Read the original
Scope
9 assets you may test, 7 excluded.
Web 1
- https://www.python.org
Products and areas 8
- Archive and compression handling (zipfile, tarfile, gzip, bz2, lzma) for path traversal, symlink extraction, and decompression bombs, plus json, cgi, wsgiref, ipaddress, hashlib, and hmac.
- C-level accelerator and extension modules shipped with CPython (_ssl, _hashlib, _socket, _pickle, _json, _elementtree/expat, _ctypes, _sqlite3, and the zlib bindings) for memory-safety defects.
- pip as distributed via PyPI, which the Python Security Response Team accepts alongside CPython.
- Platform-specific issues only where the platform meets a PEP 11 support tier.
- Standard-library modules that parse or handle untrusted input: http, http.client, http.server, urllib, urllib.parse, email, ssl, ftplib, and smtplib.
- String, bytes, and codec handling, plus path handling (os.path, pathlib) and subprocess argument or quoting handling where it enables injection beyond documented behavior.
- The CPython interpreter core: the eval loop, bytecode compiler, memory management, garbage collector, and object model, where a real-world exploitable flaw exists.
- XML parsers (xml.sax, xml.dom, xml.etree.ElementTree, xml.parsers.expat) for XXE, entity-expansion, and billion-laughs style bugs.
Out of scope (7)
- Bugs reachable only through code, configurations, or deployments unlikely to occur in a real production program. Severity is scored from expected use, not the worst case.
- Documented dangerous APIs used as designed: pickle, marshal, shelve, eval, exec, and ctypes, all documented to execute or expose arbitrary code or memory.
- Experimental or provisional features, even in a stable release, and pre-release (alpha, beta, RC) or in-development code.
- Flaws in bundled third-party dependencies such as zlib, OpenSSL, Tcl/Tk, or libexpat, unless CPython's own usage undermines their safe use.
- Python versions past end-of-life, since only releases in bugfix or security status are accepted.
- Third-party redistributions of Python or pip and PyPI package vulnerabilities, plus issues that require the attacker to already control launch arguments, environment variables, or on-disk files.
- Unhandled exceptions treated on their own as an expected part of control flow.
Rules
What the policy asks of you, and the bug types it won't reward, quoted from Sorona's policy.
While testing
-
Report privately first and give the PSRT time to fix before any public discussion
-
Include a minimal proof-of-concept with clear pass or fail indicators and the versions tested
-
Show a realistic, exploitable path rather than a theoretical or purely lateral advantage
-
Keep availability findings to reasonably sized inputs that a normal deployment would accept
-
Submit reports in plain text and, where possible, include a minimal candidate patch
-
Do not access, modify, or exfiltrate data belonging to other users or systems
Not accepted
-
Documented dangerous APIs used as designed: pickle, marshal, shelve, eval, exec, and ctypes
-
Unhandled exceptions treated on their own as an expected part of control flow.
-
Flaws in bundled third-party dependencies such as zlib, OpenSSL, Tcl/Tk, or libexpat
-
Experimental or provisional features, even in a stable release, and pre-release (alpha, beta, RC) or in-development code.
-
Python versions past end-of-life
-
Third-party redistributions of Python or pip and PyPI package vulnerabilities
Summarised with AI from the program policy on Sorona, read 12 Nov 2026, and checked word for word against it. Read the original
Changes
Tracked since 11 Nov 2026. Last checked 1 hour ago.
No changes yet. When the rewards or scope move, you will see it here and in the RSS feed.
Public CVEs
Published vulnerabilities in this vendor's products, from the NVD.
| CVE | Summary | Severity | Published |
|---|---|---|---|
| CVE-2026-112899 | Pillow is a Python imaging library. In versions 2.3.0 through 12.3.0, EPS rendering does not validate the scaled image dimensions before invoking Ghostscript. Applications that process untrusted EPS or PostScript files using an application-selected scale greater than one can incur excessive Ghostscript CPU and temporary disk consumption. In versions with decompression-bomb protection, the scaled o | Medium 6.3 | 5 Nov 2026 |
| CVE-2026-112902 | Pillow is a Python imaging library. In versions through 12.3.0, the libtiff TIFF encoder can pass arguments to TIFFSetField() that do not match libtiff’s definition of the corresponding tag. When an application saves attacker-controlled image metadata through this encoder, crafted tag values can cause invalid memory reads, copying process memory into the encoded output or crashing the process. App | High 8.3 | 5 Nov 2026 |
| CVE-2026-114501 | Pillow is a Python imaging library. From 11.2.1 until 13.0.0, Arrow export assumes that an image's rows are tightly contiguous and exports from im->blocks[0].ptr even when PILLOW_ALIGNMENT makes aligned_linesize include row padding or an aligned offset before the first row. The resulting Arrow buffer can include uninitialized padding, bytes preceding the first row, or stale heap contents from prev | Medium 6.3 | 21 Oct 2026 |
| CVE-2026-96641 | Pillow is a Python imaging library. Prior to 13.0.0, PILfont text-width accumulation in src/_imaging.c checks positive glyph advances against INT_MAX but does not check negative advances against INT_MIN. Repeating a signed 16-bit advance of -32768 can therefore execute a signed C integer overflow in xsize += dx, producing a large positive width from a negative mathematical result. Applications tha | Medium 6.5 | 21 Oct 2026 |
| CVE-2026-96642 | Pillow is a Python imaging library. Prior to 13.0.0, the TarIO initializer in src/PIL/TarIO.py accepts a negative octal member size and computes a backward seek that returns to the same 512-byte header. When the requested member name does not match, the parser repeatedly reads that header, consumes a full CPU core, and never returns. TarIO is reached only when an application directly uses PIL.TarI | High 7.1 | 21 Oct 2026 |
| CVE-2026-96643 | Pillow is a Python imaging library. From 11.0.0 until 13.0.0, Exif.load() in src/PIL/Image.py repeatedly slices the remaining EXIF data while it begins with the six-byte Exif header. src/PIL/PngImagePlugin.py accepts an uncapped PNG eXIf chunk, so a file filled with repeated headers causes a new shrinking copy on every iteration and quadratic CPU work. The condition is reachable through Image.gete | High 7.1 | 21 Oct 2026 |
| CVE-2026-96644 | Pillow is a Python imaging library. Prior to 13.0.0 on Windows, src/PIL/WmfImagePlugin.py passes unchecked 32-bit WMF or EMF dimensions to the native drawwmf handler in src/display.c. The handler sizes a DIB allocation from 16-bit-truncated bcWidth and bcHeight fields but copies pixel data using the original full dimensions. A crafted wide, short metafile can pass the pixel-count decompression-bom | High 7.1 | 21 Oct 2026 |
| CVE-2026-96778 | Pillow is a Python imaging library. From 9.4.0 until 13.0.0, ImagingJpegEncode() in src/libImaging/JpegEncode.c can call jpeg_write_marker() for a JPEG COM comment when an ICC profile has exactly filled the 65536-byte encoder buffer. libjpeg writes one byte before checking the exhausted free_in_buffer counter, which then wraps and permits the attacker-controlled comment and subsequent compressed i | High 7.7 | 21 Oct 2026 |
| CVE-2026-96636 | Pillow is a Python imaging library. Prior to 13.0.0, MpoImageFile.seek() and DcxImageFile.seek() reparse later MPO or DCX frames and replace self._size without rerunning Image._decompression_bomb_check(). A crafted multi-frame image can use a tiny first frame to pass Image.open() and then declare an over-limit later frame. Normal frame iteration through seek(), load(), or ImageSequence.Iterator ca | Medium 6.5 | 21 Oct 2026 |
| CVE-2026-96637 | Pillow is a Python imaging library. Prior to 13.0.0, SpiderImageFile.seek() in src/PIL/SpiderImagePlugin.py reparses a later SPIDER stack frame and replaces self._size without rerunning Image._decompression_bomb_check(). A tiny file can use a safe first frame to pass Image.open() and then declare very large dimensions in a later mode F frame. Loading that frame allocates approximately four bytes p | High 7.1 | 21 Oct 2026 |
| CVE-2026-96638 | Pillow is a Python imaging library. From 9.1.0 until 13.0.0, BmpRleDecoder.decode() in src/PIL/BmpImagePlugin.py permits crafted RLE BMP delta escapes and absolute-mode runs to append beyond the remaining dest_length without a per-branch cap. A delta can add roughly 255 image rows in one iteration, so a kilobyte-sized file with a large but permitted width can expand the data bytearray to hundreds | Medium 6.5 | 21 Oct 2026 |
| CVE-2026-96639 | Pillow is a Python imaging library. From 11.0.0 until 13.0.0, multi-frame loaders can retain an ImagingCore allocation created for a narrow frame mode while a later frame of the same dimensions changes the logical mode and decoder tiles to wider RGB or CMYK data. ImageFile.load_prepare() reuses the stale native storage because _im is non-null without verifying that its mode and size still match. C | Critical 9.8 | 21 Oct 2026 |
| CVE-2026-96640 | Pillow is a Python imaging library. From 5.1.0 until 13.0.0, PdfParser.linearize_page_tree() in src/PIL/PdfParser.py treats a PDF /Pages graph as a tree without tracking duplicate indirect references. When Image.save(..., format="PDF", append=True) processes an attacker-controlled existing PDF whose /Kids arrays repeatedly reference the same child /Pages node, Pillow expands the shared subtree as | High 8.2 | 21 Oct 2026 |
| CVE-2026-112895 | Pillow is a Python imaging library. From 5.1.0 until 13.0.0, Pillow can exhaust resources while parsing an existing PDF during an append operation. PdfParser follows page-tree child references without cycle or duplication tracking and follows previous-trailer chains with only an exact repeated-offset guard, so deep or cyclic page trees and long chains of unique trailer offsets can exhaust the Pyth | High 8.7 | 19 Oct 2026 |
| CVE-2026-112896 | Pillow is a Python imaging library. Prior to 13.0.0, Pillow's TIFF encoder can read beyond a ColorMap buffer when retained TIFF metadata has a plane size inconsistent with BitsPerSample. A small TIFF can be opened normally and then retain a crafted ColorMap that is reused when the image is saved. An application that re-encodes the attacker's TIFF with libtiff can trigger the out-of-bounds read. Th | High 8.8 | 19 Oct 2026 |
| CVE-2026-112897 | Pillow is a Python imaging library. From 5.3.0 until 13.0.0, Pillow can return uninitialized memory as pixels when libtiff performs a short decode of JPEG-compressed or Group 4 fax TIFF data. The _decodeStrip and _decodeTile buffers can be larger than the bytes written by libtiff, but Pillow converts the expected rows without clearing the unwritten tail. The tile path is affected from 5.3.0 and th | High 8.7 | 19 Oct 2026 |
| CVE-2026-112898 | Pillow is a Python imaging library. From 9.1.0 until 13.0.0, Pillow can disclose uninitialized stack memory when Image.quantize() uses an empty palette. ImagingPaletteCacheUpdate() leaves a local cache array uninitialized when the palette has zero entries, and the conversion path emits those bytes as output pixel indices. An attacker who controls the palette image can obtain stack contents from a | Medium 6.9 | 19 Oct 2026 |
| CVE-2026-112900 | Pillow is a Python imaging library. From 2.6.0 until 13.0.0, Pillow is vulnerable to argument injection when invoking Ghostscript for EPS input. EpsImagePlugin.Ghostscript passes a caller-controlled input filename after -f without converting it to a safe absolute path, so a name beginning with a hyphen can be interpreted as a Ghostscript option. An attacker who controls the filename can inject Gho | Critical 9.2 | 19 Oct 2026 |
| CVE-2026-112901 | Pillow is a Python imaging library. Prior to 13.0.0, Pillow's XBM header parser is vulnerable to regular-expression denial of service. In XbmImageFile._open, when an application calls Image.open() on a small crafted XBM file, XbmImagePlugin applies a backtracking expression to the attacker-controlled header before image dimensions are accepted, stalling a worker for minutes and denying service. Th | Medium 6.9 | 19 Oct 2026 |
| CVE-2026-112891 | Pillow is a Python imaging library. From 9.2.0 until 13.0.0, Pillow performs quadratic copying when saving a GIF with a long comment. _get_global_header() repeatedly copies portions of comment data while assembling the global header, including comments retained from an untrusted input image. An attacker can supply an image with a large GIF comment to an application that saves it as GIF. This can c | Medium 6.9 | 19 Oct 2026 |
| CVE-2026-112892 | Pillow is a Python imaging library. From 4.1.0 until 13.0.0, Pillow's MSP RLE decoder can expand a small file into an unbounded in-memory buffer. The decoder writes run-length output to BytesIO without limiting expansion to the declared image size. An attacker can supply a crafted MSP image to an application that loads its pixels. This can exhaust memory and deny service even when the declared pix | High 8.7 | 19 Oct 2026 |
| CVE-2026-112893 | Pillow is a Python imaging library. From 10.0.0 until 13.0.0, Pillow can free an invalid glyph pointer during FreeType rendering with an active stroker. If FT_Load_Glyph fails, cleanup may call FT_Done_Glyph on an uninitialized or stale glyph variable. An attacker can supply a malformed font as untrusted bytes to an application that draws text with a nonzero stroke width, forcing the glyph-load fa | High 8.2 | 19 Oct 2026 |
| CVE-2026-112894 | Pillow is a Python imaging library. From 5.1.0 until 13.0.0, Pillow takes quadratic time to reserve PDF object identifiers when saving many frames with save_all enabled. PdfParser.next_object_id() repeatedly rebuilds and scans all previously reserved identifiers for every object. An attacker can supply a multi-frame image, including a small APNG with a large declared frame count, to an application | High 8.7 | 19 Oct 2026 |
| CVE-2026-112401 | Pillow is a Python imaging library. From 5.4.0 until 13.0.0, Pillow performs quadratic copying while parsing GIF comments. GifImageFile._seek() repeatedly appends immutable bytes for comment sub-blocks and multiple comment extensions, and frame zero is parsed during Image.open(). An attacker can submit a small-dimension GIF containing many comment extensions to any application that opens the file. | Medium 6.9 | 19 Oct 2026 |
| CVE-2026-112402 | Pillow is a Python imaging library. Prior to 13.0.0, Pillow can double free image memory when ImagingScaleAffine encounters a selective allocation failure. The affected fast path handles Transform.EXTENT or pure scale-and-translate Transform.AFFINE operations with the default NEAREST resampling. The output image allocation must succeed while the additional per-column lookup allocation fails, after | High 8.7 | 19 Oct 2026 |
| CVE-2026-112403 | Pillow is a Python imaging library. Prior to 13.0.0, Pillow's JPEG decoder can write a full-width scanline into a buffer sized for a requested draft scale. ImagingJpegDecode does not verify libjpeg's actual output width and component count after scaling is requested, and an 8-bit lossless SOF3 JPEG decoded by a build linked to libjpeg-turbo 3.x can ignore the requested downscaling geometry. An att | Critical 9.2 | 19 Oct 2026 |
| CVE-2026-112404 | Pillow is a Python imaging library. From 8.1.0 until 13.0.0, Pillow's TIFF tile and RGBA decode paths can read beyond row data produced by libtiff. In _decodeTile and the RGBA unpacker path, when Pillow and libtiff interpret duplicated PhotometricInterpretation or BitsPerSample tags differently, Pillow does not verify that the required input row fits inside the row libtiff produced, while the stri | High 8.8 | 19 Oct 2026 |
| CVE-2026-112405 | Pillow is a Python imaging library. From 12.0.0 until 13.0.0, Pillow's Image.merge() can dereference a null image8 plane. Validation skips the first input band, allowing a 32-bit integer or floating-point image backed by image32 storage to be merged as a narrower multiband image. A crafted IPTC file can reach this path when an application opens and loads it, or a caller can invoke Image.merge() di | High 8.7 | 19 Oct 2026 |
| CVE-2026-112406 | Pillow is a Python imaging library. From 5.1.0 until 13.0.0, Pillow can enter an infinite loop while rewriting PDF pages. PdfParser.rewrite_pages() follows Parent relationships without detecting a cycle in the page tree. An attacker can supply a cyclic PDF to an application that appends an image to that PDF. This can hold the worker at full CPU and deny service. This issue is fixed in version 13.0 | High 8.7 | 19 Oct 2026 |
| CVE-2026-112392 | Pillow is a Python imaging library. Prior to 13.0.0, Pillow's rank-based filters can dereference invalid image storage for a zero-size image. ImagingExpand() allocates a non-empty output and then faults while replicating edges by reading the first pixel from empty input storage; ImagingRankFilter is never reached. An attacker can supply or cause creation of a zero-size image to an application that | High 8.2 | 19 Oct 2026 |
| CVE-2026-112396 | Pillow is a Python imaging library. From 11.3.0 until 13.0.0, Pillow has a heap use-after-free when libtiff rejects a tag while encoding TIFF data to an in-memory buffer. When an application saves attacker-influenced TIFF tags to BytesIO, libtiff can reject a tag during encoding in ImagingLibTiffEncode; the error path then frees the output buffer without closing or clearing the TIFF handle, and la | Medium 5.9 | 19 Oct 2026 |
| CVE-2026-112397 | Pillow is a Python imaging library. Prior to 13.0.0, Pillow's ImageMorph.MorphOp.apply() can access memory before a row buffer for a zero-width image. PPM and PGM input can create an image with width zero, and the native morphology routine indexes outrow[width - 1] without rejecting that geometry. An attacker can supply such an image to an application that applies a morphology operation. This can | High 8.7 | 19 Oct 2026 |
| CVE-2026-112398 | Pillow is a Python imaging library. Prior to 13.0.0, Pillow's FlashPix JPEG-tile decoder can write decoded scanlines beyond the allocated tile buffer. FlashPix (FPX) JPEG decoding selects raw mode LA with two bytes per pixel, while an unrecognized JPEG mode can be decoded as JCS_UNKNOWN with four components, causing ImagingJpegDecode to write four-component scanlines into the two-byte tile buffer. | Critical 9.2 | 19 Oct 2026 |
| CVE-2026-112399 | Pillow is a Python imaging library. From 8.1.0 until 13.0.0, Pillow can allocate an APNG disposal background at the full canvas size before applying the decompression-bomb check. A crafted APNG with a small first frame, a very large declared canvas, and background disposal or first-frame OP_PREVIOUS reaches PngImageFile._seek while Image.open() positions frame zero. The full-canvas allocation occu | High 8.7 | 19 Oct 2026 |
| CVE-2026-112400 | Pillow is a Python imaging library. From 9.2.0 until 13.0.0, Pillow can retain a rejected GIF frame size after a decompression-bomb exception. In GifImageFile._seek, a crafted GIF can leave rejected dimensions stored after Image.DecompressionBombError; if an application catches that exception and continues processing the same image object, later seek or load operations allocate according to those | High 8.7 | 19 Oct 2026 |
| CVE-2026-112393 | Pillow is a Python imaging library. From 2.0.0 until 13.0.0, Pillow has a heap buffer overflow and stale-heap disclosure in _tiffWriteProc when saving compressed TIFF data through libtiff to a target without a usable fileno(), such as BytesIO. The callback sizes its allocation from the prior buffer size instead of the current write position, allowing an attacker-controlled out-of-line TIFF tag or | Critical 9.2 | 19 Oct 2026 |
| CVE-2026-112394 | Pillow is a Python imaging library. Prior to 13.0.0, Pillow's P;2L and P;4L raw decoders can read past the end of an input buffer. ImagingRawDecode calculates a packed-pixel row size, while the unpackers read separately padded bit planes. A caller can supply a buffer and image dimensions whose accepted size is smaller than the unpacker's actual footprint. This can disclose up to three adjacent hea | Medium 6.3 | 19 Oct 2026 |
| CVE-2026-112395 | Pillow is a Python imaging library. From 8.2.0 until 13.0.0, Pillow's tiled-TIFF decoder can read past the tile buffer while copying four-byte pixels. In _decodeTile, libtiff can return a tile allocation smaller than the required row stride multiplied by the tile length, and Pillow's stride-and-copy loop walks beyond that allocation. An attacker can supply a crafted tiled TIFF to an application th | Medium 6.5 | 19 Oct 2026 |
| CVE-2026-112390 | Pillow is a Python imaging library. From 7.2.0 until 13.0.0, Pillow can enter an infinite loop while determining the frame count of a MIC image. MicImageFile inherits TIFF frame traversal, but MicImageFile.tell reports the OLE stream index and its seek() resets TIFF frame state, so an embedded TIFF with at least three IFDs never advances. When an application with olefile installed reads n_frames o | High 8.2 | 19 Oct 2026 |
| CVE-2026-112391 | Pillow is a Python imaging library. From 5.1.0 until 13.0.0, Pillow's PdfParser.get_value() can recurse without a limit while reading nested PDF objects. The parser follows attacker-controlled arrays and dictionaries when an existing PDF is opened for append. An attacker can provide a deeply nested PDF to an application that saves an image with PDF append enabled. This can raise an uncaught Recurs | Medium 6.3 | 19 Oct 2026 |
| CVE-2026-97687 | urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses | High 7.6 | 29 Sep 2026 |
| CVE-2026-97688 | urllib3 is an HTTP client library for Python. From 2.6.2 until 2.8.0, HTTPResponse.stream and HTTPResponse.read_chunked can enter an infinite loop because the Deflate decoder retains trailing bytes as unconsumed input after reaching end-of-stream and repeatedly decodes them without progress. The issue occurs when an untrusted server sends a chunked Deflate response whose decoded body exceeds a pos | Medium 6.9 | 29 Sep 2026 |
| CVE-2026-97689 | urllib3 is an HTTP client library for Python. From 1.10.3 until 2.8.0, the HTTPResponse.read_chunked and HTTPResponse.stream methods can allocate unbounded memory because the streaming chunk parser buffers the chunk-size field until newline or EOF without a length bound. The trigger is that a malicious server returns Transfer-Encoding: chunked followed by a very long run of bytes without a newline | High 8.9 | 29 Sep 2026 |
| CVE-2026-59200 | 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. | High 7.5 | 14 Jul 2026 |
| CVE-2026-59197 | 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 versi | High 8.2 | 14 Jul 2026 |
| CVE-2026-54058 | 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. Thi | High 8.3 | 14 Jul 2026 |
| CVE-2026-59198 | 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. | Medium 6.5 | 14 Jul 2026 |
| CVE-2026-59199 | 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. | High 7.5 | 14 Jul 2026 |
| CVE-2026-59203 | 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. | Medium 5.3 | 14 Jul 2026 |
| CVE-2026-59204 | 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. | High 8.7 | 14 Jul 2026 |
| CVE-2026-59205 | 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. | High 7.5 | 14 Jul 2026 |
| CVE-2026-15308 | The incremental HTML parser (html.parser.HTMLParser) allows for CPU denial-of-service through repeated unterminated markup declarations when processing uncontrolled data. | High 8.7 | 9 Jul 2026 |
| CVE-2026-59890 | setuptools is a package that allows users to download, build, install, upgrade, and uninstall Python packages. Prior to 83.0.0, FileList applied MANIFEST.in exclude, global-exclude, recursive-exclude, and prune directives by matching compiled glob patterns against on-disk file names without Unicode normalization, so on macOS APFS or HFS+ an NFD file name could bypass an NFC exclusion rule and be p | Medium 6.1 | 8 Jul 2026 |
| CVE-2026-55379 | 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. | High 7.5 | 6 Jul 2026 |
| CVE-2026-55380 | 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. | High 7.5 | 6 Jul 2026 |
| CVE-2026-55798 | 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. | Medium 4.5 | 6 Jul 2026 |
| CVE-2026-54059 | 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. | High 7.5 | 6 Jul 2026 |
| CVE-2026-54060 | 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. | High 7.5 | 6 Jul 2026 |
| CVE-2026-4360 | In the Tarfile.extract() function, the filter parameter is not passed properly when extracting hardlinks. An affected system that extracts content from untrusted tar files could end up writing files with an unexpected uid/gid despite the user passing filter='data' to the extract() function. | Low 2.0 | 30 Jun 2026 |
| CVE-2026-0864 | When using the "configparser" module to write configuration files containing multi-line text values with carriage return characters (\r) the resulting file could be injected with unexpected keys and values if the attacker controls the written value. | Medium 4.1 | 23 Jun 2026 |
Original policy
Copied from sorona.xyz on 12 Nov 2026. The summaries on this page are made from it; the live page may have changed since.
Skip to content What this pays This project runs no bounty of its own. sorona.xyz pays you directly on qualified, reproduced findings. Severity │ sorona.xyz pays Critical │ $1,500+ High │ $700+ Medium │ $300+ Low │ $100 / 1 month Claude Max Submit a vulnerability Separately, for a merged upstream patch : $100 - $5,000 Google Patch Rewards pays this project as a Tier 2 target (it qualifies through its OSS-Fuzz integration), for a patch you land upstream and that stays merged, without reverts, for one month. It is paid for the patch, not for the report, and it is rate-limited to three submissions a month. Sanctions and territory exclusions apply. CVE history 14 Last 12 months 148 Lifetime Memory safety 35 % Denial of service 22 % Parsing/validation 18 % Injection 13 % Latest advisories Loading the feed Overview CPython is the reference implementation of the Python language: the interpreter that runs Python code plus the batteries-included standard library that ships with it. Security reports are handled by the Python Security Response Team (PSRT), a small, trusted group of core developers who triage findings privately and coordinate fixes and CVEs. This project runs a vulnerability disclosure program with no bounty of its own. Report through sorona.xyz and we pay you directly on qualified, reproduced findings, with payouts scaling up to 2x the base for hard, chained bugs. In scope The CPython interpreter core: the eval loop, bytecode compiler, memory management, garbage collector, and object model, where a real-world exploitable flaw exists. Standard-library modules that parse or handle untrusted input: http, http.client, http.server, urllib, urllib.parse, email, ssl, ftplib, and smtplib. XML parsers (xml.sax, xml.dom, xml.etree.ElementTree, xml.parsers.expat) for XXE, entity-expansion, and billion-laughs style bugs. Archive and compression handling (zipfile, tarfile, gzip, bz2, lzma) for path traversal, symlink extraction, and decompression bombs, plus json, cgi, wsgiref, ipaddress, hashlib, and hmac. C-level accelerator and extension modules shipped with CPython (_ssl, _hashlib, _socket, _pickle, _json, _elementtree/expat, _ctypes, _sqlite3, and the zlib bindings) for memory-safety defects. String, bytes, and codec handling, plus path handling (os.path, pathlib) and subprocess argument or quoting handling where it enables injection beyond documented behavior. pip as distributed via PyPI, which the Python Security Response Team accepts alongside CPython. Platform-specific issues only where the platform meets a PEP 11 support tier. Out of scope Documented dangerous APIs used as designed: pickle, marshal, shelve, eval, exec, and ctypes, all documented to execute or expose arbitrary code or memory. Bugs reachable only through code, configurations, or deployments unlikely to occur in a real production program. Severity is scored from expected use, not the worst case. Unhandled exceptions treated on their own as an expected part of control flow. Flaws in bundled third-party dependencies such as zlib, OpenSSL, Tcl/Tk, or libexpat, unless CPython's own usage undermines their safe use. Experimental or provisional features, even in a stable release, and pre-release (alpha, beta, RC) or in-development code. Python versions past end-of-life, since only releases in bugfix or security status are accepted. Third-party redistributions of Python or pip and PyPI package vulnerabilities, plus issues that require the attacker to already control launch arguments, environment variables, or on-disk files. Most-valued findings Memory-safety bugs in the interpreter and C extensions: buffer overflows, out-of-bounds read or write, use-after-free, and integer overflow that corrupts memory. Remote or arbitrary code execution reachable from untrusted input through an API documented as safe. Path traversal and arbitrary file write or overwrite via zip/tar extraction or predictable tempfiles, and XXE or entity-expansion denial of service in the XML parsers. TLS or SSL certificate and hostname-verification bypasses and weak default crypto in the ssl module. Injection reachable beyond documented behavior: HTTP header or CRLF request injection, SQL through the sqlite bindings, and command or argument injection via subprocess or shutil. Algorithmic-complexity or decompression-bomb denial of service triggerable with reasonably sized input, plus information disclosure across a trust boundary. Program rules Submit through sorona.xyz. This project runs no bounty of its own; we validate, coordinate disclosure with the maintainers, and pay you directly. Report privately first and give the PSRT time to fix before any public discussion Include a minimal proof-of-concept with clear pass or fail indicators and the versions tested Show a realistic, exploitable path rather than a theoretical or purely lateral advantage Keep availability findings to reasonably sized inputs that a normal deployment would accept Submit reports in plain text and, where possible, include a minimal candidate patch Do not access, modify, or exfiltrate data belonging to other users or systems Disclosure Coordinated disclosure applies: the PSRT triages the report, assigns a CVE through the PSF CNA once accepted, and publishes an advisory with attribution only after a fix lands publicly, targeting the industry-standard 90-day window. Please hold public details until the advisory is out. Safe harbor Sorona will not pursue legal action against you for good-faith research submitted to us in line with this policy. We cannot speak for the upstream project, its vendor, or any third party, and we do not grant authorization on their behalf. You are responsible for understanding and following the laws that apply to you, wherever you are, and for staying within any scope the project has defined. Submit a vulnerability