Python画像ライブラリ「Pillow」に脆弱性、細工されたファイル名や画像でコード実行の恐れ
要点
-
Pythonの主要画像ライブラリ「Pillow」で、サーバー上で不正なコマンドを実行される恐れのある複数の脆弱性が判明した。
-
EPS処理の欠陥(CVE-2026-112900)では、悪意あるファイル名を渡すことで外部のGhostscriptを介したコード実行が誘発される。
-
FlashPix形式のJPEGデコードでも、細工されたファイルを開くだけでコマンドが実行される欠陥が確認された。
-
開発元は低からクリティカルまでの欠陥に対処した「Pillow 13.0.0」を2026年10月16日に公開した。
-
Pythonで広く使われる画像処理ライブラリ「Pillow」に、サーバー上で任意のOSコマンドを実行される恐れがある複数の脆弱性が存在することが明らかになった。セキュリティ企業OX Securityの報告などにより判明したもので、プロジェクトのメンテナーは2026年10月16日に修正版「バージョン 13.0.0」を公開した。現時点でこれらの悪用は確認されていないという。
幅広い用途で使われるPillowとセキュリティリリース
Pillowは画像の加工や変換を行うオープンソースライブラリであり、Webの画像アップロードやサムネイル生成、PDF処理、機械学習など多様な用途で使われている。OX Securityによると、月間ダウンロード数は約4億3600万回に上ると推定されている。
バージョン13.0.0は、4段階の重要度にわたる修正を含む大型リリースで、メンテナー自身が最高ランクのクリティカルと評価した2件を含め、深刻な不具合が解消された。
ファイル名が引き金となるEPS処理の欠陥(CVE-2026-112900)
判明した欠陥のうち「CVE-2026-112900」は、EPS画像の処理に起因する。PillowはEPSを開く際、ピクセル化のため外部プログラム「Ghostscript」(PostScript等を処理するソフトウェア)を呼び出すが、その際にファイル名を検証せずに渡していた。
これにより、攻撃者が細工したファイル名を指定すると、Ghostscriptがそれをファイル名ではなく命令と解釈し、コマンドが書かれた別ファイルを参照してしまう。アドバイザリでは「画像の中身ではなくファイル名が原因」と説明されており、無害な画像でもファイル名次第で被害が生じる。ユーザー入力からファイル名を生成・保存するエンドポイントが現実的な標的になり得るという。影響を受けるのはバージョン2.6.0から12.3.0で、Ghostscript(gs)が導入された環境で発生する。
開くだけでコマンド実行に至るFPX形式の欠陥
クリティカルと評価された修正には、モード変更後に古い画像データが再利用されるメモリバグと、JPEGデコード(圧縮された画像データを展開する処理)におけるオーバーフロー欠陥が含まれる。
このうちFlashPix(FPX)形式の欠陥では、追加パッケージ「olefile」がある環境で、細工されたファイルに対して「Image.open()」を呼び出すだけでコマンド実行が可能であると実証された。Pillowは拡張子ではなく内容から形式を判別するため、信頼できないファイルを開くサーバーでは、利用者の操作なしに攻撃が成立する危険性があるという。
AI調査で発見された欠陥と2013年からのTIFFバッファオーバーフロー
もう1つのJPEG欠陥「CVE-2026-112403」は、細工された可逆圧縮(画質を完全に保ったまま圧縮する方式)のJPEG画像からサムネイルを作成する際、メモリ領域が溢れるバッファオーバーフローが生じるものだ。影響はクラッシュにとどまりコード実行には至らない。AnthropicがAI「Claude」を用いてオープンソースの安全性を調査する中で発見し、Ada Logicsが手動検証を行ったという。
さらに、2013年から残存していた「CVE-2026-112393」も修正された。圧縮TIFF画像を実ファイルではなくメモリ上に保存する際、バッファオーバーフローが生じる欠陥である。画像を再エンコードして即座に返すWebサービスで使われる処理が該当し、単体ではクラッシュにとどまるが、メモリアドレス漏洩の脆弱性と併用することでコード実行が可能になる。なお、実ファイルへの保存では影響を受けない。
脆弱性の評価とアップデート
GitHubのCVEレコードでは、EPS、TIFF、JPEGサムネイルの3件に「9.2」のクリティカルスコアが付与されている。ただし特定条件に依存するため、メンテナー独自の評価は中程度からクリティカルまで分かれている。米CISAによると、EPS欠陥の悪用例はなく、TIFF欠陥には公開された概念実証(PoC)が存在するという。
開発チームは、これらの欠陥を修正した「Pillow 13.0.0」への速やかな更新を呼びかけている。