とある企業の情報システム部門。頼りなかった若手社員の通称「ネコSE」も、セキュリティーに関する豊富な知識と経験を持つ「センパイ」のおかげで、少しずつ成長してきた。セキュリティー対策を極めるには、攻撃の具体的な手口を知ることも重要だ。今回は、攻撃者がセッションを乗っ取ることでなりすましなどが可能になるセッションハイジャックについて見ていこう。
ネコSE:センパイ、Webサイトを見ていたら同意するかどうかを尋ねられたんですけど、一体何でしょうか(図1)。
センパイ:ちょっと見せてごらん。うん、これは「あなたのCookieを収集しますよ」という画面だね。
ネコSE:えっ、ぼくのクッキーですか?確かに自分でも、おいし過ぎるとは思います。
センパイ:うーん、何か勘違いしているね。
ネコSE:自分で小麦粉とバターを練って焼くんですよ。もう、しっとりしつつもサックサクなんです。いつの間に話題になったんだろう。
センパイ:まあ、そのクッキーが語源ではあるんだが、CookieというのはWebサイトへのアクセスに関する仕組みだよ。セッション管理に使われるものなんだ。
ネコSE:セッション管理?
個々のユーザーを区別する
センパイ:順を追って説明していこうか。まず、Webサイトにアクセスすることを考えてみよう。初期のインターネットでは、同じURL▼にアクセスすると誰がアクセスしても同じ表示だったんだ。
ネコSE:同じURLなら同じ表示って、当然じゃないですか。センパイ大丈夫ですか?
センパイ:本当にそうかな。例えば、私と猫瀬君が、あるショッピングサイトで買い物をするとしよう。となると、同じ商品のURLに同時にアクセスしても同じ表示とは限らないよね?
ネコSE:むむっ。確かに自分は買い物中でも、センパイがそうとは限らないですね。となると、ショッピングカートの表示が変わるかもしれません。
センパイ:いいところに気付いたね。アクセスする人の利用状況に合わせて違う内容を提供するという機能は、もともとのインターネットでは考慮されてなかった。こうしたユーザーを区別しない通信の方式を「ステートレス」と呼ぶ。これに対し、アクセスしてきたユーザーの状態を保持して、それに応じて通信する内容を変える方式を「ステートフル」と呼ぶんだ(図2)。
Uniform Resource Locatorの略。Webページなどのリソースの場所を表す。