見えるセキュリティ
反射型XSS
REFLECTED XSS
この概念とは?
反射型XSSとは、URLなどから送られた入力をWebサイトが適切に処理せず、その入力を含んだページをそのまま返してしまうことで、悪意あるスクリプトが利用者のブラウザ上で実行される脆弱性です。攻撃者は細工したURLなどへ利用者を誘導し、正規サイト上で攻撃コードを実行させます。
同じ入力が、ただの文字列として表示されるか、ブラウザで命令として解釈されるか。その分かれ目を、入力の居場所と形の変化で追います。
- THEME
- web-vuln
- KIND
- attack
- REVIEW
- self-reviewed ·
反射された入力がコードとして解釈される流れ
入力がどこにあり、閲覧者のブラウザでどの形へ変わるかに注目します。
図の読み方
時間は上から下へ ↓ /「次へ」で1 STEPずつ表示
攻撃者
細工した入力を用意する
閲覧者のブラウザ
レスポンスを解釈する
Webサーバー
入力をレスポンスへ反映する
STEP 1細工した入力を用意する
攻撃者で:入力例(模式表現)
こんにちは(表示を書き換える指示を含む入力)
STEP 01 / 5
細工した入力を用意する
STEP 1 / 5: 細工した入力を用意する
攻撃者が、正規サイトへ送るURLやリクエストに、ブラウザでコードとして解釈され得る文字列を含めます。
この概念の要点
要点
反射型は保存を成立条件としない
反射型XSSでは、リクエスト由来の入力が、そのリクエストに対応するレスポンスなどへ反映され、ブラウザでコードとして解釈されます。サーバーへの継続的な保存は成立条件ではありません。保存された入力が後の閲覧時にも配信される蓄積型XSS(保存型XSS)とは、攻撃入力がレスポンスへ届く経路が異なります。
注意
危険になる境界はブラウザでの解釈
文字列そのものだけで危険性が決まるのではなく、入力がレスポンス内のどの文脈へ置かれ、ブラウザにデータかコードのどちらとして解釈されるかが重要です。
理解確認
参考資料
- IPA安全なウェブサイトの作り方 - 1.5 クロスサイト・スクリプティング
クロスサイト・スクリプティングの仕組みと対策
- OWASPCross Site Scripting Prevention Cheat Sheet
出力エンコーディングと安全な出力処理
- CWECWE-79: クロスサイトスクリプティング
CWE-79CWE-79の日本語分類とXSSの定義