目次(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)です。
対応
- Pillow を 13.0.0 以上に更新します。
- すぐ更新できない場合は、環境から
olefileを外せるか確認します(本記事の推定で、勧告が示す回避策ではありません)。 - 外部のファイルを処理するサービスでは、
Image.open()の前に許可する形式を絞ります(例: 受け付ける形式を JPEG・PNG などに限る)。この対策も本記事の推定です。 - 画像処理のプロセスは、最小の権限・隔離した実行環境で動かし、外向きの通信を絞ります。
- 画像処理を行うサーバーで、心当たりのないプロセス起動やクラッシュ(ヒープ破損の異常終了)がなかったかを確認します。
未確認の点
- NVD は 10/19 登録、状態は Analyzed ですが、掲載されている評価は GitHub 提供の CVSS v4.0 のみです。NVD 自身の v3.1 の評価は見つかりませんでした。
- 悪用の報告は見つかっていません(KEV 掲載なし)。EPSS は今後変わり得ます。
- 実際の環境での再現は確認していません。記載は勧告、修正コミット、公開情報に基づきます。
この記事について
- 執筆・編集
- World Security 編集部
出典
- GitHub Advisory GHSA-5x8w-8jj5-q52h(CVE-2026-112398)(GitHub)
- 修正コミット 242a059(GitHub)
- Pillow 13.0.0 リリース(GitHub)
- PyPI pillow(PyPI)
- NVD CVE-2026-112398(NIST NVD)
- FIRST EPSS API(FIRST)
- CISA Known Exploited Vulnerabilities Catalog(JSON)(CISA)




