脆弱性・CVE速報深刻度: 緊急

Pillow の FlashPix(FPX)JPEG デコードでヒープ溢れ、細工したファイルを開くだけでコード実行され得る不具合(CVE-2026-112398): 13.0.0 で修正

目次(5)

CVE-2026-112398

Python の画像ライブラリ Pillow に、FlashPix(FPX)形式の JPEG タイルを読むときのヒープ領域の書き込み超過(CVE-2026-112398)が見つかり、13.0.0 で修正されました。GitHub Advisory は 10/23 公開で、深刻度は Critical、CWE-122・CWE-787 です。GitHub 提供の CVSS v4.0 は 9.2(AV:N/AC:H/PR:N/UI:N)で、v3.1 の数値は付いていません。CISA の KEV には載っていません。EPSS は 0.70%(10/30 時点)です。

何が起きるか

  • FPX は OLE2 形式の複合文書です。Pillow は、オプションの依存 olefile が入っていれば、拡張子ではなくファイルの先頭の識別子(OLE2 のマジック)で FPX と判定し、Image.open() で読み込みます。
  • FPX の JPEG タイルを読むとき、出力バッファはファイル内の色指定から決まる「raw モード」(例: LA は 1 画素 2 バイト)の大きさで確保されます。一方、libjpeg は JPEG ヘッダーの成分数に従って 1 画素ぶんの出力を書きます。勧告によると、LA などのモードでは色変換が無効になり、成分数が 4 の JPEG だと 1 行に 4×幅のバイトを、2×幅のバイトしかないバッファへ書き込みます。
  • 細工したファイルでは、溢れる長さと中身を送り手が決められます。勧告は、隣の Python オブジェクトを書き換えて任意のコマンドを実行させる検証(標準の Pillow 12.2.0・x86_64 Ubuntu 24.04)を載せており、バッファ解放時に処理が乗っ取られると説明しています。再現の細部は本記事では扱いません。
  • 画像のアップロードを受けてサムネイル化する、アバターや文書・画像の変換をするなど、外部から来たファイルを自動で Image.open() するサービスは、利用者の操作なしに到達され得ます。実行されるのは、その処理を行うプロセスの権限です。

修正の内容

  • 修正コミット 242a059(10/06 UTC)は、JPEG のデコードを始める直前に、libjpeg が出す行の幅と成分数がバッファに収まるかを確かめ、収まらなければ「データ破損」として拒否します。確認は JpegDecode.c の 11 行の追加で、幅がタイルより広い JPEG を拒否するテストが加わっています。
  • PyPI の記録では、Pillow 13.0.0 は 2026-10-16(UTC)に公開されています。勧告の公開(10/23)より前です。修正の公開から勧告までの経緯は未確認です。

影響を受ける版と条件

  • NVD の記載は「13.0.0 より前」で、修正版は 13.0.0 です。GitHub Advisory の範囲は「12.3.0 以下」と書かれており、PyPI の最新の 12 系は 12.3.0 です(書き方は異なるが、実質同じ範囲と読めます。これは本記事の読み取りです)。
  • 到達には olefile がインストールされていることが条件です。olefile が無い環境では FPX が自動判定されないため、この経路は成立しないと勧告の説明から読み取れます(実環境での確認はしていません)。
  • 攻撃者は、細工した .fpx ファイルを対象に開かせられる必要があります。CVSS 上の攻撃条件は「高」(AC:H)です。

対応

  1. Pillow を 13.0.0 以上に更新します。
  2. すぐ更新できない場合は、環境から olefile を外せるか確認します(本記事の推定で、勧告が示す回避策ではありません)。
  3. 外部のファイルを処理するサービスでは、Image.open() の前に許可する形式を絞ります(例: 受け付ける形式を JPEG・PNG などに限る)。この対策も本記事の推定です。
  4. 画像処理のプロセスは、最小の権限・隔離した実行環境で動かし、外向きの通信を絞ります。
  5. 画像処理を行うサーバーで、心当たりのないプロセス起動やクラッシュ(ヒープ破損の異常終了)がなかったかを確認します。

未確認の点

  • NVD は 10/19 登録、状態は Analyzed ですが、掲載されている評価は GitHub 提供の CVSS v4.0 のみです。NVD 自身の v3.1 の評価は見つかりませんでした。
  • 悪用の報告は見つかっていません(KEV 掲載なし)。EPSS は今後変わり得ます。
  • 実際の環境での再現は確認していません。記載は勧告、修正コミット、公開情報に基づきます。

この記事について

出典

この記事を共有