OWN NEWS GATHER
← 戻る
The Hacker News

Next.jsの「ImageResponse」にサーバーでのコード実行を招く脆弱性――Vercelが修正版「16.3.6」を公開

要点

  • Next.jsの画像生成機能「ImageResponse」において、細工されたSVG入力を通じてサーバー上で任意のコードを実行される恐れがある脆弱性「CVE-2026-94545」が公表された。

  • 脆弱性の深刻度を示すCVSSスコアは9.5(Critical)と評価されており、Next.js 16.2.0から16.3.5までのNode.jsランタイム環境が影響を受ける。

  • 原因は内部で利用されるSVG変換ライブラリ「Satori」のエスケープ不備にあり、Vercelは修正版となるNext.js 16.3.6をリリースした。

  • 執筆時点で悪用の報告やエクスプロイトコードは確認されていないが、セキュリティ監査ツールでの検知に遅れが見られるため、バージョン情報の直接確認が求められている。

  • Webアプリケーションフレームワーク「Next.js」を開発するVercelは2026年9月22日、ソーシャルプレビュー画像などを生成する機能「ImageResponse」に重大なセキュリティ脆弱性が存在することを明らかにし、修正アップデートを公開した。

  • 本脆弱性は「CVE-2026-94545」として追跡されており、悪用された場合、サーバー上で任意のコードを実行される可能性があるという。Vercelが公開したセキュリティアドバイザリによると、本脆弱性の深刻度は共通脆弱性評価システム(CVSS:脆弱性の深刻度を数値化した指標)のスコアで9.5と算出され、最高カテゴリである「Critical(緊急)」に分類されている。

脆弱性の概要と影響を受ける環境

本脆弱性の影響を受けるのは、Next.jsのバージョン16.2.0から16.3.5までの環境であり、かつImageResponseがNode.jsランタイム上で動作している場合となる。Node.jsランタイムはNext.jsにおいてデフォルトで使用される実行環境である。一方、Edgeランタイム上で動作しているImageResponseや、旧メジャーバージョンであるNext.js 15系列はこの脆弱性の影響を受けないとしている。

ImageResponseは、SNS等でコンテンツが共有された際に表示されるOpen Graph画像(SNSシェア時にプレビュー表示される画像)を動的に生成するための機能である。この画像生成処理において、リクエストURLから取得した文字列など、外部の攻撃者が制御可能な値がSVGのコンテンツ、属性、またはスタイルに渡されている場合に、脆弱性の影響を受けるリスクが生じる。

内部ライブラリ「Satori」のエスケープ不備が引き金に

ImageResponseの内部では、画像レイアウトをSVGコードへと変換するために、Vercelが開発するライブラリ「Satori」が利用されている。最終的なPNG画像はこのSVGコードをもとに生成される仕組みとなっている。

同日に公開されたSatori自身のアドバイザリによると、特定の値が適切にエスケープ(特殊文字を無害な文字列へと置き換える処理)されないままSVG出力へ渡される不具合が存在していた。これにより、攻撃者が細工した入力値が通常の文字列ではなく、実行可能なSVGコードとして解釈されてしまう状態が生じていた。

Next.jsにおいては、この不正な値がNext.jsの依存する別のライブラリに存在する脆弱性に到達することで、サーバー上でのコード実行につながる恐れがあるとVercelは説明している。ただし、該当する依存ライブラリの具体的な名称については明らかにされていない。なお、Satori単体のアドバイザリにおける深刻度はCVSSスコア5.3(Moderate)と評価されており、影響範囲は生成されたSVGの利用形態に依存すると説明されている。

修正バージョンの公開と推奨される対応

Vercelは本脆弱性への修正パッチとして「Next.js 16.3.6」を公開した。利用者は npm install next@16.3.6 などのコマンドを通じてアップデートを適用できる。なお、9月23日時点のnpmレジストリにおいて16.2系列向けの個別パッチは提供されていないため、16.2系を利用しているアプリケーションについても16.3.6への移行が必要となる。また、影響を受けないとされるNext.js 15系列に対しても、15.5系列向けにセキュリティ強化を施した「Next.js 15.5.26」が提供されている。Satoriを単独で導入している開発者に対しては、修正済みのバージョン「0.33.5」への更新が案内されている。

直ちにアップデートを実施できない場合の暫定的な回避策(ワークアラウンド)として、Node.js環境のImageResponseで描画するSVGのコンテンツ、属性、スタイルから、攻撃者が制御可能な値を排除することが挙げられている。なお、影響を受けないEdgeランタイムへの切り替えはアドバイザリでは推奨されていない。これは、Next.jsの公式ドキュメントにおいてEdgeランタイムがすでに非推奨(deprecated)と位置づけられているためである。

該当箇所の特定と監査ツール利用時の注意点

アプリケーション内で本機能が利用されているかを確認するには、next/og から ImageResponse がインポートされている箇所を検索する必要がある。代表的な利用箇所としては、リクエスト受信時に画像を生成するルートハンドラー(APIエンドポイント等の処理機構)や、ビルド時またはリクエスト時に画像を生成する opengraph-image ファイルなどが挙げられる。

セキュリティ監視や監査ツールの状況に関して、The Hacker Newsが9月23日に行った確認では、npm audit コマンドで影響対象であるNext.js 16.3.5の脆弱性が検知されなかった。また、GitHub Advisory Databaseへの掲載やCVE-2026-94545の公式レコード公開も同日時点では完了していなかったという。SatoriはNext.jsのパッケージ内にバンドルされているため、依存関係を記録するロックファイル上に直接の名前が表示されない。そのため、開発者自身がNext.jsのバージョンを直接確認する必要がある。

なお、9月23日時点で本脆弱性を悪用した攻撃事例や公開されたエクスプロイトコードは確認されていない。影響を受けるバージョンは、2026年3月18日にNext.js 16.2がリリースされて以降利用可能となっていた。また、Vercelの発表では、同社のホスティング基盤上で運用されているアプリケーションが自動的に保護されているか否かについては言及されていない。2026年8月に修正された2件の重大な脆弱性ではホスティング環境側での保護と更新不要が明記されていたが、今回はその記述がなく、パッチ適用前に悪用が行われたかを事後確認する手段も提供されていない。

元URL