⭐️改めてXSS(クロスサイト・スクリプティング)について

参考: https://www.ipa.go.jp/security/vuln/websecurity/cross-site-scripting.html

概要

  • 通常、Webアプリケーションには外部からの入力(ユーザーの入力内容や操作内容)に対して表示が変化する箇所がある(動的なWebページ)
    • e.g. 入力フォームの確認画面, カートの内容, 新規ユーザーの登録画面
  • この部分のHTML生成の実装に問題があると、クロスサイト・スクリプティングという脆弱性が発生する
  • XSSとは、攻撃者が不正なスクリプトを攻撃対象のHTMLに挿入して、ユーザーに不正リクエストを実行させる攻撃手法
    • 悪意を持った攻撃者が直接、ユーザーのブラウザ(PC)を攻撃するのではない点がポイント

XSSの影響の例

  • クッキー値の盗み出し
    • e.g. サイト利用者のブラウザ上で、攻撃者の用意したスクリプトの実行によりクッキー値を盗まれ、利用者がなりすましの被害に遭う
  • その他のJavaScriptによる攻撃
    • e.g. ブラウザ上でスクリプトを実行させられ、サイト利用者の権限でWebアプリケーションの機能を悪用される
  • 画面の書き換え
    • e.g. Webサイト上に偽の入力フォームが表示され、フィッシングにより利用者が個人情報を盗まれる

XSSの流れ

  1. メール、SNS、掲示板などを通じて罠リンクを送信
  2. 罠リンクをクリック
  3. スクリプトを埋め込んだWebページを返送
  4. クライアントのブラウザ上でスクリプトを実行
  5. クッキー流出、個人情報漏洩… など

対策

  • WAFでブロック
    • AkamaiにもXSSブロックの項目はある
  • 表示の際に、HTMLで特殊な意味を持つ記号文字(メタ文字)をエスケープする
    • 表示されてもブラウザ上で実行されないようにする