セッショントークン窃取攻撃の仕組みと防御策
この記事は約 12 分で読めます
パスワードを突破しなくても、アカウントを乗っ取る方法があります。セッショントークンの窃取です。ユーザーがログイン後にブラウザに保存される認証トークン (Cookie や JWT) を攻撃者が盗み出せば、パスワードも多要素認証 (MFA) も一切必要なく、被害者になりすましてサービスにアクセスできます。SpyCloud の 2024 年レポートによると、インフォスティーラー型マルウェアによって窃取されたセッション Cookie は前年比 60% 増加し、約 220 億件の Cookie データがダークウェブ上で取引されています。Microsoft の脅威インテリジェンスチームは、2024 年に確認した企業向け攻撃の 39% でセッショントークンの窃取が関与していたと報告しています。本記事では、セッショントークン窃取攻撃の技術的な仕組みを解説し、MFA を突破する Pass-the-Cookie 攻撃の実態と、個人・企業それぞれが取るべき防御策を具体的に示します。
結論 - MFA だけでは守れない時代の認証防御
セッショントークン窃取は、MFA を設定していても突破される攻撃です。防御の要点は 3 つあります。第一に、インフォスティーラーの感染を防ぐこと (OS とブラウザの更新、不審なソフトウェアのインストール回避)。第二に、セッションの異常を検知すること (IP アドレスやデバイスの急変を監視)。第三に、パスワードを定期的に更新し、万が一トークンが窃取されてもセッション無効化後の再認証で攻撃者を排除できるようにすること。パスつく.com で定期的にパスワードを更新し、ブラウザにパスワードを保存しない運用を徹底してください。
セッショントークンとは何か
Cookie ベースのセッション管理
Web アプリケーションは HTTP の「ステートレス」な性質を補うために、ログイン後のユーザーを識別するセッショントークンを発行します。最も一般的な方式は Cookie ベースのセッション管理です。ユーザーがパスワードと MFA で認証に成功すると、サーバーはセッション ID を含む Cookie をブラウザに送信します。以降のリクエストではこの Cookie が自動的に送信され、サーバーはセッション ID を検証してユーザーを識別します。つまり、この Cookie を持っている者は「認証済みユーザー」として扱われます。攻撃者がこの Cookie を盗めば、パスワードも MFA も経由せずにログイン済みの状態を再現できるのです。
JWT (JSON Web Token) の仕組み
モダンな Web アプリケーションや SPA (Single Page Application) では、JWT がセッション管理に使われることが増えています。JWT はユーザー情報と有効期限を含む自己完結型のトークンで、サーバー側にセッション状態を保持する必要がありません。JWT は通常、localStorage や sessionStorage、または HttpOnly Cookie に保存されます。JWT の問題点は、一度発行されると有効期限まで無効化が困難なことです。サーバー側でセッションを管理する Cookie 方式であれば、サーバー側でセッションを破棄すれば即座に無効化できますが、JWT は署名検証のみで有効性を判断するため、トークンが窃取された場合に即座に失効させるにはブラックリスト機構が必要になります。
主要な攻撃手法
インフォスティーラーによる大量窃取
2025 年時点で最も深刻な脅威は、インフォスティーラー型マルウェアによるセッショントークンの窃取です。RedLine、Raccoon、Lumma などのインフォスティーラーは、海賊版ソフトウェア、悪意のある広告、フィッシングメールを通じて PC に感染し、ブラウザに保存されたすべての Cookie、保存済みパスワード、暗号資産ウォレット情報を数秒で抽出します。Group-IB の 2024 年レポートによると、1 年間で 1,000 万台以上のデバイスがインフォスティーラーに感染し、窃取されたデータはダークウェブ上で 1 デバイスあたりわずか 10 ドルで販売されています。重要なのは、インフォスティーラーが窃取するのは MFA 認証を通過済みの Cookie だということです。MFA がどれほど強力でも、認証後のセッション Cookie を盗まれれば、攻撃者はそれをそのまま利用できます。
セッションハイジャックの技術的な詳細については、セッションハイジャック対策の技術書 (Amazon)も参考になります。
Pass-the-Cookie 攻撃 - MFA を無力化する手口
Pass-the-Cookie 攻撃は、窃取したセッション Cookie を攻撃者のブラウザにインポートし、被害者のログイン済みセッションをそのまま再現する手法です。攻撃の流れは次のとおりです。まず、インフォスティーラーやフィッシングで被害者のブラウザから Cookie データベースファイルを窃取します。次に、攻撃者は自分のブラウザ (または自動化ツール) に窃取した Cookie をインポートします。ブラウザが対象サービスにアクセスすると、サーバーは有効なセッション Cookie を受け取るため、攻撃者を認証済みユーザーとして扱います。この攻撃が危険な理由は、認証プロセスを完全にバイパスする点にあります。パスワードの強度も、MFA の種類 (TOTP、FIDO2、SMS) も関係ありません。認証は既に完了しており、攻撃者はその「結果」だけを利用するからです。Microsoft は 2024 年に、Midnight Blizzard (旧 Nobelium) グループがこの手法を使って Microsoft 365 の企業アカウントに不正アクセスした事例を公表しています。
XSS (クロスサイトスクリプティング) による窃取
XSS 攻撃は、Web ページに悪意のある JavaScript を注入してセッショントークンを窃取する手法です。Web アプリケーションに XSS 脆弱性がある場合、攻撃者は document.cookie などのコードを埋め込み、被害者の Cookie を外部サーバーに送信できます。これに対する防御が HttpOnly フラグです。HttpOnly 属性が設定された Cookie は JavaScript からアクセスできないため、XSS による窃取を防止できます。ただし、HttpOnly を設定しても、localStorage や sessionStorage に保存されたトークンは JavaScript からアクセス可能であり、XSS に対して脆弱です。OWASP の 2024 年統計では、XSS 脆弱性は依然として Web アプリケーション脆弱性全体の約 18% を占めており、無視できない脅威です。
技術的な防御策
トークンバインディングとデバイス認証
セッショントークン窃取に対する最も効果的な技術的対策は、トークンをデバイスに紐づけるトークンバインディングです。Google は 2024 年に Chrome ブラウザに Device Bound Session Credentials (DBSC) のプロトタイプを実装しました。DBSC はセッション Cookie をデバイスの TPM (Trusted Platform Module) チップに紐づけ、Cookie が別のデバイスで使用された場合に無効化します。これにより、Cookie を窃取しても攻撃者のデバイスでは利用できなくなります。Microsoft も Azure AD (現 Entra ID) で Conditional Access のトークン保護機能を提供しており、トークンが発行されたデバイス以外からの利用をブロックできます。ただし、これらの機能は 2025 年時点ではまだ限定的な展開であり、すべてのサービスで利用できるわけではありません。
セッションの異常検知
トークンバインディングが利用できない環境では、セッションの異常検知が重要な防御層になります。具体的には、セッション中の IP アドレスの急変 (日本の IP から突然海外の IP に変わるなど)、User-Agent 文字列の変化 (Chrome から Firefox に変わるなど)、地理的に不可能な移動 (東京から 10 分後にニューヨークからアクセスなど) を検知し、セッションを強制的に無効化します。Google や Microsoft のクラウドサービスは既にこの種の異常検知を実装しており、不審なセッション利用を検出するとユーザーに再認証を要求します。企業向けには、SIEM (Security Information and Event Management) ツールでセッションログを分析し、異常パターンを自動検出する仕組みが有効です。
個人ユーザーができる対策
ブラウザにパスワードを保存しない
インフォスティーラーはブラウザに保存されたパスワードを最優先の標的にします。Chrome、Firefox、Edge はパスワードを暗号化データベースに保存しますが、インフォスティーラーは OS の資格情報ストアを利用して復号できます。ブラウザのパスワード保存機能ではなく、専用のパスワードマネージャー (1Password、Bitwarden など) を使用してください。専用パスワードマネージャーは OS の資格情報ストアに保存されないマスターパスワードでデータを暗号化するため、インフォスティーラーによる抽出に耐性があります。パスつく.com で各サービスに 16 文字以上の固有パスワードを生成し、パスワードマネージャーで管理してください。
定期的なセッションの確認とログアウト
主要サービスのセキュリティ設定で、アクティブなセッション一覧を定期的に確認してください。Google アカウントでは「お使いのデバイス」、Microsoft アカウントでは「最近のアクティビティ」、GitHub では「Sessions」ページで確認できます。見覚えのないデバイスやロケーションからのセッションがあれば、即座にそのセッションを無効化し、パスワードを変更してください。また、共有 PC やカフェの PC を使用した後は、必ずログアウトし、ブラウザの Cookie を削除してください。「ログイン状態を維持する」チェックボックスは、自分専用のデバイス以外では絶対にオンにしないでください。
OS とブラウザを常に最新に保つ
インフォスティーラーの多くは、OS やブラウザの既知の脆弱性を悪用して感染します。Windows Update、macOS のソフトウェアアップデート、Chrome や Firefox の自動更新を有効にし、セキュリティパッチが公開されたら速やかに適用してください。特に Chrome は、ゼロデイ脆弱性が発見されると数日以内に緊急パッチをリリースするため、自動更新を無効にしないことが重要です。また、不審なソフトウェアのインストールを避け、公式ストアや公式サイトからのみアプリケーションをダウンロードしてください。海賊版ソフトウェアやクラック版は、インフォスティーラーの最も一般的な配布経路です。
今すぐできること
- Google、Microsoft、GitHub のセキュリティ設定でアクティブなセッション一覧を確認し、不審なセッションを無効化する
- ブラウザに保存されたパスワードをすべて削除し、パスつく.com で生成した新しいパスワードをパスワードマネージャーに移行する
- OS とブラウザが最新バージョンであることを確認し、自動更新を有効にする
- 不要なブラウザ拡張機能を削除し、残りの拡張機能の権限を確認する
- 重要なサービスで「ログイン状態を維持する」を無効にし、セッションの有効期間を短縮する
よくある質問
- MFA を設定していればセッショントークン窃取は防げますか?
- いいえ、MFA だけでは防げません。セッショントークン窃取は MFA 認証が完了した後のトークンを狙うため、MFA の種類に関係なく攻撃が成立します。MFA はパスワード漏洩に対しては有効ですが、インフォスティーラーによる Cookie 窃取には別の対策 (ブラウザにパスワードを保存しない、OS を最新に保つ、不審なソフトウェアを避ける) が必要です。
- セッション Cookie が盗まれたかどうかはどうやって確認できますか?
- 直接的な確認は困難ですが、いくつかの兆候があります。身に覚えのないデバイスやロケーションからのログイン履歴、自分が行っていない操作の痕跡 (メール送信、設定変更)、サービスからの「新しいデバイスからのログイン」通知などです。Google や Microsoft のセキュリティ設定でアクティブセッションを確認し、不審なものがあれば全セッションをログアウトしてパスワードを変更してください。
- ブラウザの Cookie を定期的に削除すれば安全ですか?
- Cookie の定期削除はセッションの有効期間を短縮する効果がありますが、根本的な対策にはなりません。インフォスティーラーは感染した瞬間にすべての Cookie を窃取するため、削除のタイミングが感染後であれば手遅れです。Cookie 削除よりも、インフォスティーラーの感染自体を防ぐこと (OS の更新、不審なソフトウェアの回避) と、ブラウザにパスワードを保存しないことが重要です。