CVE-2026-63638: OpenImageIO: Cineon invalid bit depth heap out-of-bounds write
OpenImageIO is a toolset for reading, writing, and manipulating image files of any image file format relevant to VFX / animation. Prior to 3.0.21.0, 3.1.16.0, and 3.2.0.3-beta1, A crafted cineon image can declare unsupported component bit depth 26. cineoninput::open() maps it to a 32-bit imagespec, but libcineon maps the unsupported depth to an 8-byte value, so cineoninput::readnativescanline() causes attacker-controlled data to be written beyond the 4-byte-per-pixel caller buffer, resulting in a heap out-of-bounds write and memory corruption. The affected implementation is identified by src/cineon.imageio/cineoninput.cpp, CineonInput::open(), CineonInput::readnativescanline(), ComponentDataSize(), bit depth 26, and ImageSpec, which define the relevant source path, functions, state, and trigger. This issue is fixed in versions 3.0.21.0, 3.1.16.0, and 3.2.0.3-beta1.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
OpenImageIOto a version that resolves this vulnerability.Fixed in 3.0.21.0 - Upgrade
Upgrade
OpenImageIOto a version that resolves this vulnerability.Fixed in 3.1.16.0 - Upgrade
Upgrade
OpenImageIOto a version that resolves this vulnerability.Fixed in 3.2.0.3-beta1
Event History
Frequently Asked Questions
Which deployments are exposed to this issue?
Deployments that process attacker-controlled Cineon image files are exposed if they use an affected OpenImageIO version. The vulnerable code path is in CineonInput::open() and CineonInput::read_native_scanline().
What must an attacker provide to trigger the memory corruption?
An attacker needs to cause the application to open and read a crafted Cineon image declaring component bit depth 26. User interaction is required according to the supplied severity vector.
How can I determine whether a file may be attempting to exploit this issue?
Inspect Cineon inputs for a declared component bit depth of 26. That unsupported depth causes the mismatch between the 32-bit ImageSpec representation and libcineon's 8-byte component value.
Which versions contain the fix?
The issue is fixed in OpenImageIO 3.0.21.0, 3.1.16.0, and 3.2.0.3-beta1. Versions prior to those releases are affected.