セッションフィクセーション

セッションフィクセーションとは


セッションフィクセーション(session fixation)とは、システムが他人のセッションID(SID)を不正に固定することを許す脆弱性を利用した攻撃手法のことです。この手法では、攻撃者が事前に取得したセッションIDをユーザーに無理やり使わせることで、そのユーザーになりすましたり、個人情報を不正に取得したりします。ほとんどのケースで、セッションフィクセーションはWebベースのアプリケーションに対して行われ、URLやPOSTデータからのセッション識別子を使って実行されます。

攻撃の流れ


攻撃のシンプルなケースを見てみましょう。
1. アリスが銀行のサイト「http://unsafe.example.com/」で口座を持っているとします。
2. マロリーがアリスの銀行口座からお金を盗もうと計画している攻撃者です。
3. アリスはマロリーをそれなりに信頼しており、彼女から送られたリンクをクリックします。
4. マロリーは「http://unsafe.example.com/?SID=I_WILL_KNOW_THE_SID」のリンクを作り、ここに固定されたセッションIDを表示させます。
5. アリスがそのリンクをクリックするとログイン画面が表示され、アリスは通常通りにログインします。
6. マロリーはアリスのセッションを乗っ取り、銀行口座に無制限でアクセスできるようになります。

このようにして、マロリーはアリスの信頼を利用し、攻撃を成功させます。

セッションID生成の誤解


多くの人は、サーバーが生成したセッションIDのみを受け入れるサーバーは攻撃から安全だと考えますが、実際はそうとは限りません。以下の状況でセッションフィクセーション攻撃が成立します。
1. マロリーが「http://vulnerable.example.com/」へアクセスして、セッションIDを確認します。サーバーは例えば「Set-Cookie: SID=0D6441FEA4496C2」と応答します。
2. マロリーはアリスに「http://vulnerable.example.com/?SID=0D6441FEA4496C2」のリンクを送ります。
3. アリスはそのリンクをクリックしてSID=0D6441FEA4496C2でログインします。
4. マロリーはこのセッションにアクセスでき、アリスの口座にアクセス可能になってしまいます。

クロスサブドメイン攻撃


また、この攻撃はクロスサブドメインへのCookieの影響を受けることもあります。たとえば、以下のシナリオでは、サブドメインがワイルドカードCookieを設定し、他のサブドメインに影響を与える場合があります。
1. メインサイト「www.example.com」があり、そこに非信頼のサブドメイン「evil.example.com」が存在する場合、マロリーはアリスを自サイトに誘導します。
2. アリスが「evil.example.com」にアクセスすると、彼女のブラウザにはセッションCookieが設定されます。
3. アリスが再び「www.example.com」を訪れると、サブドメインCookieが送信され、実質的にマロリーのセッションがアリスのものとして扱われます。
4. アリスがログインすると、マロリーは彼女のアカウントにアクセスできる情況が発生します。

防御策


このような攻撃に対抗するためには様々な対策があります。以下は主な対策として挙げられるものです。
1. URLやPOST変数からのセッション識別子を受け入れないこと:これによりセッションの漏洩リスクを低減できます。
2. ログイン時にセッションIDを変更すること:これにより、固定セッションIDを使った攻撃を減少させます。
3. Cookieにセッション識別子を保存する:これにより、一定のセキュリティを維持できます。
4. HTTPSによる通信の暗号化:この手法にはSSL/TLSを利用し、セキュリティを高めることが求められます。
5. リクエストごとのセッション再生成:新しいセッション識別子を生成することで、セッション固定のリスクが減少します。

ユーザーは常にログイン行為を行う際には注意が必要で、パスワードを変更することやフィッシングリンクを避けることを心がけるべきです。セッションフィクセーションの影響を受けないためには、これらの対策に加え、多層的な防御戦略が求められます。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。