| Title | OpenImageIO (OIIO)における複数の脆弱性 |
|---|---|
| Summary | OpenImageIOは、VFXやアニメーションに関連するあらゆる画像ファイル形式の画像を読み書きおよび操作するためのツールセットです。バージョン3.0.18.0および3.1.13.0より前のバージョンには、DPXColorConverter.cpp内のQueryRGBBufferSizeInternal()関数に符号付き整数オーバーフローの脆弱性が存在します。細工されたDPX画像ファイルを処理するとヒープベースの境界外書き込みが発生します。この関数は32ビット符号付き整数算術を使用してバッファサイズを計算しますが、負の乗数(例えば、kCbYCrディスクリプタの場合はピクセル数 * -3 * バイト数、kABGRディスクリプタの場合はピクセル数 * -4 * バイト数)が含まれています。負の結果は別のバッファが不要であることを示すインバンドシグナルとして使われています。ピクセル数が十分に大きい場合、乗算はINT_MINをオーバーフローし、小さな正の値に巻き戻ります。dpxinput.cpp内の呼び出し元はこの正の値を必要なバッファサイズとして解釈し、m_decodebuf.resize()を介して過小割り当てされたヒープバッファを確保します。その後、freadを介して完全な画像データを書き込むため、ヒープバッファオーバーフローが発生します。攻撃者は細工されたDPXファイルを作成してこのオーバーフローを引き起こすことで、サービス拒否(クラッシュ)を引き起こしたり、OpenImageIOを使用してピクセルデータを読み込む任意のアプリケーションにおいてヒープ破損を介した任意のコード実行を潜在的に行ったりすることが可能です。この脆弱性は3.0.18.0および3.1.13.0で修正されています。 |
| Possible impacts | 当該ソフトウェアが扱う情報の一部が外部に漏れる可能性があります。 また、当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 |
| Solution | 正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。 |
| Publication Date | May 14, 2026, midnight |
| Registration Date | May 18, 2026, 11:22 a.m. |
| Last Update | May 18, 2026, 11:22 a.m. |
| CVSS3.0 : 重要 | |
| Score | 8.3 |
|---|---|
| Vector | CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:H |
| OpenImageIO (OIIO) |
| OpenImageIO (OIIO) 3.0.18.0 未満 |
| OpenImageIO (OIIO) 3.1.4.0 以上 3.1.13.0 未満 |
| OpenImageIO (OIIO) 3.2.0.2 |
| No | Changed Details | Date of change |
|---|---|---|
| 1 | [2026年05月18日] 掲載 |
May 18, 2026, 11:22 a.m. |
| Summary | 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. |
|---|---|
| Publication Date | May 15, 2026, 5:17 a.m. |
| Registration Date | May 17, 2026, 4:09 a.m. |
| Last Update | May 16, 2026, 4:43 a.m. |
| Configuration1 | or higher | or less | more than | less than | |
| cpe:2.3:a:openimageio:openimageio:*:*:*:*:*:*:*:* | 3.0.18.0 | ||||
| cpe:2.3:a:openimageio:openimageio:*:*:*:*:*:*:*:* | 3.1.4.0 | 3.1.13.0 | |||
| cpe:2.3:a:openimageio:openimageio:3.2.0.2:dev:*:*:*:*:*:* | |||||