昨今、ECサイト、会員サイト等でIDやパスワードを入力してログインするWebサイトが増えてきています。
悪意のある第三者がログイン時の通信に使用するセッションやCookieを抜き出し、本人に成りすまして通信を行う可能性があります。
このような攻撃をセッションハイジャックと呼びます。
セッションハイジャックを防ぐのが難しいと感じる人もいると思いますが、セッションハイジャックの手法と対策を把握することでリスクを軽減することができます。
このページではセッションハイジャックの手法と対策について解説していきます。
目次
1.セッションハイジャックとは?
様々なWebサービスはユーザーの情報資産を守るために、個別認証という形をとってセキュリティ対策を行っています。
個別認証が必要なWebサービスにログインする時、CookieやセッションIDを使用して、アクセスしてきたユーザーがログイン済みかを判断しています。
何らかの方法でCookieやセッションIDを盗み、ユーザーに成りすましてサーバーと通信を行う攻撃をセッションハイジャックと呼びます。
セッションハイジャックの例
例えば、ECサイトで買い物する場合で考えてみましょう。
ECサイトはユーザーIDとパスワードを入力し、ログインする個別認証の仕組みになっています。
買い物リストに商品を入れ、ログアウトせずにECサイトを閉じた時、買い物リストに商品が入った状態がCookieやセッションIDに保存されます。
この状態のCookieやセッションIDを盗むことでユーザーに成りすまして、買い物リストに入った商品を購入することができます。
セッションハイジャックはECサイトだけでなく、インターネットバンキングの不正出金、登録情報の改ざん、クレジットカードなどでも行われる可能性があります。
Cookieについて詳しく知りたい方は以下の記事をご覧下さい。

2.セッションハイジャックの種類
セッションハイジャックとは何らかの方法でCookieやセッションIDを盗み、ユーザーに成りすましてサーバーと通信を行うサイバー攻撃のことでした。
それではセッションハイジャックの具体的な手法を見ていきましょう。
クロスサイトスクリプティング
クロスサイトスクリプティングとは悪意のあるスクリプトを埋め込む攻撃のことです。
どのようにして悪意のあるスクリプトを埋め込むことができるのでしょうか?
Cookieは個別認証が必要なWebサイトにどのユーザーが訪問してきたかを保存できる仕組みになっています。
WebサイトにユーザーのCookieを攻撃者のWebサイトへ送信するスクリプトをすることで、攻撃者は不正にCookie情報を取得することができます。
ECサイトでCookieを攻撃者に不正に取得された場合、成りすまして、商品購入等がされるので注意が必要です。
セッションフィクセーション
セッションフィクセーションとはセッションIDを不正に取得するのではなく、攻撃者のセッションIDをユーザーに使用させて、ユーザーに成りすます攻撃のことです。
セッションフィクセーションを行うためには、ユーザーにセッションIDを使用してもらう必要があります。
攻撃者はユーザーが使用するブラウザにセッションIDを埋め込まなければなりません。
セッションIDを埋め込むためにクロスサイトスクリプティングを利用したセッションフィクセーションが行われることが多いです。
攻撃者のWebサイトにユーザーをアクセスさせ、不正なスクリプトをユーザーのブラウザ上で実行させます。
他のWebサイトにログインする時、不正リクエストを行わせます。
3.セッションハイジャックの対策
セッションハイジャックとは何か、セッションハイジャックの手法を見てきましたが、このような攻撃にどのように対処すればよいのでしょうか?
それではセッションハイジャックの対策をみていきましょう。
セッションIDが分からないようにする
セッションIDを送る方法の一つにURLにセッションIDをつけて送る方法があります。
URLにセッションIDが埋め込まれているので、サーバーはどのクライアントから送られてきたのかを正確に識別できますが、様々な所にセッションIDが流出してしまいます。
そのため、URLにセッションIDをつけないようにしましょう。
推測が困難なセッションIDにする
セッションIDは簡単に予測されるもであってはなりません。
数字や連番等の簡単なセッションIDを利用していると、セッションIDを簡単に予測されてしまいます。
このようなセッションIDの場合、総当たり攻撃を受けると簡単にセッションハイジャックが行われてしまいます。
そのため、セッションIDは推測が困難な値にする必要があり、セッションID生成機能を利用するようにしましょう。
セッションIDをアクセス毎に変える
セッションハイジャックは同じセッションIDを使用することで発生してしまいます。
ログイン後、既存のセッションIDを破棄し、新しいセッションIDを割り振り、送るようにしましょう。
4.入門的な情報セキュリティ知識を習得したい方へ
最後まで読んで頂きまして、ありがとうございました。
セッションハイジャックは情報セキュリティに関する重要用語の一つになっています。
そのため、セッションハイジャックに関する知識だけでなく、情報セキュリティ全般の基礎的な知識を体系的に学ぶことでセッションハイジャックの理解がもっと深まるかと思います。
そこでWeb全般の基礎的な知識を習得するのに「この一冊で全部わかるセキュリティの基本」という本がオススメです。
初学者がいきなり情報セキュリティに関する専門書を読み始めると挫折することが多いです。
そこで途中で挫折せずに最後まで読み切れて、情報セキュリティの全体像を把握するのに便利な一冊になっています。
この本は初めての方にも読みやすいように見開き1ページで文章と図を織り交ぜて端的に解説されています。
この本で全体像を理解してから専門書を読むと取り組みやすいかと思います。
もし、情報セキュリティに関する入門的な知識を幅広く知りたいと思った方はこちらの本を是非読んでいただければと思います。
5.ポイント
- セッションハイジャックとは何らかの方法でCookieやセッションIDを盗み、ユーザーに成りすましてサーバーと通信を行う攻撃のことです
- セッションハイジャックの対策としてセッションIDを分からなくする、推測できないセッションIDにする、アクセス毎にセッションIDを変える等の方法があります