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 previously freed images. Applications that configure alignment and export images to Arrow can therefore disclose one user's pixels or other process memory to another user. This issue is fixed in version 13.0.0.
PUBLISHED5.2CWE-226CWE-908
Pillow: Arrow export leaks stale heap memory when PILLOW_ALIGNMENT > 1
Problem type
- CWE-226: Sensitive Information in Resource Not Removed Before Reuse
- CWE-908: Use of Uninitialized Resource
Affected products
python-pillow
Pillow
>= 11.2.1, < 13.0.0 - AFFECTED
References
https://github.com/python-pillow/Pillow/security/advisories/GHSA-654x-cwwv-5j9c
https://github.com/python-pillow/Pillow/security/advisories/GHSA-654x-cwwv-5j9c
https://github.com/python-pillow/Pillow/pull/10172
https://github.com/python-pillow/Pillow/pull/10172
https://github.com/python-pillow/Pillow/commit/19f64946eb247b973dd4560be7dea3bf979d2e6a
https://github.com/python-pillow/Pillow/commit/19f64946eb247b973dd4560be7dea3bf979d2e6a
https://github.com/python-pillow/Pillow/releases/tag/13.0.0
https://github.com/python-pillow/Pillow/releases/tag/13.0.0
JSON source
https://cveawg.mitre.org/api/cve/CVE-2026-114501Click to expand
{
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"cveMetadata": {
"cveId": "CVE-2026-114501",
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"dateUpdated": "2026-10-21T21:17:09.748Z",
"dateReserved": "2026-10-21T16:15:06.491Z",
"datePublished": "2026-10-21T21:17:09.748Z",
"state": "PUBLISHED"
},
"containers": {
"cna": {
"providerMetadata": {
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M",
"dateUpdated": "2026-10-21T21:17:09.748Z"
},
"title": "Pillow: Arrow export leaks stale heap memory when PILLOW_ALIGNMENT > 1",
"descriptions": [
{
"lang": "en",
"value": "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 previously freed images. Applications that configure alignment and export images to Arrow can therefore disclose one user's pixels or other process memory to another user. This issue is fixed in version 13.0.0."
}
],
"affected": [
{
"vendor": "python-pillow",
"product": "Pillow",
"versions": [
{
"version": ">= 11.2.1, < 13.0.0",
"status": "affected"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"lang": "en",
"description": "CWE-226: Sensitive Information in Resource Not Removed Before Reuse",
"cweId": "CWE-226",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"lang": "en",
"description": "CWE-908: Use of Uninitialized Resource",
"cweId": "CWE-908",
"type": "CWE"
}
]
}
],
"references": [
{
"url": "https://github.com/python-pillow/Pillow/security/advisories/GHSA-654x-cwwv-5j9c",
"name": "https://github.com/python-pillow/Pillow/security/advisories/GHSA-654x-cwwv-5j9c",
"tags": [
"x_refsource_CONFIRM"
]
},
{
"url": "https://github.com/python-pillow/Pillow/pull/10172",
"name": "https://github.com/python-pillow/Pillow/pull/10172",
"tags": [
"x_refsource_MISC"
]
},
{
"url": "https://github.com/python-pillow/Pillow/commit/19f64946eb247b973dd4560be7dea3bf979d2e6a",
"name": "https://github.com/python-pillow/Pillow/commit/19f64946eb247b973dd4560be7dea3bf979d2e6a",
"tags": [
"x_refsource_MISC"
]
},
{
"url": "https://github.com/python-pillow/Pillow/releases/tag/13.0.0",
"name": "https://github.com/python-pillow/Pillow/releases/tag/13.0.0",
"tags": [
"x_refsource_MISC"
]
}
],
"metrics": [
{}
]
}
}
}