WORK.SIGNALALL SIGNALS
/ SECURITY / DEEP DIVE

Angularビルド生成マニフェストにコード注入脆弱性(HIGH・CVSS 7.7)

88 / 100SIGNAL DEEP DIVESECURITY約3分で読める

Angularの公式ビルドツール「@angular/build」に、静的プリレンダリングとサーバーサイドレンダリングを組み合わせた構成で、外部データ由来の経路情報が実行可能なサーバーマニフェストに混入するコード注入脆弱性が見つかった。開発元は2026年10月28日にHIGH(CVSS 7.7)として公表し、20・21・22系の修正版を案内した。更新後は再ビルドと再デプロイが必要となる。

30秒でわかる / THE SIGNAL

Angularの公式ビルドツール「@angular/build」に、静的プリレンダリングとサーバーサイドレンダリングを組み合わせた構成で、外部データ由来の経路情報が実行可能なサーバーマニフェストに混入するコード注入脆弱性が見つかった。開発元は2026年10月28日にHIGH(CVSS 7.7)として公表し、20・21・22系の修正版を案内した。更新後は再ビルドと再デプロイが必要となる。

Angularのビルド成果物が攻撃経路になる

Angular開発元が2026年10月28日に公表した「GHSA-w34w-96hf-98hj」は、`@angular/build`が生成する`angular-app-manifest.mjs`および`angular-app-engine-manifest.mjs`の経路文字列の扱いに関する脆弱性だ。対象構成では、`getPrerenderParams()`などが取得した経路パラメータを、生成されるJavaScriptモジュールの文字列へ適切にエスケープせず埋め込む場合がある。悪意ある値を含むビルド成果物をNode.jsのSSRサーバーが読み込むと、サーバープロセス内で任意のJavaScriptが実行される可能性がある。開発元はCWE-94、HIGH、CVSS v4.0の7.7と評価した。

成立にはSSGとSSRの併用、外部入力などの条件がある

すべてのAngularサイトが直ちに遠隔コード実行可能というわけではない。公式勧告が示す主な前提は、`@angular/build:application`で`outputMode: "server"`を使用し、`getPrerenderParams()`または`routesFile`によってパラメータ付きルートをプリレンダリングし、その値がCMSや外部APIなど攻撃者の影響を受けるデータに由来することだ。単なるアポストロフィーを含む値でも生成マニフェストの構文エラーとなり、SSRリクエストでHTTP 500を招く場合がある。既知の実環境悪用は今回の公式資料では確認できない。

影響バージョンと修正版、19系の注意点

開発元による影響範囲は`@angular/build`の22.0.0以上22.2.5未満、21.0.0以上21.2.29未満、20.0.0以上20.3.42未満、および19.2.27以前だ。修正版はそれぞれ22.2.5、21.2.29、20.3.42。19系以前はサポート終了により修正しないと明記されている。10月28日付の公式リリースも確認できる。なお、同日に別件の静的リダイレクトページXSS(GHSA-jp2q-rh7r-4vjf、LOW・CVSS 2.1)が公表され、同じ修正バージョンが案内された。2件の重大度を混同してはならない。

更新だけでは既存のビルド成果物は修正されない

今回の問題は実行時に読み込まれるビルド生成物へ不正なコードが埋め込まれることにある。運用者は`@angular/build`を修正版に更新したうえでアプリを再ビルドし、生成済みマニフェストを含む成果物を再デプロイする必要がある。即時更新できない場合、開発元は`getPrerenderParams()`の返り値を検証・URLエンコードし、引用符、バックスラッシュ、改行など危険な文字を通さない暫定対策を示す。CMSや外部API由来のスラッグを無検証でビルドへ流していないか、ビルドパイプラインと運用構成を点検したい。

TRANSMISSION / AFTER THE SIGNAL

読んだ、その先へ。

気になった変化を共有して、次のシグナルへ。

SHARE THIS SIGNAL

BACK TO THE INDEX / FIND THE NEXT SIGNALALL SIGNALS