☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 8.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:H 🐛 CWE-787
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-63638

CVE-2026-63638 Out-of-Bounds Access in OpenImageIO
📅 PUBLISHED: 2026-09-18 00:00 UTC 🔄 UPDATED: 2026-10-02 23:42 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.46%
👁️
0.46% probability
11.6× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1203
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Affected: Openimageio — upgrade to patched release
CVSS VECTOR BREAKDOWN 8.3
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: R User Interaction Required
S: U Scope Unchanged
C: L Confidentiality Low
I: H Integrity High
A: H Availability High
8.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-63638 is a heap-based out-of-bounds write (CWE-787) in OpenImageIO, a widely used image I/O toolkit for VFX and animation pipelines. A crafted Cineon image that declares an unsupported component bit depth of 26 causes CineonInput::open() to allocate a 32-bit image specification while the underlying libcineon decoder writes data sized for an 8-byte-per-component value, allowing attacker-controlled bytes to be written past the caller's 4-byte-per-pixel buffer. With a CVSS 3.1 base score of 8.3, exploitation requires user interaction (opening a malicious image) but yields high integrity and availability impact, making it a serious risk for render farms, media asset pipelines, and any service that processes untrusted image input.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

OpenImageIO is a library and toolset for reading, writing, and manipulating image files relevant to VFX and animation workflows. The Cineon image format plugin is implemented at src/cineon.imageio/cineoninput.cpp, and this CVE concerns three components within it: CineonInput::open(), CineonInput::read_native_scanline(), and the helper ComponentDataSize().

The vulnerability arises from a type/size mismatch between two layers of the image decoding stack:

  1. OpenImageIO layer: A crafted Cineon file can declare a component bit depth of 26 bits. This value is not a supported bit depth in the normal integer set (e.g., 8, 10, 16, 32). When CineonInput::open() parses the file header and encounters bit depth 26, it maps the value to a 32-bit ImageSpec. ImageSpec is OpenImageIO's structure describing image dimensions, channel count, and per-channel data formats. A 32-bit spec means each channel component is assumed to occupy 4 bytes per pixel.

  2. libcineon layer: The underlying libcineon decoder does not treat bit depth 26 as an error. Instead, it maps the unsupported depth to an 8-byte value. Consequently, the buffer stride and element size expected by libcineon do not match the 4-byte-per-pixel buffer that OpenImageIO allocated based on the 32-bit ImageSpec.

  3. Out-of-bounds write: During CineonInput::read_native_scanline(), the decoder writes a scanline of pixel data using its 8-byte component size into a buffer sized for 4-byte components. Because the write exceeds the allocated caller buffer, attacker-controlled data is written beyond the buffer boundary, producing a heap out-of-bounds write and memory corruption.

The root cause is a failure to validate or normalize the declared bit depth when the file header is parsed, and a failure to reconcile the differing interpretations of "bit depth 26" between OpenImageIO and libcineon before a buffer is allocated and filled. ComponentDataSize() is the helper implicated in determining component element size, which is where the 4-byte vs. 8-byte discrepancy manifests. CWE-787 (Out-of-bounds Write) is the assigned weakness, and the subtype is a heap-based out-of-bounds write driven by an integer/size mismatch (a classic "declared size vs. actual write size" flaw).

Attack surface: any code path that opens a Cineon file with OpenImageIO — command-line tools like oiiotool/iconvert, library consumers in DCC applications (e.g., compositing and rendering software), automated asset ingestion services, thumbnail generators, and format-conversion microservices. The vulnerability is network-deliverable in the sense that the malicious file can be transmitted to a victim, but reliable code execution requires the victim (or an automated pipeline) to open the file, as reflected by UI:R in the CVSS vector.

Exploitation Scenarios

No public proof-of-concept or exploit code is known at the time of writing; the attack chain below is inferred from the vulnerability class and the NVD description. Where specific identifiers are used, they appear verbatim in the NVD description.

Step 1 — Reconnaissance / target identification. An adversary identifies a target that processes image files with OpenImageIO, such as a VFX studio render farm, an asset management or transcoding service, a media ingestion API, or a desktop application that embeds the library for Cineon support. Public package metadata, error pages, or job-submission interfaces may reveal the product and version. The attacker does not need authentication to craft the file (PR:N), only the ability to get it opened (UI:R).

Step 2 — Triggering the flaw class. The attacker constructs a Cineon image whose header declares an unsupported component bit depth of 26. This is the specific trigger identified in the NVD description. When CineonInput::open() processes the file, it accepts the 26-bit declaration and produces a 32-bit ImageSpec; libcineon separately maps the unsupported depth to an 8-byte value. No public tool is required to author the malformed header — an attacker can modify a valid Cineon file's bit-depth field or synthesize a minimal one.

Step 3 — Payload / execution method. The attacker delivers the crafted file through the normal business channel: an email attachment, a shared asset repository, a job/queue submission, an upload form, or a URL. When the victim or pipeline invokes CineonInput::read_native_scanline(), the mismatch causes the decoder to write 8-byte-per-component data into a buffer allocated as 4 bytes per pixel. The bytes written past the buffer boundary derive from attacker-controlled file contents, so the attacker controls the out-of-bounds data. Because the overflow length is driven by the number of components and scanline width, the attacker can tune the overflow volume. At the vulnerability-class level, a controlled heap out-of-bounds write of this kind is typically leveraged to corrupt adjacent heap metadata or objects, and with sufficient control may be steered toward code execution; the described impact of "memory corruption" and the CVSS I:H/A:H ratings are consistent with that.

Step 4 — Post-exploitation impact. Successful corruption of the heap can crash the process (availability) or be chained to modify adjacent data structures (integrity). In a pipeline context, compromising a worker process that handles untrusted submissions could allow lateral movement within a render or storage cluster. The CVSS vector rates confidentiality impact as Low (C:L) — suggestive of limited information disclosure from memory corruption — and integrity/availability as High.

Impact Assessment

  • Business impact: Organizations running VFX, animation, media, or any pipeline that ingests third-party image assets with OpenImageIO are exposed. A successful exploit can cause crashes (throttling availability of render or conversion services) or, in the worst case, memory corruption exploitable for code execution within a trusted worker process.
  • Affected systems: Anything linking an affected version of OpenImageIO and processing untrusted Cineon files — CLI tools (oiiotool, iconvert), DCC plugins, transcoding services, asset management systems, and build-time image processing in CI.
  • Blast radius: Medium to high in media-focused environments where untrusted image submission is routine; lower in locked-down environments where all image input is trusted and provenance-controlled.
  • CVSS 3.1 subscores: AV:N (network-deliverable payload), AC:L (no special conditions beyond the crafted header), PR:N (no privileges required), UI:R (victim must open the file), S:U (impact confined to the vulnerable component), C:L, I:H, A:H. Base score 8.3 (High).
  • EPSS: Not yet scored by FIRST.org at the time of writing. No CISA KEV listing. PoC: None. Nuclei template: No.

Detection Guidance

Detection should focus on (a) crafted Cineon files declaring bit depth 26 or otherwise anomalous component depths, and (b) process behavior (crashes, heap errors) in OpenImageIO-based tooling. The rules below are behavior- and content-oriented heuristics; because no public PoC exists, they target the vulnerability class and IOC patterns rather than a known signature.

Sigma Rule

title: OpenImageIO Cineon Bit Depth Out-of-Bounds Write Attempt
id: 7c2f1a44-9b3e-4d0a-a6c1-6b2e5f9d8a10
status: experimental
description: Detects crashes or abnormal terminations of OpenImageIO-based tools (oiiotool, iconvert) when processing Cineon files, consistent with CVE-2026-63638 heap OOB write.
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-63638
author: valtersit.com
date: 2026/01/01
logsource:
  category: process_creation
  product: linux
detection:
  selection_img:
    Image|endswith:
      - '/oiiotool'
      - '/iconvert'
      - '/idiff'
  selection_cineon:
    CommandLine|contains: '.cin'
  selection_crash:
    CommandLine|contains:
      - 'heap-buffer-overflow'
      - 'AddressSanitizer'
      - 'Segmentation fault'
  condition: selection_img and (selection_cineon or selection_crash)
falsepositives:
  - Legitimate conversion of very large Cineon assets
  - Debug builds with sanitizers enabled
level: medium
tags:
  - attack.t1203
  - cve.2026.63638

YARA Rule

rule CVE_2026_63638_Cineon_BitDepth26
{
    meta:
        author = "valtersit.com"
        description = "Detects crafted Cineon image headers declaring an unsupported component bit depth of 26 (CVE-2026-63638)"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-63638"
        date = "2026-01-01"
        severity = "high"

    strings:
        $magic = { 80 2A 5F D7 }
        $cineon_magic2 = { D7 5F 2A 80 }

    condition:
        ($magic at 0 or $cineon_magic2 at 0) and
        uint32be(0) == 0x802A5FD7 and
        filesize < 50MB
}

Note: A Cineon file begins with the 4-byte magic 0x802A5FD7. Because the bit-depth field offset is implementation-specific to the header layout and is not documented in the provided NVD description, a positional byte-level match for the value 26 is intentionally omitted to avoid false precision. This rule identifies candidate Cineon files for downstream validation with a hardened parser or sanitizer.

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-63638 OpenImageIO Cineon Bit Depth 26 Heap OOB Write Attempt"; flow:established,to_server; http.method; content:"POST"; http.uri; content:".cin"; nocase; file_data; content:"|80 2A 5F D7|"; depth:4; filestore; sid:202663638; rev:1; metadata:cve CVE-2026-63638, created_at 2026_01_01; classtype:attempted-user; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-63638;)

Elastic Detection

process where process.name in ("oiiotool", "iconvert", "idiff") and
  (process.command_line like~ "*.cin*" or
   process.args like~ "*.cin*") and
  process.exit_code != 0

Rationale: OpenImageIO command-line tools that exit non-zero shortly after being invoked on a .cin argument are a strong behavioral indicator of a malformed Cineon file triggering the parsing/reading failure path described in CVE-2026-63638.

Splunk SPL Query

index=endpoint OR index=linux_sysmon
(process_name IN ("oiiotool","iconvert","idiff") OR process_image="*oiiotool*")
| search (command_line="*.cin*" OR command_line="*.cineon*")
| stats count min(_time) as first_seen max(_time) as last_seen
        values(command_line) as commands
        values(process_name) as procs
        by host user
| where count > 0
| convert ctime(first_seen) ctime(last_seen)

Wazuh OSSEC Rule

<group name="openimageio,cve-2026-63638,">
  <rule id="1006638" level="10">
    <decoded_as>json</decoded_as>
    <field name="process.name">oiiotool|iconvert|idiff</field>
    <field name="process.command_line">\.cin</field>
    <description>CVE-2026-63638: OpenImageIO processing Cineon file - possible heap out-of-bounds write</description>
    <mitre>
      <id>T1203</id>
    </mitre>
    <group>attack,cve_2026_63638,</group>
  </rule>
  <rule id="1006639" level="12">
    <decoded_as>json</decoded_as>
    <field name="process.name">oiiotool|iconvert|idiff</field>
    <regex>heap-buffer-overflow|AddressSanitizer|SIGSEGV</regex>
    <description>CVE-2026-63638: OpenImageIO crash consistent with crafted Cineon bit depth 26</description>
    <mitre>
      <id>T1203</id>
    </mitre>
    <group>attack,cve_2026_63638,</group>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source). The NVD description states the issue "is fixed in versions 3.0.21.0, 3.1.16.0, and 3.2.0.3-beta1," but no vendor advisory, commit, or source artifact was available to corroborate a patch; treat upgrades as unverified until a signed release is confirmed.

  1. Immediate mitigations

    • Block or quarantine Cineon (.cin) files from untrusted sources at the email gateway, upload endpoint, and asset-ingestion service.
    • If Cineon input is not business-required, disable the format in OpenImageIO builds or remove the plugin from processing pipelines.
    • Enforce least privilege for pipelines and workers that open untrusted image files; run them in a sandbox or container with no access to shared credentials or clusters.
    • Enable OpenImageIO's format filtering/preferences to restrict accepted formats where supported, and front-line validation of image headers before processing.
  2. Patch / upgrade steps

    • Upgrade to OpenImageIO 3.0.21.0, 3.1.16.0, or 3.2.0.3-beta1 (per the NVD description) as soon as a signed vendor release is confirmed. Because patch confidence is 0/4, verify release integrity and changelogs before deployment.
    • Rebuild and redeploy any vendored or statically linked copies of the library; OpenImageIO is frequently bundled inside DCC tools and container images.
    • Regenerate SBOMs and rescan container images and CI artifacts after upgrading.
  3. Long-term hardening

    • Treat all image input as untrusted: fuzz the Cineon parser (and other format plugins) with libFuzzer/AFL and ASan in CI.
    • Add strict validation/normalization of declared bit depths and reconcile OpenImageIO's ImageSpec expectations with libcineon's actual write sizes at parse time.
    • Adopt memory-safe decoding boundaries (bounds checks in read_native_scanline-class functions) and compile with -D_FORTIFY_SOURCE, ASan/Valgrind in test, and hardened allocators in production.
    • Monitor upstream OpenImageIO releases and subscribe to vendor advisories for the three affected branches.

References

Threat actor / in-the-wild note: No threat actor campaigns, exploit-in-the-wild evidence, public proof-of-concept, or Nuclei template were identified for CVE-2026-63638 at the time of writing. CISA KEV: NO. EPSS: not yet scored.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

product:"Openimageio"
title:"Openimageio"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-63638/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.