セッション乗っ取り仕組みとは
セッションハイジャックとは、攻撃者がセッションクッキーやベアラートークンを盗んだり操作したりすることで、既存の認証済みセッションを乗っ取ることです。これらのトークンは、それを保持する者にアクセスを提供します。これにより、攻撃者はログイン時にのみ適用されるセキュリティ制御(レート制限や多要素認証 (MFA)など)を回避することができます。
主なハイライト
- 強力なセッション防御は、どこでもTLSを組み合わせ、強化されたクッキー、短いトークンの有効期限、トークンのローテーションと取り消し、異常ベースのステップアップ認証を組み合わせます。OAuthスタイルの展開では、送信者制約トークン(例えば、DPoPやmTLS)を使用することで、サポートされている場合にトークンの再利用をさらに減少させることができます。
- 盗まれたセッショントークンは、MFAが初回ログイン時にのみ強制される場合、MFAを回避することができます。
- 一般的な経路には、MitMインターセプション、XSSトークンの盗難、マルウェアやブラウザデータの盗難、セッション固定攻撃が含まれます。
- 強力なセッション防御は、どこでもTLSを組み合わせ、強化されたクッキー、短いトークンの有効期限、トークンのバインディングまたはローテーション、異常ベースの再認証を組み合わせます。
- デバイスとユーザーのリスク信号は、認証を強化するかセッションを終了するタイミングを決定するのに役立ちます。
セッションハイジャックとは何ですか?
セッションハイジャック攻撃(セッションテイクオーバーまたはトークン再利用攻撃とも呼ばれる)では、攻撃者がログインユーザーを認証するために使用されるセッショントークン(クッキー、ベアラートークンなど)を盗みます。これにより、攻撃者はユーザーになりすまし、ログイン資格情報を盗む必要を回避し、MFAや同様の防御を突破することができます。これらの攻撃の一般的なターゲットには、消費者向けウェブアプリ、SaaSセッション、VPNポータル、リモートアクセスセッション、特権管理コンソールが含まれます。
セッションハイジャックはエンドツーエンドでどのように機能しますか?
セッションハイジャック攻撃は、正当なユーザーとして偽装するためにトークンを盗むことに焦点を当てています。攻撃の流れは次のようになります:
- ユーザーが有効なセッションを作成するのを待つか、作成させます。
- マルウェア、悪意のあるスクリプト、ブラウザ拡張機能、またはその他の手段を通じてセッションクッキーまたはベアラートークンを盗みます。
- 盗まれたクッキーを使用してサーバーにリクエストを送信することでセッションをハイジャックします。
- 盗まれたトークンが期限切れまたは取り消される前に、ユーザーのアカウントで悪意のある行動を実行します。
セッションハイジャック攻撃は、ブラウザストレージ、クッキー、認証ヘッダー、アプリメモリ、デバイスストアなど、さまざまな場所に存在するトークンへのアクセスに依存しています。攻撃者は、デバイスの指紋、IPの評判、または通常の行動パターンを一致させるなど、再認証やリスクチェックをトリガーしない方法を必要とする場合もあります。
最も一般的なセッションハイジャックの種類
セッションハイジャックは、さまざまな方法で実行できます。よく知られている方法には、以下が含まれます:
- セッション固定:セッション固定攻撃では、ユーザーは攻撃者が知っているセッションIDを使用して認証することを強制されます。これは、フィッシングリンクに埋め込まれているものなどです。これは、ログイン後にセッションIDが再生成されない、予測可能なトークン、または弱いセッション無効化が原因で発生する可能性があります。
- トークン盗難(XSS経由):クロスサイトスクリプティング(XSS)は、ウェブページ内に悪意のあるスクリプトを埋め込みます。ユーザーがサイトを訪れると、これらのスクリプトがセッショントークンを盗むことができます。Secure、HttpOnly、およびSameSiteフラグは、スクリプトがセッションクッキーにアクセスするのをブロックすることで、これを防ぐのに役立ちます。
- マルウェア/ブラウザデータ盗難:ユーザーのシステムにインストールされたマルウェアや悪意のあるブラウザ拡張機能は、ファイルシステム、ブラウザ、および他のキャッシュからクッキーを盗むことができます。
- サイドジャッキング:サイドジャッキング攻撃は、ネットワークトラフィックからセッショントークンを嗅ぎ取ることを含みます。これは、ネットワークトラフィックを暗号化するためにTLSが使用されるため、ほとんど時代遅れです。
- AIの監視中間者攻撃(MitM)または経路上攻撃では、攻撃者がユーザーとサーバー間の通信経路に自分自身を挿入します。これにより、ユーザーのウェブブラウジングトラフィックからセッションクッキーを傍受することができます。しかし、TLSの使用により、これを実行することがさらに難しくなります。
これらの方法はすべて、セッショントークンまたはクッキーへのアクセスを提供できます。その後、クッキーリプレイまたは「パス・ザ・クッキー」攻撃に使用され、攻撃者のブラウザまたはAPIクライアントがそれを使用して正当なユーザーセッションを乗っ取ります。
ハイジャックされたセッションの兆候
ハイジャックされたセッションは、攻撃者が正当なユーザーから取得したデバイス/ブラウザのセッションを使用することを含みます。これに関するいくつかの指標は次のとおりです:
- 不可能な移動
- 新しいデバイスフィンガープリント
- 異常なASNまたはジオロケーション
- 同時セッション
- 異常なリクエストパターン
- 特権昇格の試み
- 異常な管理者の行動
- 二つの場所からのトークン再利用
- 通常のブラウザヘッダーなしのセッションクッキーレプレイ
- クライアント特性の突然の変化
これらはすべてセッションハイジャック攻撃を示す可能性がありますが、すべてが完璧ではありません。たとえば、モバイルIPの変動、VPNの出口変更、または共有NATが偽陽性の検出を引き起こす可能性があります。この理由から、複数の指標を相関させることで、より高い信頼性の検出が可能になります。
セッションハイジャックを確認するのに役立つテレメトリー
さまざまなログやテレメトリーソースは、疑わしいセッションハイジャック攻撃を確認するのに役立ちます。
- ウェブ/アプリログ:認証イベント、トークンの更新パターン、セッションの発行および取り消し。
- アイデンティティログ:アイデンティティプロバイダー(IdP)へのサインイン、条件付きアクセスのトリガー、ステップアップチャレンジ。
- ネットワークおよびエンドポイントシグナル:リスキーな宛先、マルウェアアラート、ブラウザの整合性シグナル、デバイスの姿勢の変化。
セッションハイジャックの影響
セッションハイジャック攻撃は、パスワードの盗難なしにアカウントを乗っ取る、データアクセス、不正な取引、管理コンソールの侵害など、重大なビジネスへの影響を及ぼす可能性があります。しばしば、ウェブセッションは主要なターゲットとなります。なぜなら、ブラウザがトークンを保持し、ユーザーがデバイスを再利用し、多くのアプリが「セッションは信頼に等しい」と仮定するからです。
セッションハイジャックは非常に危険です。なぜなら、以下を含む重要なアイデンティティ防御を無効にするからです:
- MFAバイパス:セッションハイジャックは、MFAがログイン時のみ適用される場合、MFAをバイパスする可能性があります。セッショントークンはログイン後も有効であり、攻撃者がセッションを乗っ取り、MFAをバイパスすることを可能にします。これを防ぐためのベストプラクティスには、ステップアップ認証、継続的な検証、短いトークンのTTL、および高リスクセッションのトークン取り消しが含まれます。
- 無効なZTNA:デフォルトでは、ゼロトラストネットワークアクセス(ZTNA)は、正当なユーザーに付与される特権を制限するように設計されています。セッションハイジャックが発生すると、攻撃者は正当なユーザーであると見なされるため、ZTNAは保護を提供しません。継続的な検証は、このリスクを管理し、ログイン時だけでなく、セッション全体にわたってアイデンティティ、デバイスの姿勢、およびリスクシグナルを定期的に再確認します。
セッションハイジャックに対する実用的な防御
組織は、複数のレベルでセッションハイジャックに対する防御を実装できます。これには、セッションハイジャックを防止し、セッショントークンの潜在的な露出から保護するための明示的な作業が含まれます。
リプレイ価値を減少させるセッション管理コントロール
セッションハイジャック攻撃は、盗まれたトークンを使用して正当なセッションを乗っ取ることを含みます。このリスクを軽減する方法には、以下が含まれます:
- 敏感なアクションに対して短い有効期限と再認証。
- トークンのローテーション、取り消しリスト、異常駆動の無効化。
- 異なるクライアントコンテキストからの同時トークン使用の検出。
ブラウザとクッキーの強化の基本
セッションハイジャック攻撃には、トークンを盗む能力が必要です。これを防ぐ方法には、以下が含まれます:
- スクリプト(XSS)やクロスサイトスクリプティング(CSF)によるクッキーの盗難を防ぐために、Secure、HttpOnly、およびSameSiteのHTTPフラグを使用します。
- すべてのページでHTTPSの使用を強制します。
- ローカルに保存されたトークンを保護します(localStorageトークンはスクリプトからアクセス可能です)。
セッションハイジャック攻撃を防ぐ
セッションハイジャックは、認証トークンが貴重であり、攻撃者がログイン中心の防御を回避できるため、一般的な脅威です。組織は、初回ログイン後に侵害されたセッションを特定するために、層状の防御と継続的なリスク評価が必要です。
セッションハイジャック攻撃を探す際には、以下を探してください:
- 検出されたセッションの異常
- 取り消しまでの時間
- リスクの高いイベントに対するステップアップ認証率
- トークンリプレイのインシデントの削減。
よくあるご質問
MFAが有効になっていても、セッションハイジャックは発生しますか?
はい、MFAはログインイベントのみを保護し、ログイン後に生成されるセッショントークンを保護しないためです。攻撃者がセッションクッキーまたはトークンを盗むと、それを使用して認証されたセッションにアクセスできます。敏感なアクションに対するステップアップ認証、短いセッションの有効期限、トークンのローテーション、疑わしい活動に対する取り消しなどの制御は、これらのリスクを減少させます。また、組織は新しいデバイス、異常な場所、または認証されたセッションの異常な行動などの信号を監視できます。
セッションハイジャックは資格情報の詰め込みと同じですか?
いいえ、資格情報の詰め込みは侵害されたユーザー名/パスワードのペアを使用してユーザーとしてログインし、MFAやレート制限がこれを防ぐのに役立ちます。セッションハイジャックは既存のセッションを乗っ取るものであり、強力なセッション管理とトークン保護によって軽減できます。
セッション固定とは何ですか、そしてそれはどのように防止されますか?
セッション固定は、攻撃者が被害者に攻撃者が知っているセッションIDを使用して認証させることです。アプリケーションが認証後や権限変更後に新しいセッションIDを作成しない場合、これは問題になります。これを防ぐためのベストプラクティスには、ログイン時や権限昇格時にセッションIDを再生成し、古いセッションを無効にし、URL内のセッションIDを拒否し、安全なクッキー処理を確保することが含まれます。
ハイジャックされたセッションを確認するのに役立つログや信号は何ですか?
ハイジャックされたセッションは、セッション発行、リフレッシュパターン、サインインイベント、条件付きアクセスのトリガー、ログアウトまたは取り消しイベントに関するデータを含むWebアプリケーションおよびアイデンティティプロバイダーのログを使用して特定できます。侵害されたセッションの高信頼性の指標には、2つの遠く離れた場所から使用される同じセッショントークン、通常のユーザーパターンと一致しない同時セッション、または突然のクライアント特性の変化が含まれます。デバイスの姿勢の変化、エンドポイントの検出、疑わしいブラウザの動作、アプリ内の異常なアクションのシーケンスなどの信号を使用して検出を強化できます。
Secure、HttpOnly、およびSameSiteクッキーは、セッションハイジャックを完全に防止しますか?
これらのフラグは、セッションクッキーがスクリプトによって盗まれるリスク、ダウングレード攻撃、および一部のクロスサイトの悪用パターンを減少させるように設計されていますが、これらの攻撃を防ぐことはできません。たとえば、攻撃者はユーザーのデバイスにインストールされたマルウェアを使用してセッションクッキーを盗むことができます。TLSの全域使用、CSP、XSS防止、短命のセッション、トークンのローテーション、および異常駆動のステップアップ認証を使用することで、セッションハイジャックのリスクを減少させることができます。
This page was machine-translated. If you notice any inaccuracies or have feedback, please feel free to send it to us here.