


本記事では「セッションハイジャック」について分かりやすく説明しています。
目次
セッションハイジャックとは
セッションハイジャックとは、Webサイトなどで利用されるセッションIDを盗聴や推測で盗み出し、利用者に「なりすまし」不正アクセスを行うサイバー攻撃の一種です。
スポンサーリンク
セッションIDとは

一般的に個人情報を扱う会員サイトはログイン画面があり、ログインIDとパスワードで認証することで会員サイトにログインします。
この時、ログインした会員のセッションを識別するIDとして「セッションID」が、サーバで払い出されます。Webサーバにより払い出された「セッションID」は、Webブラウザで情報を共有する仕組みであるCookieなどを利用しクライアント側に保存されます。
以降は通信のたびにクライアント側からセッションIDを送ることで、Webサーバは利用者を識別できます。
セッションハイジャックは「セッションID」を盗み取る攻撃
ログインした会員のセッションを識別するIDである「セッションID」、攻撃者はこの「セッションID」を盗聴や推測で盗み取ります。

「セッションID」を盗み取ることで、利用者に「なりすまし」会員サイトなどにアクセスすることが可能となります。その結果、会員サイトなどに登録してある"個人情報"が盗み取られたり、不正操作されたりする被害が発生する危険性があるのです

セッションIDってどうやって盗むの?
セッションIDを推測する

悪意のある攻撃者は、ターゲットのシステムにログインを繰り返し、セッションIDの生成規則を割り出し、有効なセッションIDを推測します。
セッションIDは推測困難である「暗号論的擬似乱数生成器(ランダムで)」などを利用して生成することが一般的ですが、上記図のように安易な生成規則で「セッションID」を生成している場合、簡単にセッションIDを推測されてしまう危険性があるのです。
通信を盗聴して「セッションID」を盗み取る

LANアナライザ、パケットキャプチャツール、ネットワークモニタといった専用機器を使うことで通信を盗聴することが可能です。本来はネットワークに流れるパケット(データ)を監視し問題解決のために用いられる専用機器です。
しかし、この専用機器を悪用すれば、通信内容を盗聴できてしまうのです。
スポンサーリンク
通信データの盗聴を防ぐには、利用しているサイトが「SSL/TLS」による暗号化対策しているか(httpsで始まるサイト)確認することが大切です。

セッションハイジャック対策
セッションIDは推測困難な方法で採番する
セッションIDが単純な生成規則で採番されている場合、悪意のある攻撃者に簡単に推測されてしまう危険性があります。セッションIDは「暗号論的擬似乱数生成器」などを使用して推測困難な手法で生成する必要があります。
セッションIDをURLパラメータに格納しない
セッションIDをURLのパラメータに格納するのは避けましょう。
http://××××.co.jp/×××?session_id=2F3BE9A31F093C
セッションID を URL パラメータに格納していると、Referer経由で外部にURLが漏れた場合、セッションIDが漏洩してしまいます。セッションID はCookieに格納するか、POSTメソッドのhiddenパラメータに格納して受け渡しするのが一般的です。
HTTPS 通信を利用し、 Cookie には secure 属性を加える
Cookieには「secure 属性」という設定項目があり、この項目を設定することでHTTPS通信時のみCookieが送信されます。
「secure 属性」を設定しない場合、HTTP通信時にもCookieが送信されるので「セッションID」が盗聴される危険性があります。
盗聴を防ぐためにも、通信内容が暗号化されたHTTPS通信を利用し、Cookieには「secure属性」を加えるようにしましょう。