Pillow: Infinite loop in MIC n_frames when the embedded TIFF
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 or saves all frames from a crafted MIC file, the non-advancing traversal can hold a worker at full CPU indefinitely. This issue is fixed in version 13.0.0.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-112390
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 6 Nov 2026, 02:34 UTC · Revision 1
Source evidence
Pillow: Infinite loop in MIC n_frames when the embedded TIFF
core-osv · Original sourcePublished 19 Oct 2026, 20:35 UTC
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 or saves all frames from a crafted MIC file, the non-advancing traversal can hold a worker at full CPU indefinitely. This issue is fixed in version 13.0.0.
osv:CVE-2026-112390
Complete source record
{
"id": "d6376cee329bfd48be9753a0a0acb690df3180ab7e27fff451592a0e0e51e2cd",
"url": "https://osv.dev/vulnerability/CVE-2026-112390",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Pillow: Infinite loop in MIC n_frames when the embedded TIFF",
"summary": "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 or saves all frames from a crafted MIC file, the non-advancing traversal can hold a worker at full CPU indefinitely. This issue is fixed in version 13.0.0.",
"evidence": "osv:CVE-2026-112390",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-112390",
"aliases": [
"BIT-pillow-2026-112390",
"CVE-2026-112390",
"GHSA-22hg-r758-rrw9"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/python-pillow/pillow",
"type": "GIT",
"events": [
{
"introduced": "2bd74943fb9f320def6c066e732b701d1c15f677"
},
{
"fixed": "293218ad059d994baf1777d882911bed6a49704a"
},
{
"fixed": "26cb3ed061173b817b9ee4b6f507cb0e1e293218"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:python:pillow:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "7.2.0"
},
{
"fixed": "13.0.0"
}
],
"source": "CPE_RANGE"
},
{
"range": [
{
"fixed": "26cb3ed061173b817b9ee4b6f507cb0e1e293218"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "293218ad059d994baf1777d882911bed6a49704a"
}
],
"source": "REFERENCES_TAG",
"original_tag": "13.0.0"
}
]
}
}
],
"versions": [
"12.3.0",
"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"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-112390.json"
}
}
],
"modified": "2026-10-28T02:30:46.015926814Z",
"provider": "osv",
"references": [
"https://github.com/python-pillow/Pillow/releases/tag/13.0.0",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/112xxx/CVE-2026-112390.json",
"https://github.com/python-pillow/Pillow/security/advisories/GHSA-22hg-r758-rrw9",
"https://nvd.nist.gov/vuln/detail/CVE-2026-112390",
"https://github.com/python-pillow/Pillow/commit/26cb3ed061173b817b9ee4b6f507cb0e1e293218"
],
"provider_metadata": {
"cwe_ids": [
"CWE-835"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/112xxx/CVE-2026-112390.json"
}
},
"related_cves": [
{
"value": "CVE-2026-112390",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 514314,
"published_at": "2026-10-19T20:35:39.189+00:00"
}