セッションID

1.SID(Session IDentifier)

 Webアプリケーションなどで、
   通信中の利用者を識別して行動を捕捉し、
   利用者ごとに一貫したサービスを提供するために
   付与される固有の識別情報

 HTTP自体にはセッションの識別・管理のための仕組みは存在しない
   複数の利用者がアクセスしてきた場合にこれを識別する仕組みが必要となり   
   その時に発行される識別用に使われるのがセッションID

   WebサーバとWebブラウザで情報を共有する仕組みでCookieを応用し、
     初回アクセス時にセッションIDを発行しクライアントに保存する
     以降は通信のたびにクライアント側からセッションIDを申告する
     同時にアクセス中の利用者の識別・同定を行う

   ユーザー名等の識別子とは異なり、
     機械的に生成されて一時的に利用されるもので、
     一連の通信が終了すると破棄される

     同じ利用者が次に通信を開始すると
       新しいセッションIDが与えられる

2.セッションハイジャック(Session hijacking)

 第三者(攻撃者)が何らかの手段でセッションIDを知ることにより、
   セッションを乗っ取る攻撃手法

 ・セッションIDを推測する
   セッションIDの生成ルールがある規則に基づいたものであった場合、
   総当たり攻撃などで推測し悪用する

   セッションIDの生成ルールがユーザー名に基づいたもので合った場合、
   簡単に推測され悪用する

   アカウント登録して送受信データに含まれるセッション情報を解析し、
   他のセッションIDを推測し悪用する

 ・セッションIDの窃取
   Webサイトの脆弱性を突き、不正にユーザーとWebサイトの間に介入し、
   ユーザーからセッションIDを窃取する

   攻撃手法の1つとして、クロスサイトスクリプティングが挙げられる

 ・セッションフィクセーション
   攻撃者が取得した正規のセッションIDを、
   ハイパーリンク経由などで別のユーザーに利用させる

   そのままユーザーがログインしてしまうと、
   攻撃者は自らが利用させたセッションIDを用いて、
   ユーザーのログイン状態に便乗することが可能になる

   セッションを攻撃者が事前にお膳立てすることから、
   「セッションIDのお膳立て」とも呼ばれる

 対策
 ・セッションIDをURLに含めない
   URLにセッションIDを含めると、攻撃者が容易にセッションIDを取得できる
   Cookieを用いてセッションIDを管理する方法に切り替える

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

 ・セッションIDの変更
   ユーザーがログインしたら既存のセッションIDを無効化し、
   新しいセッションIDで管理するようにする

   ログイン後に新しいセッションIDが付与されることで、
   攻撃者がその前に取得したセッションIDではアクセスできなくなる

 ・WAFの利用
   WAF(Web Application Firewall)を利用することで、
   クロスサイトスクリプティングなどを悪用した
   セッションIDの漏えいを抑制する