画像変換ライブラリ ImageMagick のBMPエンコーダ(WriteBMPImage)に、32ビットビルド限定の整数オーバーフローが可能な脆弱性(CVE-2025-57803)が
発生しました。CVSS 9.8(Critical)となっておりリモートコード実行の可能性があります。
影響のあるバージョン
ImageMagick の 32ビットビルドで、7系は 7.1.2-2 未満、6系は 6.9.13-28 未満の全リリースが影響を受けます。特に i686 など32ビット環境で BMP への書き出し処理を行っている場合、ヒープ破壊からサービス停止や不正なコード実行に至るおそれがあります。64ビット版は当該オーバーフロー自体は成立しにくいものの、環境依存の挙動を排除できないため注意が必要です。
修正済みバージョン
対策は 7.1.2-2(7系) および 6.9.13-28(6系) に取り込まれています。該当する32ビット環境はただちにこれらのバージョン以降へ更新してください。あわせて実行アーキテクチャの確認(32/64ビットの混在排除)と、ポリシー設定でのBMP書き出し制御や入力サイズ上限の見直しも併せて実施すると安全性が高まります。
何が問題か(技術概要)
不具合は BMP エンコーダ(WriteBMPImage)のスキャンライン長(stride)計算で発生します。
計算式bytes_per_line = 4 * ((width * 24 + 31) / 32)
において、
32ビット環境では width * 24 + 31 が整数オーバーフローを起こし得ます。
オーバーフローすると bytes_per_line が異常に小さくなる一方、24bppの書き出しは実データが 3 × width バイトのまま進むため、1行目から即座に領域外書き込み(OOB)が発生します。これが連続的・攻撃者制御のヒープ上書きとなり、DoS だけでなく環境次第で RCE に発展します。
発生条件の目安
-
24bpp で幅が極端に大きい入力(例:幅が約178,956,970ピクセル以上)で Stage-1 の乗算+加算が桁あふれします。
-
64ビットでは同じ式が桁あふれしないため本欠陥は成立しませんが、将来的なDoSや別経路の不整合を防ぐため追加ガードは推奨されています。








