30秒で判断
- 対応すべき人: Astro 6.3.3 未満を使い、
client:*ディレクティブを付けたコンポーネントに ユーザー入力由来の名前付きスロット名を渡す構成のアプリ利用者 - 対応不要な人: Astro を使っていない、6.3.3 以降を使用中、または名前付きスロット名を動的に生成していない場合
- 確認コマンド:
npm ls astroで解決済みバージョンを確認
概要
コンポーネントが client:* ディレクティブ(クライアントサイドハイドレーション)を使う場合、Astro は名前付きスロットの内容を data-astro-template 属性に挿入します。このとき スロット名を HTML エスケープせずに出力するため、攻撃者が制御するスロット名を使うと属性のコンテキストから抜け出して任意の HTML を注入でき、反射型 XSS(クロスサイトスクリプティング)に至ります。
スロット名がユーザー入力やルーティングパラメータなど外部から来る値で構成される場合に影響を受けます。
CVSSベクトル
| 項目 | 値 |
|---|---|
| CVSS スコア | 7.1(High) |
| 攻撃元区分(AV) | ネットワーク |
| 攻撃条件の複雑さ(AC) | 低 |
| ユーザー関与(UI) | 要 |
| CWE | CWE-79(Cross-site Scripting) |
影響を受けるソフトウェア
| 製品 | ベンダー | 影響バージョン | 修正バージョン |
|---|---|---|---|
| astro | withastro | < 6.3.3 | 6.3.3 |
修正バージョンと回避策
- 修正: Astro 6.3.3 以降へアップデート
- 回避策: 名前付きスロット名にユーザー入力を用いない。スロット名を固定値に限定する
- 確認方法:
npm ls astroでバージョンを確認
関連リンク
データソース: NVD (NIST), OSV (Google), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
