セッションハイジャックはなぜ起こるのか?攻撃の仕組みと求められる対策

この記事をシェア

セッションハイジャックとは、Webサイトのユーザーのやり取りであるセッションを乗っ取る行為。セッションハイジャックによってユーザーになりすますことが可能となり、クレジットカードの不正利用や情報漏えいなどの被害につながる。この記事では、セッションハイジャックの仕組みと対策について解説する。

セッションハイジャックはなぜ起こるのか?攻撃の仕組みと求められる対策

セッションとは

セッションハイジャックを理解するためには、まずセッションとは何かということを把握しておくことが重要だ。セッションにはさまざまな意味があるが、インターネットの文脈で使われるセッションとは、アクセスの開始から終了までの一連の通信のことである。通常、Webサイトを閲覧する際には、次のような手順でデータの送受信が行われる。

図1:セッションの仕組み

図1:セッションの仕組み

  • ユーザーのクライアント端末からWebサーバーに接続を要求。
  • Cookieを自動生成し、クライアントに返送。同時にセッションIDと紐づける。
  • 再度の接続をWebサーバーに要求。ブラウザー内に保存されたCookieを送信。
  • 受け取ったCookie情報と合致する、セッションIDに紐づく情報を返送。

同じWebサイト上でほかのページに遷移する場合、③と④が繰り返されることになる。これらWebサイト上における一連の流れがセッションと呼ばれる。ユーザーが同じWebサイト内でさまざまなページに遷移しても、同一のセッションとして扱われる。Webサイトを店舗に例えてみるとわかりやすいかもしれない。ユーザーがある店舗に入店し、店舗の中をいろいろ見てから退店するまでが1つのセッションとみなされるわけだ。

また、Webサイトではそれぞれタイムアウトの期間が設定されている。多くのWebサイトで30分、ユーザーの操作が生じなければタイムアウトする。タイムアウトすることでそのセッションは終了する。Webサーバーでは、個別のセッションを管理するためにセッションIDを生成して利用する。このセッションIDはCookieに保存・管理されることが多いが、URLのパラメーターに付与されるケースもある。セッションIDを用いて、Webサイトはユーザーを判別し、Webサイト上での行動結果を保持できる。

セッションハイジャックとは

セッションハイジャックとは、先述したWebサイトのセッションを乗っ取る(ハイジャックする)行為だ。セッションを乗っ取ることで、攻撃者は別のユーザーになりすましての通信が可能となる。

この場合、直接的にIDやパスワードを窃取するフィッシング攻撃とは異なり、ログイン情報を窃取するわけではない。セッションIDを何かしらの方法を用いて取得することで、第三者になりすますのだ。具体的な方法としては、以下に挙げる3つの方法がある。

セッションIDを推測する

Webサーバーが生成するセッションIDの生成ルールがある規則に基づいたものであった場合、総当たり攻撃などで推測して悪用することが可能だ。また、日付やユーザー名に基づく場合なども推測が容易だ。ほかにも、アカウント登録して送受信データに含まれるセッション情報を解析することで、ほかのセッションIDを推測するといった手法もあり得る。

セッションIDの窃取

Webサイトの脆弱性を突くなどして、不正にユーザーとWebサイトの間に介入し、ユーザーからセッションIDを窃取するケースもあり得る。代表的な攻撃手法の1つとして、クロスサイトスクリプティング(XSS)が挙げられる。

セッションフィクセーション

攻撃者が取得した正規のセッションIDを、ハイパーリンク経由などで別のユーザーに利用させる。そのままユーザーがログインしてしまうと、攻撃者は自らが利用させたセッションIDを用いて、ユーザーのログイン状態に便乗することが可能となる。セッションを攻撃者が事前にお膳立てすることから、「セッションIDのお膳立て」とも呼ばれる。

セッションハイジャックによって起こる被害

セッションハイジャックはなりすましの一種であり、ユーザーに代わって攻撃者がWebサービスなどを利用できるようになるため、以下のような被害が想定される。

機密情報、プライベート情報の漏えい

正規ユーザーになりすました状態でWebサービスなどにアクセスすることで、企業の機密情報やプライベートな情報を盗まれたり、漏えいされたりする可能性がある。

サーバーへの不正侵入

なりすましによって企業のサーバーへ不正侵入されると、Webサイト上の情報が書き換えられ、フィッシングサイトへ誘導されたり、バックドアが設けられたりすることで、さらなる攻撃の足がかりにされることもある。

オンラインバンキングの不正出金

銀行などのオンラインバンキングにおいて、正規ユーザーになりすますことで、不正に金銭を引き出される可能性がある。

登録情報の漏えいや改ざん

攻撃者が正規ユーザーになりすましてWebサービスなどにアクセスすることにより、そのサービスに登録した情報が漏えいしたり、改ざんされたりすることがある。

クレジットカードの不正利用

クレジットカードを利用するオンラインサービスでは、クレジットカードを不正利用され、思わぬ金額を請求されることがある。

セッションハイジャックを防ぐための対策

先述のように、セッションハイジャックの被害を受けると、甚大な損失を被る可能性がある。そのため、セッションハイジャックを防ぐためにも攻撃者にセッションIDを窃取されないための対策が求められる。ユーザーにも高い注意力が求められるが、セッションIDを保存・管理するのはWebサイトの運営側であるため、Webサイトの運営者は以下のような対策を行っておきたい。

セッションIDをURLに含めない

セッションハイジャック対策の基本である。URLにセッションIDを含めると、攻撃者が容易にセッションIDを取得できてしまうため、Cookieを用いてセッションIDを管理する方法に切り替える。

推測が困難なセッションIDにする

ユーザーIDや日付などだけで構成されるセッションIDでは推測が容易なため、擬似乱数を組み合わせるなど、解析が困難なセッションIDを生成するようにする。

セッションIDの変更

ユーザーがログインしたら既存のセッションIDを無効化し、新しいセッションIDで管理するようにする。ログイン後に新しいセッションIDが付与されることで、攻撃者がその前に取得したセッションIDではアクセスできなくなる。

WAFの利用

Webアプリケーションの脆弱性を突いた攻撃を防御するWAF(Web Application Firewall)を利用することで、クロスサイトスクリプティングなどを悪用したセッションIDの漏えいを抑制することが可能だ。

セッションハイジャックは昔からある攻撃手法ながら、今でも関連する被害が後を絶たない。その要因の中でも多いのが、Webサイト運営者側の不備によるものだ。セッションハイジャックの場合、その仕組み上、ユーザー側で防御する方法は限られてしまう。Webサイトを継続的に利用してもらうためにも、Webサイトを運営している企業側で取り得る対策は適切に講じるようにしたい。

この記事をシェア

Webサイトのセキュリティ対策に

サイバーセキュリティ
情報局の最新情報を
チェック!