Skip to content
Heist/ feed
Back to feed
High

Pillow: Heap out-of-bounds write in Pillow `ImageFilter.RankFilter` via integer overflow in `ImagingExpand`

Type: advisorySources: OSV

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.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-59197
Confirmed fixed CVEs
Not specified
Updated in this feed
6 Nov 2026, 01:21 UTC · Revision 1

Source evidence

Pillow: Heap out-of-bounds write in Pillow `ImageFilter.RankFilter` via integer overflow in `ImagingExpand`

core-osv · Original source

Published 14 Jul 2026, 16:25 UTC

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.

osv:CVE-2026-59197
Complete source record
{
  "id": "b49e9be0e30d994f99eb09157b012da0052f898dec1a8cbe0a7159055bf82403",
  "url": "https://osv.dev/vulnerability/CVE-2026-59197",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Pillow: Heap out-of-bounds write in Pillow `ImageFilter.RankFilter` via integer overflow in `ImagingExpand`",
    "summary": "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.",
    "evidence": "osv:CVE-2026-59197",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-59197",
      "aliases": [
        "BIT-pillow-2026-59197",
        "CVE-2026-59197",
        "GHSA-xj96-63gp-2gmr",
        "PYSEC-2026-3454"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/python-pillow/pillow",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "bb1d8e8ab8d29048624d96e3ee53cecf7c13d13d"
                },
                {
                  "fixed": "cce3bdb867c77a3420261ed1bfdb6b0787ec8fc1"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:python:pillow:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "12.3.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "range": [
                      {
                        "fixed": "cce3bdb867c77a3420261ed1bfdb6b0787ec8fc1"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "bb1d8e8ab8d29048624d96e3ee53cecf7c13d13d"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "12.3.0"
                  }
                ]
              }
            }
          ],
          "versions": [
            "12.2.0",
            "12.1.0",
            "12.0.0",
            "11.3.0",
            "11.2.1",
            "11.1.0",
            "11.0.0",
            "10.4.0",
            "10.3.0",
            "10.2.0",
            "10.1.0",
            "10.0.0",
            "9.5.0",
            "9.4.0",
            "9.3.0",
            "9.2.0",
            "9.1.0",
            "9.0.0",
            "8.4.0",
            "8.3.0",
            "8.2.0",
            "8.1.0",
            "8.0.0",
            "7.2.0",
            "7.1.0",
            "7.0.0",
            "6.2.0",
            "6.1.0",
            "6.0.0",
            "5.4.0",
            "5.3.0",
            "5.2.0",
            "5.1.0",
            "5.0.0",
            "4.3.0",
            "4.2.0",
            "4.1.0",
            "4.0.0",
            "4.0.0a",
            "3.4.0",
            "3.3.0",
            "3.2.0",
            "3.1.0",
            "3.1.0-rc1",
            "2.9.0",
            "2.9.0.dev2",
            "2.9.0.dev1",
            "2.9.0.dev0",
            "2.8.1",
            "2.8.0",
            "2.7.0",
            "2.5.0",
            "2.3.0",
            "2.2.1",
            "2.2.0",
            "2.1.0",
            "2.0.0",
            "1.7.8",
            "1.7.7",
            "1.2",
            "1.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-59197.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:45.586822914Z",
      "provider": "osv",
      "references": [
        "https://github.com/python-pillow/Pillow/releases/tag/12.3.0",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/59xxx/CVE-2026-59197.json",
        "https://github.com/python-pillow/Pillow/security/advisories/GHSA-xj96-63gp-2gmr",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-59197",
        "https://github.com/python-pillow/Pillow/commit/cce3bdb867c77a3420261ed1bfdb6b0787ec8fc1",
        "https://github.com/python-pillow/Pillow/pull/9695"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-190",
          "CWE-787"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/59xxx/CVE-2026-59197.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-59197",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 513804,
  "published_at": "2026-07-14T16:25:23.52+00:00"
}