---
title: "Pillow の EPS 処理で Ghostscript に引数を差し込める不具合、条件がそろうとコマンド実行の恐れ（CVE-2026-112900）: 13.0.0 で修正"
url: https://n-t-p.io/worldsecurity/articles/pillow-eps-ghostscript-argument-injection-13-0-0-2026-112900
lang: ja
kind: 速報
category: 脆弱性・CVE
author: World Security 編集部
published: 2026年10月31日
updated: 2026年10月31日
severity: 緊急
cve: CVE-2026-112900
---

# Pillow の EPS 処理で Ghostscript に引数を差し込める不具合、条件がそろうとコマンド実行の恐れ（CVE-2026-112900）: 13.0.0 で修正

> **TL;DR:** Pillow 2.6.0 以上 13.0.0 未満で、EPS を Ghostscript で描画するときファイル名が引数として解釈される不具合（CVE-2026-112900、GitHub は Critical、CWE-88・78）。ファイル名を攻撃者が左右できる構成が対象で、`@` で始まる名前と参照先ファイルを用意できるとコマンド実行まで届くと勧告は説明。修正版は 13.0.0。KEV 掲載なし、EPSS は 1.30%。

**要点**
- EPS を開くとき、ファイル名がそのまま Ghostscript の -f の後ろに渡され、先頭が - なら引数、@ なら引数ファイルとして解釈されていた
- 問題はファイルの中身でなくファイル名。アップロード名をそのまま使って開く構成が該当しやすい（推定）
- コマンド実行には、@ で始まる名前に加え、参照先ファイルの中身も攻撃者が用意できる必要がある。勧告は既定の -dSAFER でも再現と説明（当サイトでは未再現）
- 修正版は 13.0.0（PyPI 10/16 UTC）。修正コミット a2c3631 はファイル名を絶対パスに直す。勧告の公開は 10/21
- NVD は Analyzed（v3.1 9.8）、GitHub の CVSS v4.0 は 9.2、EPSS 1.30%（10/30）、KEV 掲載なし

Python の画像ライブラリ Pillow で、EPS 画像を Ghostscript で描画するときに、ファイル名の先頭が `-` や `@` だと Ghostscript への「引数」として解釈されてしまう不具合（CVE-2026-112900、GHSA-w889-685w-c8fh）が公開されました。GitHub の深刻度は Critical で、修正版は 13.0.0（PyPI 10/16 UTC 公開）、勧告の公開は 10/21 です。CISA の KEV には、確認した範囲では載っていません。

## 何が起きるか

- Pillow は EPS を開くとき、外部プログラム Ghostscript を呼び出します。その際、`Image.open()` に渡されたファイル名を、そのまま `-f <ファイル名>` の位置に入れていました。
- ファイル名が `-` で始まると、Ghostscript はそれをファイル名でなくオプションとして読みます。1 つの引数の差し込みは、常に成立すると勧告は説明しています。
- ファイル名が `@` で始まると、Ghostscript は「そのファイルから追加の引数を読む」という記法として扱います。差し込む側が、その参照先の内容も用意できれば、複数の引数を一度に渡せます。勧告は、この経路で OS コマンドの実行まで届くことを、既定の `-dSAFER` を付けた呼び出しでも再現したとしています（勧告の記載で、当サイトでは再現していません）。
- 問題はファイルの中身（PostScript）ではなく、ファイル名です。無害な EPS でも、ファイル名を攻撃者が左右できれば成立します。

## 影響を受ける版と条件

| 項目 | 内容 |
|---|---|
| 対象 | Pillow 2.6.0 以上 13.0.0 未満（GitHub、NVD とも同じ範囲） |
| 修正版 | 13.0.0 |
| 弱点 | CWE-88（引数の区切りの不適切な処理）、CWE-78（OS コマンドインジェクション） |
| 評価 | GitHub 提供の CVSS v4.0 は 9.2。NVD の評価は v3.1 で 9.8（Critical） |
| 前提 | Ghostscript が入っていて EPS を開く構成。攻撃者がファイル名を左右できること |

- 前提の「ファイル名を左右できる」は、アップロードされたファイルを、利用者が付けた名前のまま（または名前を元にして）保存して開く構成が当てはまります。名前を自動で決めたり、一時ファイルを経由したりしている場合は、この経路には当たりにくいと考えられます（本記事の推定）。
- コマンド実行まで進むには、`@` で始まる名前に加えて、参照先のファイルの中身も攻撃者が用意できる必要があると、NVD の説明にあります。
- NVD の評価（v3.1）は攻撃元区分が「ネットワーク」、権限・利用者の操作は不要です。これらの前提条件が付くため、実際の危険度は構成によって大きく変わります。

## 修正の中身

修正コミット a2c3631（10/01 UTC）は、Ghostscript に渡す前にファイル名を `os.path.abspath()` で絶対パスに変えます。先頭が `/`（Windows ではドライブ文字）になるので、`-` や `@` で始まる名前が引数として読まれなくなります。あわせて、`-h` という名前の EPS を開いても Ghostscript のヘルプが出ないことを確かめる試験が足されています。修正の差分は 1 か所の小さな変更で、差分から確認できる範囲では上記のとおりです。

## 対応

1. Pillow を 13.0.0 以上に更新します。`pip show pillow` や依存の固定ファイルで版を確かめられます。
2. すぐ更新できない場合は、`Image.open()` に渡す前に、ファイル名を絶対パスに直す、または利用者が付けた名前を使わず自分で決めた名前で保存する、といった対策が考えられます（本記事の推定で、勧告が示す回避策ではありません）。
3. 信頼できない EPS を受け付けない、または Ghostscript を使う EPS の描画を無効にする方法もあります。Pillow の方針では、信頼できない EPS を避けることが以前から勧められています。ただし勧告は、今回の不具合はその注意だけではカバーされないと説明しています。
4. アップロードされたファイルを開いている処理があるサーバーで、`@` や `-` で始まる名前のファイル、心当たりのない Ghostscript の起動がないかを確認します。

## 未確認の点

- NVD の状態は Analyzed（10/27 更新）です。CVSS v3.1 の 9.8 は NVD、v4.0 の 9.2 は GitHub の評価で、数値が異なります。
- EPSS は 1.30%（10/30 時点、百分位 0.70）です。悪用の報告は見つかっておらず、KEV 掲載もなしです。
- 修正コミット（10/01 UTC）から勧告の公開（10/21）まで約 3 週間あります。この間の経緯は未確認です。
- 勧告は「長く存在する不具合で、現行の全版に影響しそう」と書いていますが、NVD の範囲は 2.6.0 からです。2.6.0 より前の版の影響は未確認です。
- 実際の環境での再現は確認していません。記載は勧告、NVD、修正コミットに基づきます。


## 出典
- [GitHub Advisory GHSA-w889-685w-c8fh](https://github.com/advisories/GHSA-w889-685w-c8fh) — GitHub
- [Pillow 13.0.0 リリース](https://github.com/python-pillow/Pillow/releases/tag/13.0.0) — GitHub
- [修正コミット a2c3631](https://github.com/python-pillow/Pillow/commit/a2c363141da31a265dd536c945677db4b64f3ec9) — GitHub
- [PyPI Pillow](https://pypi.org/project/pillow/) — PyPI
- [NVD CVE-2026-112900](https://nvd.nist.gov/vuln/detail/CVE-2026-112900) — NIST NVD
- [FIRST EPSS API](https://api.first.org/data/v1/epss?cve=CVE-2026-112900) — FIRST
- [CISA Known Exploited Vulnerabilities Catalog（JSON）](https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json) — CISA

---
出典: World Security（株式会社NTP） https://n-t-p.io/worldsecurity/articles/pillow-eps-ghostscript-argument-injection-13-0-0-2026-112900