情報取得日: 2026/07/14/最終確認: 2026/08/10・本ページは公開情報の非公式まとめです
| CVE ID | CVE-2026-54058 |
|---|---|
| 製品 | Python Pillow / Pillow 12.3.0 未満 |
| CVSS | 9.1(Critical) CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H |
| 種別 (CWE) | CWE-125(境界外読み取り) |
| 登録/公開日 | 2026/07/14 |
| 出典 | https://nvd.nist.gov/vuln/detail/CVE-2026-54058 |
Python の画像処理ライブラリ Pillow に、境界外読み取りの欠陥がある。 NVD の記述によれば、12.3.0 より前のバージョンで、**非圧縮の McIdas AREA 画像をファイル名から mmap raw codec 経路で読み込んだとき**、攻撃者が制御可能なヘッダの値によって行ストライド(1行あたりのバイト数)を本来の行幅より小さく設定できる。この状態で `Image.tobytes()` / `getpixel` / `convert` / `save` といった画素アクセスを行うと、マップされた領域の外を読み、**隣接するプロセスメモリを漏えいさせるか、クラッシュする**。12.3.0 で修正されている。 CVSS の評価は分かれている。NVD は CVSS 3.1 で 9.1(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H)とし Critical としている。一方、採番元である GitHub は CVSS 4.0 で 8.3(HIGH)としており、こちらは攻撃前提条件(AT:P)を評価に含めている。当サイトは掲載基準に従い NVD 側の 9.1 を採る。 影響範囲が広くなり得るのは、Pillow が Python の画像処理でほぼ標準的に使われているライブラリだからである。Web アプリケーションの画像アップロード処理、サムネイル生成、機械学習の前処理パイプラインなど、**利用者から受け取った画像ファイルを開く箇所すべて**が経路になる。プロセスメモリの漏えいなので、同じプロセスが扱っていた他の利用者のデータ、セッション情報、環境変数由来の資格情報が読まれ得る。 ただし条件は限定的である。McIdas AREA は気象衛星データ向けの形式であり、一般的な JPEG/PNG の処理では通らない。かつ、**ファイル名を渡す形式(mmap raw codec 経路)**である必要がある。バイト列やファイルオブジェクトから開いている実装では、この経路に入らない。
各ベンダー公式アドバイザリで確認できた事実に基づき整理しています。確認できていない項目は「情報確認中」と明記し、存在しないパッチ番号・バージョンは記載しません。
| 環境 | 対応状況 | 対応方法・備考 |
|---|---|---|
| AWS (ECS/EC2) | パッチあり(アプリ更新) |
Lambda / ECS / EC2 上のアプリケーションで Pillow を 12.3.0 以上へ更新する。Lambda Layer に固めている場合は Layer 側も更新する
AWS のマネージド修正は無く、アプリケーションの依存更新で対応する。Lambda Layer やコンテナイメージに古い Pillow が焼き込まれたまま残りやすい点に注意する。
参照リンク
|
| GCP | パッチあり(アプリ更新) |
Cloud Run / GKE / Cloud Functions 上のアプリケーションで Pillow を 12.3.0 以上へ更新する
GCP 固有のパッチは無く、依存更新で対応する。Artifact Registry の脆弱性スキャンで古い Pillow を含むイメージを洗い出せる。
参照リンク
|
| Azure | パッチあり(アプリ更新) |
App Service / AKS / Functions 上のアプリケーションで Pillow を 12.3.0 以上へ更新する
Azure 固有のパッチは無く、依存更新で対応する。Defender for Cloud のコンテナスキャンで検出できる。
参照リンク
|
| Linux | 情報確認中 |
ディストリのパッケージ(python3-pillow 等)を使っている場合は、各ディストリのセキュリティ更新を適用する。pip で入れている場合は pip install -U "Pillow>=12.3.0"
ディストリ版とpip版が同居していることがある。python -c "import PIL; print(PIL.__version__)" で実際に読み込まれる版を確認する。
参照リンク
|
**Pillow を 12.3.0 以上へ更新するのが恒久対応である。** 依存関係の固定(requirements.txt / poetry.lock / Pipfile.lock)で古いバージョンに固定されていないかを確認する。コンテナイメージを使っている場合は、ベースイメージを更新しただけでは Pillow が上がらないことがあるので、実際に入っているバージョンを `pip show Pillow` で確認する。 更新までの間の緩和は、**入力形式を明示的に絞ること**である。Pillow は既定で対応形式を自動判定するため、利用者が McIdas AREA 形式のファイルを送れば、拡張子が何であっても中身で判定されて処理され得る。`Image.open()` の後に `img.format` を確認して許可した形式以外を弾く、あるいは `PIL.features` で不要なプラグインを無効化する、といった対応で経路を塞げる。 もう一つの緩和は、**ファイル名ではなくファイルオブジェクトやバイト列から開く**ことである。この脆弱性は mmap raw codec 経路に固有なので、`Image.open(io.BytesIO(data))` の形であれば該当経路に入らない。ただしこれは実装の変更であり、恒久対応ではない。更新が先である。 **漏えいの性質上、事後の判定は難しい。** 境界外読み取りはログに残らず、正常なレスポンスとして返る。露出していた期間に画像アップロードを受け付けていた場合は、同一プロセスが扱っていた資格情報・トークンの再発行を検討する。
Critical(CVSS 9.1)に分類されるPython Pillow Pillow 12.3.0 未満の脆弱性です。Python の画像処理ライブラリ Pillow に、境界外読み取りの欠陥がある。 NVD の記述によれば、12.3.0 より前のバージョンで、**非圧縮の McIdas AREA 画像をファイル名から mmap raw codec 経路で読み込んだとき**、攻撃者が制御可能なヘッダの値によって行ストライド(1行あたりのバイト数)を本来の行幅より小さく設定できる。この状態で `Image.tobytes()` / `getpixel` / `convert` / `save` といった画素アクセスを行うと、マップされた領域の外を読み、**隣接するプロセスメモリを漏えいさせるか、クラッシュする**。12.3.0 で修正されている。 CVSS の評価は分かれている。NVD は CVSS 3.1 で 9.1(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H)とし Critical としている。一方、採番元である GitHub は CVSS 4.0 で 8.3(HIGH)としており、こちらは攻撃前提条件(AT:P)を評価に含めている。当サイトは掲載基準に従い NVD 側の 9.1 を採る。 影響範囲が広くなり得るのは、Pillow が Python の画像処理でほぼ標準的に使われているライブラリだからである。Web アプリケーションの画像アップロード処理、サムネイル生成、機械学習の前処理パイプラインなど、**利用者から受け取った画像ファイルを開く箇所すべて**が経路になる。プロセスメモリの漏えいなので、同じプロセスが扱っていた他の利用者のデータ、セッション情報、環境変数由来の資格情報が読まれ得る。 ただし条件は限定的である。McIdas AREA は気象衛星データ向けの形式であり、一般的な JPEG/PNG の処理では通らない。かつ、**ファイル名を渡す形式(mmap raw codec 経路)**である必要がある。バイト列やファイルオブジェクトから開いている実装では、この経路に入らない。
**Pillow を 12.3.0 以上へ更新するのが恒久対応である。** 依存関係の固定(requirements.txt / poetry.lock / Pipfile.lock)で古いバージョンに固定されていないかを確認する。コンテナイメージを使っている場合は、ベースイメージを更新しただけでは Pillow が上がらないことがあるので、実際に入っているバージョンを `pip show Pillow` で確認する。 更新までの間の緩和は、**入力形式を明示的に絞ること**である。Pillow は既定で対応形式を自動判定するため、利用者が McIdas AREA 形式のファイルを送れば、拡張子が何であっても中身で判定されて処理され得る。`Image.open()` の後に `img.format` を確認して許可した形式以外を弾く、あるいは `PIL.features` で不要なプラグインを無効化する、といった対応で経路を塞げる。 もう一つの緩和は、**ファイル名ではなくファイルオブジェクトやバイト列から開く**ことである。この脆弱性は mmap raw codec 経路に固有なので、`Image.open(io.BytesIO(data))` の形であれば該当経路に入らない。ただしこれは実装の変更であり、恒久対応ではない。更新が先である。 **漏えいの性質上、事後の判定は難しい。** 境界外読み取りはログに残らず、正常なレスポンスとして返る。露出していた期間に画像アップロードを受け付けていた場合は、同一プロセスが扱っていた資格情報・トークンの再発行を検討する。
Python Pillow Pillow 12.3.0 未満 を利用している場合、稼働バージョンが影響範囲に含まれるかを一次情報(https://nvd.nist.gov/vuln/detail/CVE-2026-54058)で確認してください。AWS・GCP・Azure・Linux それぞれの対応状況は本ページの「クラウド/OS 別の対応状況」表にまとめています。確認できていない項目は「情報確認中」と明記しており、存在しないパッチ番号・バージョンは記載していません。
本ページの記載は下記の一次情報に基づく非公式まとめです。数値・対応状況は各出典元で最終確認してください(最終確認: 2026/08/10)。