クロスサイトスクリプティングの脅威を学ぶ。

勉強のきっかけになった問題

クロスサイトスクリプティングの手口に該当するものはどれか。

  1. 攻撃者が,スクリプトを用いてWebサイトのOSコマンドを呼び出し,任意のファイルの読出しや変更・削除などの不正操作をする。
  2. 攻撃者が,スクリプトを用いて特定のPCへ大量に接続要求を送り出し,通信機能を停止させる。
  3. 攻撃者が用意したスクリプトでWebサイトのサービスポートに順次アクセスし,各ポートに対応するサービスに存在するセキュリティ上の弱点を探し出す。
  4. 攻撃者が用意したスクリプトを,閲覧者のWebブラウザを介して脆弱なWebサイトに送り込み,閲覧者のWebブラウザ上でスクリプトを実行させる。

平成27年秋期問36 クロスサイトスクリプティング|応用情報技術者試験.com

クロスサイトスクリプティング(CSS / XSS)とは、エコーバックするサイトの脆弱性を使って悪いスクリプトを閲覧者に送信します。

ウェブページの部分をユーザからの入力をそのままエコーバック(オウム返し)することによって生成しているアプリケーションのセキュリティ上の不備を利用して、サイト間を横断して悪意のあるスクリプトを注入する攻撃のことをいう。また経緯上、それを許してしまう脆弱性についても、このように呼ばれている。
クロスサイトスクリプティング|ITパスポート試験ドットコム

https://thinkit.co.jp/images/tech/7/1/3.gif
thinkit.co.jp

  • 例えば・・・
    • Webアプリケーションに用意された入力フィールドに,悪意のあるJavaScriptコードを含んだデータを入力する。
    • Webページに,ユーザの入力データをそのまま表示するフォーム又は処理があるとき,第三者が悪意あるスクリプトを埋め込むことでクッキーなどのデータを盗み出す。

電子掲示板のように、閲覧者から送信されたデータをコンテンツの一部として他の閲覧者に見せるようなプログラムがあるWebサイトで生じる脆弱性および攻撃手法で、攻撃者が外部のサイトに用意した悪意のあるスクリプトをターゲットのサイトに注入して閲覧者に送信する

(省略)

攻撃者はターゲットとなる脆弱なサイトへのリンクを設置した罠サイトを設け、閲覧者がリンクをクリックするよう仕向ける。その際、リンクのURLのパラメータ部分にスクリプト(JavaScriptコード)やHTMLタグの断片を埋め込み、閲覧者が脆弱なサイトを開くとページ内に自動的にそれらの悪質なスクリプトが埋め込まれ、即座に閲覧者のWebブラウザで実行される。
e-words.jp

エコーバックとは、送信した文字をそのまま返信してくる機能です。

e-words.jp

セキュリティ対策は、入出力をエスケープすることです。

  • Webアプリケーションがクライアントに入力データを表示する場合、データ内の特殊文字を無効にする処理を行う。
  • HTMLのマークアップ言語で、特定の意味を持つ文字をエスケープする
  • JavaScript特殊文字エスケープさせる
  • HTML 要素の属性は""(ダブルクオーテーション ) で囲む
  • CGIが受け取ったパラメータは、タグなどは無効化する
  • HTTP レスポンスヘッダーに文字コードを指定する
  • 出力する全ての要素に対してエスケープ処理を行う
  • URL は「http : //」か「https : //」で始まるもののみ出力する
  • 要素の内容を動的に生成しない