セッションハイジャック

セッションハイジャック

Webサイトなどでは、通信中のユーザーを識別するためにセッションIDを発行することがあります。このセッションIDはWebサーバーがユーザーごとに発行し、複数の利用者がサーバーにアクセスしても識別できるようになっています。

セッションハイジャックでは、悪意のある第三者が何らかの方法でセッションIDを窃取し、本人になりすましてWebサイトとの通信を行います。

セッションハイジャックの主な原因

セッションハイジャックによりセッションIDを窃取されてしまう原因には、主に次のようなものがあります。

単純なIDを利用している

セッションIDがどのようなものを使用しているかは、Webサイトの仕様により異なります。Webサイトの発行するセッションIDが連番や日時、ユーザーIDなど推測しやすいものだと、攻撃者に狙われやすくなってしまいます。また、単純なIDを使用している場合は、ブルートフォース攻撃(総当たり攻撃)によってIDが窃取されてしまうこともあります。

セッションID固定化攻撃

セッションID固定化攻撃は攻撃者が予め正規のユーザーとしてWebサイトにアクセスしておきます。このとき、攻撃者は正規のユーザーとしてアクセスしているので、正規のセッションIDが発行されます。攻撃者はこのようにして手に入れたセッションIDを利用者に対して送りつけることで、それを知らずにログインしてしまったユーザーの情報を窃取します。セッションID固定化攻撃はセッションフィクセーションと呼ばれることもあります。

脆弱性による漏えい

Webサイトやアプリケーションに何らかの脆弱性がある場合は、悪意のある攻撃者はこれを利用してセッションIDを窃取することがあります。脆弱性を利用した代表的な攻撃手法にはクロスサイトスクリプティング(XSS)などがあります。

セッションハイジャックへの対策

セッションハイジャックを防ぐためには、セッションIDを推測困難なものにすることに加え、漏えいさせないために脆弱性に対する対策を行うことが大事です。そのためには、次のような方法が考えられます。

推測困難なIDを発行する

ユーザーのID、アクセスした日時、連番などを使ってセッションIDを発行している場合は攻撃者に推測されてしまう危険性が高くなります。攻撃者による推測を防ぐには、擬似乱数を使用するなど、複雑なアルゴリズムによって予測困難なセッションIDを生成します。

CookieまたはPOSTメソッドで管理する

セッションIDは、GETメソッドによって送信することができます。しかし、この場合はWebサイトのURLにパラメータとしてIDが含まれてしまいます。このURLが悪意のある第三者に知られてしまうと、不正にアクセスされてしまう原因となります。セッションIDを送信するときは、GETメソッドを使わずにPOSTメソッドを使うか、Cookieを利用するようにします。

Cookieの有効期限は短く設定する

Cookieは利用者のWebブラウザに保存されるため、ブラウザの脆弱性を利用した攻撃によりセッションIDを保存したCookieが盗まれてしまうことも考えられます。Cookieを利用してセッションIDを発行する場合は、有効期限を短く設定し、最低限必要な時間のみ保存するようにします。

セッションIDは破棄する

ユーザーがログアウトしたときやタイムアウトが発生した場合はセッションIDを破棄し、再びログインがあった場合に新たなセッションIDを発行するようにします。破棄せずに同じIDを使用していると、セッションID固定化攻撃の標的となってしまうこともあります。

WAFを利用する

WAFとは、Webサイトなどを狙った攻撃から防御するためのファイアウォールのことで、クロスサイトスクリプティングによる攻撃などはWAFによって防ぐことができます。

検索

MENU

サンプルコード集

Webの基礎知識

coming soon…

  • コンテンツ制作中
PAGE TOP