Pillow: Heap out-of-bounds write in Pillow `ImageFilter.RankFilter` via integer overflow in `ImagingExpand`
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 sourcePublished 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"
}