目的
セッションハイジャックについて理解を深める。
目次
はじめに
今回は、XSSを用いた個人情報を盗み出すセキュリティ攻撃とその対策について理解を深めていきます!
セッションハイジャック
セッションハイジャック
とは、セッションが保存されているクッキーを狙った攻撃のことを指します。
具体的には、XSSなどを用いて、正規利用者ではない者が正規利用者のセッションを取得する攻撃手法です。
クッキーはセッションをセッションIDという識別番号を用いて保存しますが、このセッションIDを盗み出されると、セッションハイジャックが成立してしまいます。
セッションID
セッションID
とは、通信中の正規利用者へ付与される、固有の識別情報のことです。
セッションハイジャックが行われた場合、アプリケーション内で正規利用者ができることはほとんど実行可能となってしまい、送金や物品購入、なりすましメールの送信やSNSへの犯罪予告など、正規利用者への被害は大きくなります。
具体的な攻撃手法としては以下の3つが挙げられます。
- セッションIDの推測
- セッションIDの盗み出し
- セッションIDの固定
セッションIDの推測
Webアプリケーションに用いられるセッションIDは、以下のように生成規則に問題があると第三者にセッションIDが予測され、悪用されてしまう可能性があります。
- ユーザーIDやメールアドレス
- リモートIPアドレス
- 日時
対策としては独自でセッションIDの生成を行わない
ことです。
推測可能なセッションIDを生成しないためには、独自での生成機構は作らず、フレームワークなどのWebアプリケーション開発ツールを利用することが安全とされています。
セッションIDの盗み出し
XSSを用いたセッションハイジャックがこれにあたります。
JavaScriptでは、<script>document.cookie</script>
というスクリプトでクッキーの情報が表示できます。
このスクリプトへ更に細工をして、攻撃者側のサーバーに正規利用者のクッキーの情報を送付するようにすると、セッションハイジャックが成立します。
仕込まれたスクリプトが発火した時点で、攻撃者に正規利用者のクッキーが行き渡ります。
また、インターネット環境のセキュリティ対策が不十分であると、正規利用者とサーバーの通信の際にセッションIDが傍受されることがあります。
対策としてはXSSを防ぐ
ことと、安全なインターネット環境を用いる
ことが重要です。
安全なインターネット環境を用いるために、インターネット上の通信を暗号化する仕組みをSSL
と言います。
SSL
SSLとは、インターネット上の通信を暗号化してくれる技術です。これにより、第三者からの情報の盗聴や改ざんを防ぐことができます。
クッキーのような重要な情報をやりとりする際はSSLを使うと安全性を保つことができます。
セッションIDの固定
セッションIDの固定化は以下の手順で行われます。
- ①攻撃者は普通の利用者としてセッションID(abc123)を取得
- ②正規利用者に対して①で取得したセッションIDを強制
- ③正規利用者は標的アプリケーションにログイン
- ④攻撃者は、正規利用者に強制したセッションID(abc123)を使って標的アプリケーションにアクセスする
正規利用者は攻撃者が強制したセッションで認証が完了しているため、そのセッションを用いてアクセスした攻撃者はすでに認証済みのページにアクセスできる
対策としてはログイン後にセッションIDを変更する
ことが挙げられます。
セッションIDを固定する方法は多種多様であるため、固定化されないように常に変更し続けることが有効です。具体的には、ログインが完了した時点でセッションIDを変更するという方法があります。
そうすることにより、認証前にセッションIDが固定されたとしても、認証後にセッションIDが変わるため、固定されたセッションIDでアクセスしようと試みる攻撃者は認証されず、攻撃は成功しません。