セッションハイジャック

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

セッションハイジャックとは、コンピュータネットワーク通信におけるセッション(特定利用者間で行われる一連の通信群)を、通信当事者以外が乗っ取る攻撃手法である。HTTPにおけるWebセッションのハイジャックを指すことが多いが、この用語が示す範囲は必ずしもこれに限定されるわけではない。

概要[編集]

ネットワーク通信において、「片方向かつ単発」の通信は極めてまれである。全く存在しないわけではない。例えば、広く知られているプロトコルでのケースとして、SNMPのSetRequestが挙げられる。これとてGetResponseを返すのが一般的であるが、DOCSIS準拠のケーブルモデムに対してSNMPを用いてケーブルモデムのリモートリセットを行うような場合には、SetRequestを受けたモデムはリセットを開始するため、必ずしもGetResponseが返されるわけではない。

このような例外はあるものの、ほとんどのネットワーク通信には「双方向」(HTTPなど)や「連続」(ストリーミングによる動画配信など)といった要素があり、両者を兼ね備えたものも多数存在する(TCPtelnetなど)。「双方向」や「連続」の通信において、どこからどこまでが一連の通信であるかを明確化するため、「通信の開始」「実際のデータのやり取り」「通信の終了」といった手順で一連の通信を管理することが多く、このような一連の通信をセッションと呼ぶ。

セッションハイジャックとは、このような手順で確立されたセッションを、通信当事者以外が乗っ取る攻撃手法のことである。セッションの乗っ取りを防ぐ仕組みとして「セッションID」(「セッションキー」などの呼称も存在する)と呼ばれる仕組みを用いて管理(セッション管理)することが多い。攻撃者が「セッションID」を得ることができ、その「セッションID」を用いてあたかも通信当事者であるかのように通信を偽装することができればセッションハイジャックが成立する。そのため、セッションIDの奪取と偽装通信の実現がセッションハイジャックの基本となる。

TCPセッション[編集]

TCPはIP通信に対してコネクション機能を設けたものであり、最低限のセッション機能を設けたものともいえる。

TCPにおいてセッションIDに相当する管理項目は、IPアドレスとシーケンス番号である。送信元IPアドレスの詐称TCPシーケンス番号予測攻撃を組み合わせることで、確立済みのTCPセッションに不正データを挿入することやセッションの強制切断を行うことが可能であり、セッションの乗っ取りが可能となる。

TCPシーケンス番号予測攻撃について、1985年にBob Morrisが攻撃手法をレポートしたこと、1995年にこの脆弱性を使った広範囲の攻撃が発生したこと(CA-1995-01)、2001年に不充分な実装に伴う問題が指摘されたこと(CA-2001-09)など、過去より何度か問題となっていたが、対策が行なわれている2008年現在では沈静化している。

HTTPセッション[編集]

HTTPは「双方向かつ単発(1往復)」という性質を持つ通信である。インターネット普及初期においてのWebサーバーでは、1往復通信で充分なサービスのみが提供されており、これらを実現するには下位層であるTCPのセッション管理機能のみで充分であった。後に、インターネットショッピングなどに代表される「同一利用者からの継続的なアクセスを、関連性のある一連のアクセスとして扱いたい(1度目、2度目のアクセスで商品を選択して、3度目のアクセスで商品を購入など)」というニーズを実現するため、HTTP cookieを「セッションID」として一連の通信を関連付けるセッション管理手法が用いられるようになった。

この仕組みにおけるセッションハイジャックについては、HTTP cookieのセッションハイジャック節に詳述されている。なお、攻撃手法としてはクロスサイトスクリプティングSQLインジェクションなども関連する。

関連項目[編集]

脚注[編集]

[ヘルプ]

外部リンク[編集]