CVE-2026-43907
OpenImageIO: Integer overflow in QueryRGBBufferSizeInternal leads to heap out-of-bounds write in DPX decoder (kCbYCr and kABGR)
OpenImageIO is a toolset for reading, writing, and manipulating image files of any image file format relevant to VFX / animation. Prior to 3.0.18.0 and 3.1.13.0, a signed integer overflow in QueryRGBBufferSizeInternal() in DPXColorConverter.cpp leads to a heap-based out-of-bounds write when processing crafted DPX image files. The function computes buffer sizes using 32-bit signed integer arithmetic with negative multipliers (e.g., pixels * -3 * bytes for kCbYCr descriptors and pixels * -4 * bytes for kABGR descriptors), where a negative result is used as an in-band signal that no separate buffer is needed. When the pixel count is sufficiently large, the multiplication overflows INT_MIN and wraps to a small positive value. The caller in dpxinput.cpp interprets this positive value as a required buffer size, allocates an undersized heap buffer via m_decodebuf.resize(), and then writes the full image data into it via fread, resulting in a heap buffer overflow. An attacker can exploit this by crafting a DPX file that triggers the overflow, causing a denial of service (crash) or potentially arbitrary code execution through heap corruption in any application that reads pixel data using OpenImageIO. This vulnerability is fixed in 3.0.18.0 and 3.1.13.0.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- Low
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.3
OpenImageIO: Integer overflow in QueryRGBBufferSizeInternal leads to heap out-of-bounds write in DPX decoder (kCbYCr and kABGR)
OpenImageIO is a toolset for reading, writing, and manipulating image files of any image file format relevant to VFX / animation. Prior to 3.0.18.0 and 3.1.13.0, a signed integer overflow in QueryRGBBufferSizeInternal() in DPXColorConverter.cpp leads to a heap-based out-of-bounds write when processing crafted DPX image files. The function computes buffer sizes using 32-bit signed integer arithmetic with negative multipliers (e.g., pixels * -3 * bytes for kCbYCr descriptors and pixels * -4 * bytes for kABGR descriptors), where a negative result is used as an in-band signal that no separate buffer is needed. When the pixel count is sufficiently large, the multiplication overflows INT_MIN and wraps to a small positive value. The caller in dpxinput.cpp interprets this positive value as a required buffer size, allocates an undersized heap buffer via m_decodebuf.resize(), and then writes the full image data into it via fread, resulting in a heap buffer overflow. An attacker can exploit this by crafting a DPX file that triggers the overflow, causing a denial of service (crash) or potentially arbitrary code execution through heap corruption in any application that reads pixel data using OpenImageIO. This vulnerability is fixed in 3.0.18.0 and 3.1.13.0.
- Record
CVE-2026-43907- CVSS 3.1
- 8.3 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:H - Weakness
- CWE-190, CWE-787
- Updated
- 2026-11-02
EUVDEUVD-2026-30410
8.3
OpenImageIO is a toolset for reading, writing, and manipulating image files of any image file format relevant to VFX / animation. Prior to 3.0.18.0 and 3.1.13.0, a signed integer overflow in QueryRGBBufferSizeInternal() in DPXColorConverter.cpp leads to a heap-based out-of-bounds write when processing crafted DPX image files. The function computes buffer sizes using 32-bit signed integer arithmetic with negative multipliers (e.g., pixels * -3 * bytes for kCbYCr descriptors and pixels * -4 * bytes for kABGR descriptors), where a negative result is used as an in-band signal that no separate buffer is needed. When the pixel count is sufficiently large, the multiplication overflows INT_MIN and wraps to a small positive value. The caller in dpxinput.cpp interprets this positive value as a required buffer size, allocates an undersized heap buffer via m_decodebuf.resize(), and then writes the full image data into it via fread, resulting in a heap buffer overflow. An attacker can exploit this by crafting a DPX file that triggers the overflow, causing a denial of service (crash) or potentially arbitrary code execution through heap corruption in any application that reads pixel data using OpenImageIO. This vulnerability is fixed in 3.0.18.0 and 3.1.13.0.
- Record
EUVD-2026-30410- CVSS 3.1
- 8.3 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:H - Updated
- 2026-11-02
NVD
8.3
OpenImageIO is a toolset for reading, writing, and manipulating image files of any image file format relevant to VFX / animation. Prior to 3.0.18.0 and 3.1.13.0, a signed integer overflow in QueryRGBBufferSizeInternal() in DPXColorConverter.cpp leads to a heap-based out-of-bounds write when processing crafted DPX image files. The function computes buffer sizes using 32-bit signed integer arithmetic with negative multipliers (e.g., pixels * -3 * bytes for kCbYCr descriptors and pixels * -4 * bytes for kABGR descriptors), where a negative result is used as an in-band signal that no separate buffer is needed. When the pixel count is sufficiently large, the multiplication overflows INT_MIN and wraps to a small positive value. The caller in dpxinput.cpp interprets this positive value as a required buffer size, allocates an undersized heap buffer via m_decodebuf.resize(), and then writes the full image data into it via fread, resulting in a heap buffer overflow. An attacker can exploit this by crafting a DPX file that triggers the overflow, causing a denial of service (crash) or potentially arbitrary code execution through heap corruption in any application that reads pixel data using OpenImageIO. This vulnerability is fixed in 3.0.18.0 and 3.1.13.0.
- Record
CVE-2026-43907- CVSS 3.1
- 8.3 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:H - Weakness
- CWE-190, CWE-787
- Updated
- 2026-11-02
OSV
8.3
OpenImageIO: Integer overflow in QueryRGBBufferSizeInternal leads to heap out-of-bounds write in DPX decoder (kCbYCr and kABGR)
OpenImageIO is a toolset for reading, writing, and manipulating image files of any image file format relevant to VFX / animation. Prior to 3.0.18.0 and 3.1.13.0, a signed integer overflow in QueryRGBBufferSizeInternal() in DPXColorConverter.cpp leads to a heap-based out-of-bounds write when processing crafted DPX image files. The function computes buffer sizes using 32-bit signed integer arithmetic with negative multipliers (e.g., pixels * -3 * bytes for kCbYCr descriptors and pixels * -4 * bytes for kABGR descriptors), where a negative result is used as an in-band signal that no separate buffer is needed. When the pixel count is sufficiently large, the multiplication overflows INT_MIN and wraps to a small positive value. The caller in dpxinput.cpp interprets this positive value as a required buffer size, allocates an undersized heap buffer via m_decodebuf.resize(), and then writes the full image data into it via fread, resulting in a heap buffer overflow. An attacker can exploit this by crafting a DPX file that triggers the overflow, causing a denial of service (crash) or potentially arbitrary code execution through heap corruption in any application that reads pixel data using OpenImageIO. This vulnerability is fixed in 3.0.18.0 and 3.1.13.0.
- Record
CVE-2026-43907- CVSS 3.1
- 8.3 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:H - Weakness
- CWE-190, CWE-787
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-43907
8.3
OpenImageIO is a toolset for reading, writing, and manipulating image files of any image file format relevant to VFX / animation. Prior to 3.0.18.0 and 3.1.13.0, a signed integer overflow in QueryRGBBufferSizeInternal() in DPXColorConverter.cpp leads to a heap-based out-of-bounds write when processing crafted DPX image files. The function computes buffer sizes using 32-bit signed integer arithmetic with negative multipliers (e.g., pixels * -3 * bytes for kCbYCr descriptors and pixels * -4 * bytes for kABGR descriptors), where a negative result is used as an in-band signal that no separate buffer is needed. When the pixel count is sufficiently large, the multiplication overflows INT_MIN and wraps to a small positive value. The caller in dpxinput.cpp interprets this positive value as a required buffer size, allocates an undersized heap buffer via m_decodebuf.resize(), and then writes the full image data into it via fread, resulting in a heap buffer overflow. An attacker can exploit this by crafting a DPX file that triggers the overflow, causing a denial of service (crash) or potentially arbitrary code execution through heap corruption in any application that reads pixel data using OpenImageIO. This vulnerability is fixed in 3.0.18.0 and 3.1.13.0.
- Record
DEBIAN-CVE-2026-43907- CVSS 3.1
- 8.3 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-43907
8.3
OpenImageIO is a toolset for reading, writing, and manipulating image files of any image file format relevant to VFX / animation. Prior to 3.0.18.0 and 3.1.13.0, a signed integer overflow in QueryRGBBufferSizeInternal() in DPXColorConverter.cpp leads to a heap-based out-of-bounds write when processing crafted DPX image files. The function computes buffer sizes using 32-bit signed integer arithmetic with negative multipliers (e.g., pixels * -3 * bytes for kCbYCr descriptors and pixels * -4 * bytes for kABGR descriptors), where a negative result is used as an in-band signal that no separate buffer is needed. When the pixel count is sufficiently large, the multiplication overflows INT_MIN and wraps to a small positive value. The caller in dpxinput.cpp interprets this positive value as a required buffer size, allocates an undersized heap buffer via m_decodebuf.resize(), and then writes the full image data into it via fread, resulting in a heap buffer overflow. An attacker can exploit this by crafting a DPX file that triggers the overflow, causing a denial of service (crash) or potentially arbitrary code execution through heap corruption in any application that reads pixel data using OpenImageIO. This vulnerability is fixed in 3.0.18.0 and 3.1.13.0.
- Record
UBUNTU-CVE-2026-43907- CVSS 3.1
- 8.3 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:H - Updated
- 2026-11-02
OSVUSN-8438-1 No score
openimageio vulnerabilities
It was discovered that OpenImageIO incorrectly performed bounds checking when processing SGI files. An attacker could possibly use this issue to cause a denial of service or execute arbitrary code. (CVE-2026-43903)
It was discovered that OpenImageIO incorrectly handled run-length encoding when processing Softimage PIC files. An attacker could possibly use this issue to cause a denial of service or execute arbitrary code. (CVE-2026-43904)
It was discovered that OpenImageIO incorrectly validated subimage metadata when processing HEIF files. An attacker could possibly use this issue to cause a denial of service or execute arbitrary code. This issue only affected Ubuntu 20.04 LTS, Ubuntu 24.04 LTS and Ubuntu 26.04 LTS. (CVE-2026-43906)
It was discovered that OpenImageIO contained multiple integer overflow vulnerabilities when processing DPX files. An attacker could possibly use these issues to cause a denial of service or execute arbitrary code. (CVE-2026-43907, CVE-2026-43908, CVE-2026-43909)
- Record
USN-8438-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
openimageioDebian:12 |
All versions, plus listed versions 2.4.12.0+dfsg-12.4.13.0+dfsg-12.4.14.0+dfsg-12.4.16.0+dfsg-12.4.17.0+dfsg-1 Show 17 moreShow less2.4.17.0+dfsg-1.12.4.7.1+dfsg-22.4.9.0+dfsg-12.5.10.1+dfsg-12.5.12.0+dfsg-12.5.12.0+dfsg-22.5.14.0+dfsg-12.5.15.0+dfsg-12.5.16.0+dfsg-12.5.18.0+dfsg-12.5.19.1+dfsg-12.5.19.1+dfsg-22.5.7.0+dfsg-13.1.18.0+dfsg-13.1.18.0+dfsg-23.1.18.1+dfsg-13.1.18.1+dfsg-2 |
None known |
openimageioDebian:13 |
All versions, plus listed versions 2.5.18.0+dfsg-12.5.19.1+dfsg-12.5.19.1+dfsg-23.1.18.0+dfsg-13.1.18.0+dfsg-23.1.18.1+dfsg-13.1.18.1+dfsg-2 |
None known |
openimageioDebian:14 |
before 3.1.18.0+dfsg-2, plus listed versions 2.5.18.0+dfsg-12.5.19.1+dfsg-12.5.19.1+dfsg-23.1.18.0+dfsg-1 |
3.1.18.0+dfsg-2 |
openimageioUbuntu:Pro:16.04:LTS |
before 1.6.11~dfsg0-1ubuntu1+esm2, plus listed versions 1.5.17~dfsg0-1ubuntu21.5.20~dfsg0-1ubuntu21.5.23~dfsg0-1ubuntu11.6.9~dfsg0-4ubuntu11.6.10~dfsg0-1ubuntu11.6.10~dfsg0-2ubuntu11.6.11~dfsg0-1ubuntu1 |
1.6.11~dfsg0-1ubuntu1+esm2 |
openimageioUbuntu:Pro:18.04:LTS |
before 1.7.17~dfsg0-1ubuntu2+esm1, plus listed versions 1.6.17~dfsg0-1ubuntu51.7.17~dfsg0-1ubuntu2 |
1.7.17~dfsg0-1ubuntu2+esm1 |
openimageioUbuntu:Pro:20.04:LTS |
before 2.1.12.0~dfsg0-1ubuntu0.1~esm1, plus listed versions 2.0.10~dfsg0-12.0.11~dfsg0-12.0.12~dfsg0-12.0.12~dfsg0-1build12.0.12~dfsg0-1build22.1.10.1~dfsg0-5ubuntu42.1.10.1~dfsg0-5ubuntu52.1.12.0~dfsg0-1 |
2.1.12.0~dfsg0-1ubuntu0.1~esm1 |
openimageioUbuntu:22.04:LTS |
All versions, plus listed versions 2.2.10.1+dfsg-1build12.2.18.0+dfsg-12.2.18.0+dfsg-1build22.2.18.0+dfsg-1ubuntu2 |
None known |
openimageioUbuntu:Pro:24.04:LTS |
before 2.4.17.0+dfsg-1.1ubuntu0.1~esm1, plus listed versions 2.4.14.0+dfsg-12.4.16.0+dfsg-12.4.16.0+dfsg-1build12.4.17.0+dfsg-12.4.17.0+dfsg-1build12.4.17.0+dfsg-1.1build32.4.17.0+dfsg-1.1build4 |
2.4.17.0+dfsg-1.1ubuntu0.1~esm1 |
openimageioUbuntu:25.10 |
All versions, plus listed versions 2.5.18.0+dfsg-1build12.5.18.0+dfsg-1build2 |
None known |
openimageioUbuntu:26.10 |
All versions, plus listed versions 2.5.19.1+dfsg-22.5.19.1+dfsg-2build12.5.19.1+dfsg-2build2 |
None known |
openimageioUbuntu:Pro:26.04:LTS |
before 2.5.19.1+dfsg-2ubuntu0.1~esm1, plus listed versions 2.5.18.0+dfsg-1build22.5.19.1+dfsg-1build12.5.19.1+dfsg-1build32.5.19.1+dfsg-1build52.5.19.1+dfsg-2 |
2.5.19.1+dfsg-2ubuntu0.1~esm1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-43907 is a high vulnerability (CVSS 8.3) in Academysoftwarefoundation Openimageio, published May 14, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.37%, the 30th percentile. Fixed in openimageio 3.1.18.0+dfsg-2.
References
github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-cq46-hp4h-cvfr
github.com/CVEProject/cvelistV5/tree/main/cves/2026/43xxx/CVE-2026-43907.json
nvd.nist.gov/vuln/detail/CVE-2026-43907
security-tracker.debian.org/tracker/CVE-2026-43907
ubuntu.com/security/CVE-2026-43907
cve.org/CVERecord?id=CVE-2026-43907