Skip to main content

OpenImageIO CVE-2026-59156

| EUVDEUVD-2026-83121 MEDIUM
Uncontrolled Recursion (CWE-674)
2026-09-18 GitHub_M
6.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Craft FITS file with endless headerless blocks
  2. Delivery
    Deliver file to OpenImageIO-based app/pipeline
  3. Exploit
    Victim opens/processes the image
  4. Execution
    Unbounded recursion in read_fits_header()
  5. Impact
    Stack exhaustion crashes process (DoS)

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Recursion depth limits
Exploitation Conditions

Exploitation requires that a target application or service using OpenImageIO (prior to 3.0.20.0, 3.1.15.0, or 3.2.0.3-beta1) reads/parses an attacker-supplied FITS-format file. The specific trigger is a FITS stream containing consecutive 2880-byte header blocks that omit the mandatory END keyword, causing FitsInput::read_fits_header() in src/fits.imageio/fitsinput.cpp to recurse without a depth bound. Limiting factors: the victim must actually open/ingest the crafted file (UI:R), impact is limited to a crash of the parsing process (availability only, no code execution or data exposure), and installations on fixed versions are not affected. Practical exposure depends on whether the deployment accepts untrusted image uploads or processes external FITS assets automatically.

Impact

This is a genuine but bounded-severity denial-of-service issue, not a high-priority remote-code-execution threat. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H) and CWE-674 (Uncontrolled Recursion) agree with the description: a crafted FITS image file drives FitsInput::read_fits_header() into unbounded self-recursion, exhausting the application stack and crashing the process. Impact is availability-only (C:N/I:N) - no data disclosure, no code execution, no scope change. The network vector (AV:N) is nominal for a file-parsing library: 'network' realistically means the crafted file is delivered to an application/service that embeds OpenImageIO, and UI:R correctly reflects that a user or automated pipeline must actually open/process the file. No EPSS score, no CISA KEV listing, and no public exploit code are provided in the input, so exploitation status is 'no public exploit identified at time of analysis.' There is no SSVC data supplied. Net: a real, easily-triggered crash that is worth patching in VFX/render pipelines, but the absence of confidentiality/integrity impact and of any exploitation signal keeps it a moderate-priority hygiene fix rather than an emergency.

Exploit ScenarioDerived

An attacker crafts a malicious FITS file consisting of consecutive 2880-byte header blocks that never contain the mandatory END keyword, then delivers it to any application, render farm, or asset-ingestion service that uses OpenImageIO to read images. When the file is opened, read_fits_header() recurses without a depth bound until the stack is exhausted and the process crashes. No public proof-of-concept is referenced, but the trigger is precisely described in the advisory and the fix diff, making reproduction straightforward.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 18, 2026

Stack exhaustion in OpenImageIO's FITS image reader (all releases prior to 3.0.20.0, 3.1.15.0, and 3.2.0.3-beta1) lets a crafted FITS stream crash a parsing process by driving FitsInput::read_fits_header() into unbounded recursion. The trigger is a stream of consecutive 2880-byte header blocks that never contain the mandatory END keyword, so each block causes another self-call until the application stack is consumed; remote, unauthenticated attackers can deliver the payload but successful exploitation requires the victim to open or ingest the file (UI:R), and the resulting impact is availability-only with no code execution or data disclosure. No public exploit code or confirmed active exploitation has been identified at time of analysis, and vendor-released fixes are available.

RemediationAI

Upgrade to a vendor-fixed release: 3.0.20.0, 3.1.15.0, or 3.2.0.3-beta1, which replace the recursive header parse with an iterative loop capped at 10,000 header blocks (upstream fix in PR #5248, commit b0de7d40d06eb4abc7ef14c1321a1a2a976d8c1c; advisory GHSA-xvwr-x6ch-v2fq). If immediate upgrade is not possible, the most effective compensating control is to stop passing untrusted FITS data to affected parsers - reject .fits/.fit/.fts uploads at the application boundary or route them through an external converter before OpenImageIO touches them - accepting that legitimate FITS workflows will be disrupted. Alternatively, disable the FITS format in the OpenImageIO plugin path so the parser is never reached, at the cost of losing all FITS support. Running the image-parsing stage in a dedicated worker process with a bounded stack (e.g. ulimit -s) and a supervisor that restarts on crash limits the blast radius to a single worker, though low stack limits can cause spurious failures on legitimate deeply nested formats. Because exploitation requires the victim to open the crafted file, blocking automated ingestion of externally supplied FITS assets from email, uploads, or shared storage further reduces exposure.

Affected VersionsENISA

OpenImageIO 3.1.0.0, < 3.1.15.0
OpenImageIO 3.2.0.0-dev, < 3.2.0.3-beta1
OpenImageIO < 3.0.20.0

Affected Packages

euvd openimageio fix: 3.0.20.0, 3.1.15.0
euvd openimageio_3_2_0_0_dev fix: 3.2.0.3-beta1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

OpenImageIO is a widely used C++ image I/O toolset for VFX, animation, and scientific pipelines, and its FITS plugin at src/fits.imageio/fitsinput.cpp implements parsing of the FITS (Flexible Image Transport System) container format originally from astronomy. A FITS header is composed of 2880-byte blocks made up of 80-character cards; the header is terminated by a mandatory END keyword card, and one or more header blocks may precede image data. In affected builds, when a block was processed without encountering END, FitsInput::read_fits_header() called itself to read the next block instead of looping, producing unbounded recursion - the classic CWE-674 (Uncontrolled Recursion) pattern. An attacker who supplies a FITS file consisting of an arbitrarily long run of well-formed-looking 2880-byte header blocks with no END card forces one stack frame per block; memory is consumed until a stack overflow aborts the process. The CPE cpe:2.3:a:academysoftwarefoundation:openimageio:*:*:*:*:*:*:*:* covers the entire pre-fix code line. The upstream remediation (PR #5248, commit b0de7d40d06eb4abc7ef14c1321a1a2a976d8c1c) restructures the parser into an iterative loop bounded to a maximum of 10,000 header blocks, a bounded-loop mitigation rather than a semantic enforcement of the END keyword.

Know when Openimageio gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
vuln.today AI 6.5 MEDIUM

Crafted file processed by a networked consumer (AV:N) with no auth (PR:N) but requiring the victim to open it (UI:R); unbounded recursion yields a process crash - availability-only (A:H, C/I:N).

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

1
Patch available
Sep 18, 2026 - 17:17 EUVD

DescriptionCVE.org

OpenImageIO is a toolset for reading, writing, and manipulating image files of any image file format relevant to VFX / animation. Prior to 3.0.20.0, 3.1.15.0, and 3.2.0.3-beta1, A crafted fits stream containing consecutive 2880-byte header blocks without the mandatory end keyword makes fitsinput::read_fits_header() call itself without a depth bound. repeated recursive parsing exhausts the application stack, resulting in denial of service. The affected implementation is identified by src/fits.imageio/fitsinput.cpp, FitsInput::read_fits_header(), END keyword, and 2880-byte FITS header blocks, which define the relevant source path, functions, state, and trigger. This issue is fixed in versions 3.0.20.0, 3.1.15.0, and 3.2.0.3-beta1.

Threat Intelligence Overview

EPSS Score
0.3%
Top 74% exploitable
Prevalence
Medium
core VFX/animation image I/O library, ubiquitous in media pipelines but niche elsewhere
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2023-42299 CRITICAL POC
9.8 Nov 02

Buffer Overflow vulnerability in OpenImageIO oiio v.2.4.12.0 allows a remote attacker to execute arbitrary code and caus

CVE-2022-41838 CRITICAL POC
9.8 Dec 22

A code execution vulnerability exists in the DDS scanline parsing functionality of OpenImageIO Project OpenImageIO v2.4.

CVE-2022-41837 CRITICAL POC
9.8 Dec 22

An out-of-bounds write vulnerability exists in the OpenImageIO::add_exif_item_to_spec functionality of OpenImageIO Proje

CVE-2022-41794 CRITICAL POC
9.8 Dec 22

A heap based buffer overflow vulnerability exists in the PSD thumbnail resource parsing code of OpenImageIO 2.3.19.0. Ra

CVE-2022-41639 CRITICAL POC
9.8 Dec 22

A heap based buffer overflow vulnerability exists in tile decoding code of TIFF image parser in OpenImageIO master-branc

CVE-2022-38143 CRITICAL POC
9.8 Dec 22

A heap out-of-bounds write vulnerability exists in the way OpenImageIO v2.3.19.0 processes RLE encoded BMP images. Rated

CVE-2022-41649 CRITICAL POC
9.1 Dec 22

A heap out of bounds read vulnerability exists in the handling of IPTC data while parsing TIFF images in OpenImageIO v2.

CVE-2023-42295 HIGH POC
8.8 Oct 23

An issue in OpenImageIO oiio v.2.4.12.0 allows a remote attacker to execute arbitrary code and cause a denial of service

CVE-2022-43602 HIGH POC
8.1 Dec 22

Multiple code execution vulnerabilities exist in the IFFOutput::close() functionality of OpenImageIO Project OpenImageIO

CVE-2022-43601 HIGH POC
8.1 Dec 22

Multiple code execution vulnerabilities exist in the IFFOutput::close() functionality of OpenImageIO Project OpenImageIO

CVE-2022-43600 HIGH POC
8.1 Dec 22

Multiple code execution vulnerabilities exist in the IFFOutput::close() functionality of OpenImageIO Project OpenImageIO

CVE-2022-43599 HIGH POC
8.1 Dec 22

Multiple code execution vulnerabilities exist in the IFFOutput::close() functionality of OpenImageIO Project OpenImageIO

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy