セッション・ハイジャック
セッションとは
セッション管理とは、クライアントとサーバ間で通信を行う際に、通信相手の特定や相手の状態の把握を行うことです。
HTTPはステートレス(クライアントとの通信状態を保持しない)なプロトコルであるため、Webブラウザからのリクエスト内容が同一であれば、Webサイトは毎回同じレスポンスを返すことになります。
しかしこれでは、ログインしたユーザ毎に異なる処理や、複数のWebページにまたがった「一連の処理(トランザクション)」は行えません。
このような処理を行うには、アクセスしてきたユーザが誰なのかを識別し、これまでにどのような処理を行ってきたのかという「状態」を把握する必要があるからです。そのために用いられるのがセッション管理です。
セッション・ハイジャックとは
ウェブアプリケーションの中には、セッションID(利用者を識別するための情報)を発行し、セッション管理を行っているものがあります。
このセッションIDの発行や管理に不備がある場合、悪意のある人にログイン中の利用者のセッションIDを不正に取得され、その利用者になりすましてアクセスされてしまう可能性があります。この問題を悪用した攻撃手法を、「セッション・ハイジャック」と呼びます。
セッションの固定化攻撃
「セッションIDの固定化(Session Fixation)」と呼ばれる攻撃手法があります。
悪意ある人があらかじめ用意したセッションIDを、何らかの方法(*1)で利用者に送り込み、利用者がこれに気付かずにパスワードを入力するなどしてログインすると起こりうる問題です。
悪意のある人がこの攻撃に成功すると、あらかじめ用意したセッションIDを利用し、利用者になりすましてウェブサイトにアクセスすることができてしまいます。
セッションの管理不備による被害
● ログイン後の利用者のみが利用可能なサービスの悪用
不正な送金、利用者が意図しない商品購入、利用者が意図しない退会処理 等
● ログイン後の利用者のみが編集可能な情報の改ざん、新規登録
各種設定の不正な変更(管理者画面、パスワード等)、掲示板への不適切な書き込み 等
● ログイン後の利用者のみが閲覧可能な情報の閲覧
非公開の個人情報を不正閲覧、ウェブメールを不正閲覧、コミュニティ会員専用の掲示板を不正閲覧 等
対象となるwebサービス
● 金銭処理が発生するサイト
ネットバンキング、ネット証券、ショッピング、オークション 等
● 非公開情報を扱うサイト
転職サイト、コミュニティサイト、ウェブメール 等
● その他、ログイン機能を持つサイト
管理者画面、会員専用サイト、日記サイト 等
対策
● セッションIDを推測が困難なものにする。
● セッションIDをURLパラメータに格納しない。
● HTTPS通信で利用するCookieにはsecure属性を加える。
● ログイン成功後に、新しくセッションを開始する。