セッションハイジャックの仕組みと発生原因を解明!必要とされる防御策とは?
セッションハイジャックとは、Webサイトのユーザーセッションを乗っ取る行為です。この攻撃により、ユーザーになりすましてクレジットカードの不正利用や情報漏えいといった被害が発生する可能性があります。本記事では、セッションハイジャックの仕組みとその対策について詳しく解説します。

セッションとは
セッションハイジャックとは、Webサイトのユーザーセッションを乗っ取る行為です。この攻撃により、ユーザーになりすましてクレジットカードの不正利用や情報漏えいといった被害が発生する可能性があります。本記事では、セッションハイジャックの仕組みとその対策について詳しく解説します。
1.ユーザーのクライアント端末がWebサーバーに接続を要求する。
2.サーバーはCookieを自動生成してクライアントに返送し、同時にセッションIDと紐づける。
3.再度クライアントが接続を要求すると、ブラウザに保存されたCookieをサーバーに送信する。
4.サーバーは受け取ったCookie情報をもとに、対応するセッションIDの情報を返送する。
この一連の流れがセッションと呼ばれ、同じWebサイト内でページを遷移しても同一セッションとして扱われる。店舗に例えると、ユーザーが店内を見て回り、退店するまでが1つのセッションにあたる。また、Webサイトではセッションのタイムアウトが設定されており、多くの場合30分間操作がなければセッションが終了する。サーバーはセッション管理のためにセッションIDを生成し、これをCookieやURLパラメーターに保存して利用することで、ユーザーを識別し行動を記録する。
セッションハイジャックとは
セッションハイジャックとは、Webサイトのセッションを乗っ取る行為を指します。この攻撃により、攻撃者は別のユーザーになりすまして通信を行うことが可能になります。この手法は、フィッシングのようにIDやパスワードを直接窃取するものとは異なり、セッションIDを取得することで第三者になりすます点が特徴です。以下に代表的な3つの手法を挙げます。
セッションIDを推測する
セッションIDがWebサーバーで一定のルールに従って生成される場合、総当たり攻撃によって推測され、悪用される危険性があります。特に、日付やユーザー名に基づいて生成される場合は、その推測が簡単になる可能性があります。また、送受信されるデータ内のセッション情報を解析し、他のセッションIDを推測することも考えられます。
セッションIDの窃取
Webサイトの脆弱性を利用して、不正にユーザーとWebサイトの通信に介入し、セッションIDを盗むケースも存在します。代表的な攻撃方法としては、クロスサイトスクリプティング(XSS)が挙げられます。
セッションフィクセーション
攻撃者は、正規のセッションIDを取得し、それをハイパーリンクなどを通じて別のユーザーに使用させます。その後、ユーザーがログインすると、攻撃者はそのセッションIDを使ってユーザーのログイン状態に便乗できるようになります。この手法は、攻撃者がセッションの準備をすることから、「セッションIDのお膳立て」とも呼ばれています。
セッションハイジャックによって起こる被害
セッションハイジャックはなりすましの一種であり、攻撃者がユーザーに代わってWebサービスを利用できるようになります。その結果、以下のような被害が発生する可能性があります。
機密情報、プライベート情報の漏えい
正規のユーザーになりすました攻撃者がWebサービスにアクセスすることで、企業の機密情報や個人情報が盗まれたり、漏洩するリスクが高まります。
サーバーへの不正侵入
なりすましにより企業のサーバーに不正侵入されると、Webサイトの情報が改ざんされ、フィッシングサイトに誘導されたり、バックドアが設置されてさらなる攻撃の起点となることがあります。
オンラインバンキングの不正出金
オンラインバンキングで正規ユーザーになりすますことにより、不正に資金を引き出されるリスクがあります。
登録情報の漏えいや改ざん
攻撃者が正規ユーザーを装ってWebサービスにアクセスすると、そのサービスに登録されている情報が漏洩したり、改ざんされたりすることがあります。
クレジットカードの不正利用
オンラインサービスでクレジットカードを使用していると、不正にクレジットカードが利用され、予期しない金額が請求されることがあります。
セッションハイジャックを防ぐための対策
先に述べたように、セッションハイジャックの被害を受けると、大きな損失を被る可能性があります。そのため、攻撃者にセッションIDを窃取されないように、適切な対策を講じることが重要です。ユーザーにも注意が必要ですが、セッションIDの保存・管理はWebサイトの運営者の責任であるため、運営者は以下の対策を実施することが求められます。
セッションIDをURLに含めない
セッションハイジャック対策の基本は、セッションIDをURLに含めることを避けることです。URLにセッションIDが含まれると、攻撃者が簡単にそのIDを取得してしまうため、Cookieを使用してセッションIDを管理する方法に切り替えることが推奨されます。
推測が困難なセッションIDにする
ユーザーIDや日付など単純な要素で構成されるセッションIDは推測しやすいため、擬似乱数を組み合わせるなど、解析が難しいセッションIDを生成することが求められます。
セッションIDの変更
ログイン時に、現在のセッションIDを無効にし、新しいセッションIDを発行します。これによって、攻撃者がその前に取得したセッションIDではアクセスできなくなります。
WAFの利用
Webアプリケーションの脆弱性を悪用した攻撃を防ぐために、WAF(Web Application Firewall)を利用すれば、クロスサイトスクリプティングなどによるセッションIDの漏えいを防ぐことができます。
セッションハイジャックは昔から存在している攻撃手法ですが、今もなお被害が続いています。その原因としては、Webサイト運営者の不備が大きな要因です。セッションハイジャックの仕組みでは、ユーザーが防御する手段は限られているため、Webサイトを継続的に利用してもらうためにも、運営者側で適切な対策を取ることが求められます。


