← Back to CVE Explorer

CVE-2026-43907

Full vulnerability record from the local CVENow database.

Description

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.

Severity
HIGH
CVSS score
8.3 (v3.1)
Vulnerability status
Analyzed
Source identifier
Published
2026-05-14 20:17:06.760000
Last modified
2026-10-25 23:10:00.167000
View original CVE JSON
{
  "id": "CVE-2026-43907",
  "sourceIdentifier": "[email protected]",
  "published": "2026-05-14T20:17:06.760",
  "lastModified": "2026-10-25T23:10:00.167",
  "vulnStatus": "Analyzed",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "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."
    },
    {
      "lang": "es",
      "value": "OpenImageIO es un conjunto de herramientas para leer, escribir y manipular archivos de imagen de cualquier formato de archivo de imagen relevante para VFX / animación. Antes de 3.0.18.0 y 3.1.13.0, un desbordamiento de entero con signo en QueryRGBBufferSizeInternal() en DPXColorConverter.cpp conduce a una escritura fuera de límites basada en el heap al procesar archivos de imagen DPX manipulados. La función calcula los tamaños de búfer utilizando aritmética de enteros con signo de 32 bits con multiplicadores negativos (por ejemplo, píxeles * -3 * bytes para descriptores kCbYCr y píxeles * -4 * bytes para descriptores kABGR), donde un resultado negativo se utiliza como una señal en banda de que no se necesita un búfer separado. Cuando el recuento de píxeles es suficientemente grande, la multiplicación desborda INT_MIN y se ajusta a un pequeño valor positivo. El llamador en dpxinput.cpp interpreta este valor positivo como un tamaño de búfer requerido, asigna un búfer de heap de tamaño insuficiente a través de m_decodebuf.resize(), y luego escribe los datos completos de la imagen en él a través de fread, lo que resulta en un desbordamiento de búfer de heap. Un atacante puede explotar esto creando un archivo DPX que desencadena el desbordamiento, causando una denegación de servicio (bloqueo) o potencialmente ejecución de código arbitrario a través de la corrupción del heap en cualquier aplicación que lea datos de píxeles usando OpenImageIO. Esta vulnerabilidad se corrige en 3.0.18.0 y 3.1.13.0."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "AcademySoftwareFoundation",
          "product": "OpenImageIO",
          "versions": [
            {
              "version": "< 3.0.18.0",
              "status": "affected"
            },
            {
              "version": ">= 3.1.4.0-beta, < 3.1.13.0",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:H",
          "baseScore": 8.3,
          "baseSeverity": "HIGH",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "NONE",
          "userInteraction": "REQUIRED",
          "scope": "UNCHANGED",
          "confidentialityImpact": "LOW",
          "integrityImpact": "HIGH",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 2.8,
        "impactScore": 5.5
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-05-14T19:49:04.586037Z",
          "id": "CVE-2026-43907",
          "options": [
            {
              "exploitation": "poc"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-190"
        },
        {
          "lang": "en",
          "value": "CWE-787"
        }
      ]
    }
  ],
  "configurations": [
    {
      "nodes": [
        {
          "operator": "OR",
          "negate": false,
          "cpeMatch": [
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:openimageio:openimageio:*:*:*:*:*:*:*:*",
              "versionEndExcluding": "3.0.18.0",
              "matchCriteriaId": "90B206C1-E7DB-4175-8077-C76D5C8533AF"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:openimageio:openimageio:*:*:*:*:*:*:*:*",
              "versionStartIncluding": "3.1.4.0",
              "versionEndExcluding": "3.1.13.0",
              "matchCriteriaId": "34BBB27F-256F-4D15-A394-158343CB8B4D"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:openimageio:openimageio:3.2.0.2:dev:*:*:*:*:*:*",
              "matchCriteriaId": "450296D8-74F5-4847-8433-FE3DFB16C58E"
            }
          ]
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-cq46-hp4h-cvfr",
      "source": "[email protected]",
      "tags": [
        "Exploit",
        "Vendor Advisory"
      ]
    },
    {
      "url": "https://github.com/AcademySoftwareFoundation/OpenImageIO/security/advisories/GHSA-cq46-hp4h-cvfr",
      "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
      "tags": [
        "Exploit",
        "Vendor Advisory"
      ]
    }
  ]
}