Modern Frontend CVEs

対象CVE: CVE-2025-71329

[緊急警報] image-sizeライブラリのDoS脆弱性 (CVE-2025-71329) に今すぐ対応を!

Node.jsプロジェクトで広く使われる`image-size`ライブラリに、特定の画像形式を処理するとアプリケーションが応答不能になる深刻なサービス拒否(DoS)脆弱性が発見されました。対象バージョンを使用している場合は、早急なアップデートが必須です。

はじめに:`image-size`ライブラリの重大な脆弱性

日本のフロントエンドエンジニアの皆さん、こんにちは。今回は、Node.js環境で画像のサイズ情報を取得する際に非常に便利な`image-size`ライブラリに関する緊急のセキュリティ警告をお届けします。このライブラリのバージョン2.0.2以前に、GHSA-5p2g-fcmc-qvqq(CVE-2025-71329)として識別される深刻度「High」のサービス拒否(DoS)脆弱性が存在することが明らかになりました。

皆さんのプロダクトで画像アップロード機能や、Node.jsバックエンドでユーザーから受け取った画像を処理する機能がある場合、この脆弱性の影響を受ける可能性があります。迅速な理解と対応が求められます。

脆弱性の詳細:なぜサービス拒否が起こるのか

この脆弱性は、`image-size`ライブラリがJXL(JPEG XL)またはHEIF(High Efficiency Image File Format)形式の画像を解析する際に発生します。具体的には、攻撃者が意図的に細工した画像バッファをアプリケーションに送信することで悪用されます。

細工された画像ファイルでは、画像内部の特定の「ボックス(box)」構造のサイズフィールドが、本来はゼロであってはならないにもかかわらず、ゼロに設定されています。`image-size`ライブラリのパーサーがこのような不正な「ゼロサイズボックス」を検出すると、内部的に無限ループに陥ってしまいます。Node.jsはシングルスレッドのイベントループモデルで動作するため、この無限ループはNode.jsのイベントループ全体をブロックし、結果としてアプリケーション全体が新しいリクエストに応答できなくなり、サービス拒否の状態に陥ります。

影響を受けるアプリケーションと確認方法

この脆弱性の影響を受けるのは、`image-size`のバージョン2.0.2以前を使用しているNode.jsアプリケーションです。特に、以下のようなケースに当てはまる場合は注意が必要です:

<ul><li>ユーザーからの画像アップロードを受け付け、その画像サイズを取得するために`image-size`を使用している。</li><li>JXLやHEIF形式の画像を外部から取得し、その処理に`image-size`を利用している。</li><li>画像プレビュー生成やメタデータ抽出など、あらゆる画像処理フローで`image-size`が使われている。</li></ul>

ご自身のプロジェクトで`image-size`のバージョンを確認するには、`package.json`ファイルを見るか、`npm list image-size` または `yarn why image-size` コマンドを実行してください。

今すぐ行うべき対策:迅速なアップデート

この脆弱性に対処するための最も効果的で推奨される方法は、`image-size`ライブラリを直ちに最新バージョン(2.0.3以降)にアップデートすることです。新しいバージョンでは、この無限ループを引き起こす原因となったパースロジックが修正されています。

アップデート方法は以下の通りです:

<strong>npmの場合:</strong><br/>`npm install image-size@latest` または `npm update image-size`<br/><br/><strong>yarnの場合:</strong><br/>`yarn upgrade image-size`

アップデート後、念のため依存関係が正しく解決され、アプリケーションが期待通りに動作することを確認してください。

まとめ:迅速な対応でアプリケーションを守ろう

`image-size`ライブラリのDoS脆弱性は、悪用された場合、あなたのNode.jsアプリケーションを完全に機能停止に追い込む可能性があります。サービスの継続性を確保し、ユーザー体験を損なわないためにも、この脆弱性への迅速な対応が極めて重要です。

セキュリティは継続的な取り組みです。日頃から利用しているライブラリの更新情報に注意を払い、プロジェクトの安全性を確保していきましょう。不明な点があれば、チームメンバーと協力して対応を進めてください。

← ブログ一覧に戻る