1_クロスサイトスクリプティング(XSS)とは?
クロスサイトスクリプティングとは、スクリプト攻撃の一種になります。
スクリプト攻撃とは?
Webサイトを表示するための言語である「HTML」にスクリプトと呼ばれるプログラムを埋め込むことで、不正な挙動を誘発させる攻撃のことを指します。
※HTMLにスクリプトを埋込むことは、動的なコンテンツ(例:ニュースサイトのトップページ最新記事等が自動で更新される)に必要な技術ですが、スクリプト攻撃はこの性質を悪用したものになります。
クロスサイトスクリプティングについては、下記記事で概要を説明しておりますので、気になる方はこちらもご参照ください。
2_クロスサイトスクリプティングの種類について
クロスサイトスクリプティングについては分析が進んでおり、攻撃の手法により以下の3つに分類されております。
- 反射型XSS(Reflected XSS)
ユーザーのブラウザ経由で悪意のあるリクエストデータ(例:URLのパラメータ)がサーバーに送信され、サーバからの応答ページに悪意のあるスクリプトがそのまま埋め込まれ、受け取ったブラウザでスクリプトが実行される攻撃。メールやSNSで細工したリンクを踏ませて発動し、クッキー窃取やページ改ざん、セッション乗っ取りにつながる。 - 格納型XSS(Stored XSS)
攻撃者が悪意あるスクリプトを、掲示板のコメント・プロフィールなどのサーバー側に保存させる手口。保存されたスクリプトはそのページを閲覧する全てのユーザーのブラウザで実行されるため被害の範囲が広く、認証情報や個人情報漏洩、ワーム化のリスクが高い。 - DOM型XSS
ページのJavaScriptがDOM要素を不適切に扱い、ブラウザ側だけで動的に生成したコンテンツに悪意あるスクリプトが混入して実行される攻撃。サーバー経由の検証を介さないため発見が難しく、クライアントサイドのコードの安全性が重要。

ほう?(ほとんど違いがわからんぞ・・・)

クロスサイトスクリプティング攻撃の種類については、実際の攻撃の流れを確認しないとほとんどわからないと思いますので、実際に見ていきましょう。
3_反射型XSSの攻撃の流れ
これは、以前書いたクロスサイトスクリプティングの概要記事の事例がそのままあてはまります。
下記事例では、セッション情報として使用されるCookieを盗み出すことを目的としております。
3-1_スクリプトが埋め込まれたURL送付 ~ Webサーバへのリクエストまで

3-2_Webページの返却 ~ Cookieの漏洩

4_格納型XSSの攻撃の流れ
下記事例では、掲示板サイトのコメント欄にスクリプトを仕込み、サイトの訪問者に意図しないアラートを表示させてサイトの運営を妨害することを目的としております。


攻撃の流れはなんとなく把握したのですが、反射型と格納型はどこが大きな違いになるのですか?

格納型はスクリプトがサーバに保存され、サイト訪問者に対して実行されてしまうので、影響範囲が広いというのが大きな違いになります。以下に比較表を作成したので見比べてください。
| 反射型XSS | 格納型XSS | |
| 発生場所 | サーバのレスポンス生成時 | サーバ側のデータベースに保存 |
| トリガー | 攻撃用URLを踏ませる(1回限りが多い) | 攻撃コードが保存され、そのページを閲覧する全ユーザに影響 |
| 持続性 | 一時的(リンクを踏んだ時のみ実行) | 永続的(削除されるまで繰り返し実行) |
| 被害範囲 | 通常は誘導したユーザのみ | 保存場所を閲覧する多数のユーザに波及 |
5_DOM型XSSの攻撃の流れ

待ってください・・・そもそもDOMがなんなのか全くわかっていません・・・

失礼しました、DOM(Document Object Model)は、HTMLで書かれたWebページなどをプログラムから扱いやすい「オブジェクトの木構造」として表した仕組みです。HTMLはテキストで書かれた文書そのもので、ブラウザがそのまま表示するだけなら問題ありませんが、プログラム(Javaスクリプトなど)が読み込むことは難しいため、DOMに変換しています。

5-1_スクリプトが埋め込まれたURL送付 ~ Webサーバへのリクエストまで

5-2_Webページの返却 ~ Cookieの漏洩


反射型XSSの攻撃の流れに似ていますが、ポイントは③ブラウザからのリクエストには悪意のあるパラメータが送られず④正常なレスポンスとしてサーバは処理する点です。これはサーバ側の対策では防げません。
攻撃は、ブラウザにレスポンスが返ってきたタイミングで、スクリプトが実行され。DOMを利用することで秘密情報(cookie等)が盗まれ、攻撃者のサーバに転送されます。※そもそもリクエストが全くサーバ側に行かないケースも存在する。



コメント