---
title: "imgproxy の ICO 読み込みで整数あふれによるヒープ破壊、遠隔からの停止やコード実行の恐れ（GHSA-hff9-5pqw-6w9f）: 4.0.0 以上 4.0.16 未満が対象、4.0.16 で修正"
url: https://n-t-p.io/worldsecurity/articles/imgproxy-ico-loader-integer-overflow-heap-4-0-16-ghsa-hff9
lang: ja
kind: 速報
category: 脆弱性・CVE
author: World Security 編集部
published: 2026年10月31日
updated: 2026年10月31日
severity: 緊急
---

# imgproxy の ICO 読み込みで整数あふれによるヒープ破壊、遠隔からの停止やコード実行の恐れ（GHSA-hff9-5pqw-6w9f）: 4.0.0 以上 4.0.16 未満が対象、4.0.16 で修正

> **TL;DR:** 画像変換サーバー imgproxy 4.0.0 以上 4.0.16 未満で、ICO 読み込み時の整数あふれにより領域が小さく確保され、ヒープが壊れて、認証なしの遠隔から停止やコード実行に至る恐れがある不具合（GHSA-hff9-5pqw-6w9f、GitHub は Critical、CVSS v3.1 は 9.8、CWE-122・190、CVE 未割り当て）。修正版は 4.0.16。NVD・EPSS・KEV は CVE がないため照合不可（当サイトでは未再現）。

**要点**
- ICO の読み込みで、データの大きさに 14 を足す計算が 32 ビットで桁あふれし、数バイトしか確保されない領域に大きなデータを書き込んでヒープが壊れる（勧告の説明、当サイトでは未再現）
- 認証なし・ユーザー操作なしでネットワーク越しに引き起こせ、プロセス停止やコード実行に至る可能性がある（CVSS v3.1 は 9.8）
- 対象は imgproxy 4.0.0 以上 4.0.16 未満。修正版は 4.0.16（リリース 9/28 UTC、勧告は 10/30 UTC）。修正は ICO の 1 エントリに 10 MB の上限を設けるなど
- CVE は未割り当てのため、NVD・EPSS・KEV は照合不可。悪用の報告は確認できていない
- 更新が難しい場合は、信頼できない画像が届かないよう取得先を絞る（本記事の推定）

画像変換サーバー imgproxy は、ICO 形式の画像を読み込むとき、ファイル内に書かれたデータの大きさ（32 ビットの値）に 14 バイトを足して領域を確保します。この足し算が桁あふれ（整数あふれ）を起こす値を入れた ICO を送ると、確保される領域が数バイトしかないのに、はるかに大きなデータを書き込んでしまい、ヒープが壊れます（GHSA-hff9-5pqw-6w9f）。勧告によると、結果として imgproxy のプロセスを落とす（サービス停止）ことも、コード実行に至る可能性もあります。GitHub の深刻度は Critical、CVSS v3.1 は 9.8（AV:N/AC:L/PR:N/UI:N）、弱点は CWE-122・CWE-190 です。**CVE は未割り当て**です。修正版は 4.0.16 です。

## 何が起きるか

- 対象は ICO の読み込み処理（vips/icoload.c）です。ファイルの先頭が ICO の印（00 00 01 00）なら、拡張子や宣言に関わらず ICO として処理されます（勧告の経路説明）。
- 勧告の例では、データの大きさに 0xfffffff5 を書くと、14 を足した結果が 32 ビットで 3 に丸まり、3 バイトの領域だけが確保されます。
- その後、読み込み処理は宣言された大きさを前提に、確保した領域の 14 バイト先から読み込みを始めます。勧告の試験用ファイルでは 64 バイトが不正な宛先に書き込まれ、ヒープが壊れます。
- ネットワーク越しに画像を渡せる相手が、認証なしで引き起こせます（PR:N、UI:N）。imgproxy が外部から取得した画像（利用者が指定した URL の画像など）を処理する構成は、特に注意が必要です（本記事の推定）。
- 悪用の報告は確認できていません。CVE がないため、NVD・EPSS・KEV では照合できません。

## 影響を受ける条件

| 項目 | 内容 |
|---|---|
| 対象 | imgproxy 4.0.0 以上 4.0.16 未満（Go モジュール github.com/imgproxy/imgproxy/v3 ほか。勧告の記載） |
| 修正版 | 4.0.16（リリース 9/28 UTC、勧告は 10/30 22:57 UTC。リリースノートは「ICO ローダーの複数の脆弱性を修正」） |
| 弱点 | CWE-122（ヒープベースのバッファオーバーフロー）、CWE-190（整数のオーバーフロー） |
| 評価 | GitHub の深刻度は Critical、CVSS v3.1 は 9.8（CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H） |
| CVE | 未割り当て |
| NVD・EPSS・KEV | CVE がないため照合不可 |

## 修正の中身

修正コミット a821b6a（9/24 UTC、題名は「無効な ICO の読み込みでのセグメンテーション違反を修正」）は、vips/icoload.c を次のように直します。

- ICO の 1 エントリのデータの大きさに上限（10 MB）を設け、超える値は「大きすぎる」として拒否します。
- 足し算の結果を 32 ビットの変数に入れて使い回し、領域の確保に失敗したときはエラーで戻ります。
- 読み込み失敗時に確保した領域を解放し、BMP のヘッダーを入れるのに十分な大きさがない場合もエラーにします。
- 不正な ICO の試験用ファイル 3 点と試験を追加しています。

このコミットが v4.0.16 のタグに含まれることは、比較で確認しました（コミットはタグより前、タグの側が 3 コミット先、遅れなし）。最新のタグは v4.0.20 です。

## 対応

1. imgproxy を 4.0.16 以上（できれば最新）に更新します。コンテナで使う場合はイメージのタグも確認します。
2. すぐ更新できない場合は、外部から渡せる画像の取得先を許可リストで絞る、署名付き URL を必須にするなどで、信頼できない画像が届かないようにします（本記事の推定。勧告に回避策の記載はありません）。
3. 更新前に、プロセスが異常終了していないか、不審な ICO 形式の入力がないかをログで見直します（本記事の推定）。

## 未確認の点

- 悪用の報告は確認できていません。CVE がないため、NVD の評価・EPSS・KEV は照合できていません。
- 勧告は、コード実行に至る「可能性」に触れています。実際にコード実行へつながるか、どの環境で成り立つかは確認できていません。
- 修正から勧告まで約 1 か月あります（9/24 コミット、9/28 リリース、10/30 勧告）。その間の経緯は確認していません。
- 勧告の対象範囲（4.0.0 以上）は構造化データの記載です。それより前の版の扱いは確認していません。
- 実際の環境での再現は行っていません。記載は勧告、修正コミット、リリースノートに基づきます。


## 出典
- [GitHub Advisory GHSA-hff9-5pqw-6w9f](https://github.com/advisories/GHSA-hff9-5pqw-6w9f) — GitHub
- [imgproxy セキュリティ勧告](https://github.com/imgproxy/imgproxy/security/advisories/GHSA-hff9-5pqw-6w9f) — GitHub
- [修正コミット a821b6a](https://github.com/imgproxy/imgproxy/commit/a821b6a4cb07a1bf2bb9077431d1c1e734d79917) — GitHub
- [imgproxy v4.0.16 リリース](https://github.com/imgproxy/imgproxy/releases/tag/v4.0.16) — GitHub

---
出典: World Security（株式会社NTP） https://n-t-p.io/worldsecurity/articles/imgproxy-ico-loader-integer-overflow-heap-4-0-16-ghsa-hff9