Secuestro de sesión: cómo los atacantes roban tu inicio de sesión

Lectura de 10 min aprox.

セッションハイジャックとは、正規ユーザーの Web セッションを攻撃者が乗っ取り、不正にアクセスする攻撃手法です。セッショントークン (Cookie に保存されるセッション ID) を窃取・推測することで、攻撃者はパスワードを知らなくてもユーザーになりすますことができます。OWASP の 2024 年レポートによると、セッション管理の不備は Web アプリケーション脆弱性の上位 10 項目に含まれており、全 Web 攻撃の約 7% がセッション関連の脆弱性を悪用しています。2025 年現在、Cookie の窃取を目的としたインフォスティーラー型マルウェアの検出数は前年比 58% 増加しており、セッションハイジャックの脅威は拡大傾向にあります。ログイン済みの状態を奪われるため、<Link href="/glossary/two-factor-authentication">二段階認証</Link>を設定していても突破される可能性がある点が、この攻撃の深刻さです。本記事では、セッションハイジャックの技術的な仕組みと、ユーザー側で実践できる具体的な防御策を解説します。

セッションハイジャックの仕組み

XSS によるセッショントークンの窃取

クロスサイトスクリプティング (<Link href="/glossary/xss">XSS</Link>) 攻撃は、Web ページに悪意のある JavaScript を注入する手法です。ユーザーが改ざんされたページにアクセスすると、スクリプトがセッション Cookie を読み取り、攻撃者のサーバーに送信します。Cookie に HttpOnly 属性が設定されていない場合、JavaScript から document.cookie でセッション ID を取得できるため、XSS はセッションハイジャックの最も一般的な手法の 1 つです。HackerOne の 2024 年バグバウンティレポートでは、報告された脆弱性の約 20% が XSS 関連であり、そのうちセッショントークンの窃取に直結するものが 3 割を占めていました。

暗号化されていない通信の盗聴

暗号化されていない HTTP 接続では、セッショントークンが平文で送信されます。公共 Wi-Fi など同一ネットワーク上の攻撃者は、パケットスニッフィングツールを使ってこれらのトークンを傍受できます。2010 年に公開された Firesheep というツールは、公共 Wi-Fi 上で他人のセッション Cookie を簡単に傍受できることを実証し、HTTPS の重要性を世に知らしめました。現在でも、HTTPS を使用していないサイトでは同様のリスクが存在します。注意すべき点として、HTTPS を使用していても、Secure 属性が設定されていない Cookie は HTTP リクエストにも付与されるため、混在コンテンツ (Mixed Content) がある場合にはトークンが平文で漏洩する可能性があります。

セッション管理の攻撃手法と防御を体系的に学ぶには、セッションセキュリティと XSS 対策の解説書 (Amazon)が参考になります。

セッション固定攻撃

セッション固定攻撃では、攻撃者が事前に既知のセッション ID を被害者に設定します。被害者がそのセッション ID のままログインすると、攻撃者は同じセッション ID を使って認証済みのセッションにアクセスできます。適切に実装されたサービスでは、ログイン時にセッション ID を再生成することでこの攻撃を防いでいますが、すべてのサービスが正しく対策しているとは限りません。よくある誤解として「ログイン画面が HTTPS なら安全」と考えがちですが、セッション固定攻撃は通信の暗号化とは無関係に成立するため、HTTPS だけでは防御できません。

クロスサイトリクエストフォージェリ (CSRF)

CSRF 攻撃は、ユーザーのブラウザを騙して、認証済みのサイトに意図しないリクエストを送信させる手法です。厳密にはセッションハイジャックとは異なりますが、既存のセッションを悪用してユーザーの意図しない操作 (パスワード変更、送金など) を実行させる点で、セッションの安全性に直結する脅威です。SameSite Cookie 属性の導入により <Link href="/glossary/csrf">CSRF</Link> のリスクは軽減されましたが、SameSite=None に設定されたサードパーティ Cookie を使用するサービスでは依然として注意が必要です。

結局どうすればいいのか

セッションハイジャックは技術的に複雑に見えますが、実践的な防御策はシンプルです。初心者の方は、まずブラウザの「HTTPS のみモード」を有効にし、共有 PC の使用後は必ずログアウトすることから始めてください。中級者の方は、公共 Wi-Fi では VPN を使用し、パスつく.com で各サービスに固有のパスワードを設定したうえで、重要なアカウントのログイン通知を有効にしましょう。これだけで、セッションハイジャックのリスクを大幅に低減できます。

セッションハイジャックから身を守る方法

HTTPS を使用しているサイトのみを利用する

ログインするサイトが HTTPS を使用していることを必ず確認してください。ブラウザのアドレスバーに鍵アイコンが表示されていることを確認します。特に公共ネットワークでは、HTTP のサイトに認証情報を入力しないでください。ブラウザの設定で「HTTPS のみモード」を有効にすると、HTTP サイトへのアクセス時に警告が表示されます。Google の透明性レポートによると、Chrome でのページ読み込みの 95% 以上が HTTPS 経由ですが、残りの 5% に含まれるサイトでは依然としてセッション傍受のリスクがあります。

公共 Wi-Fi での機密操作を避ける

公共 Wi-Fi は、セッションハイジャックの格好の狩場です。カフェ、空港、ホテルなどの公共ネットワークでは、<Link href="/glossary/man-in-the-middle">中間者攻撃</Link>のリスクが高く、銀行、メール、SNS などの機密性の高いアカウントへのログインを避けてください。やむを得ず利用する場合は、信頼できる VPN でトラフィックを暗号化しましょう。VPN アカウントのパスワードもパスつく.com で強力なものを生成してください。

使用後は必ずログアウトする

Web アプリケーションの使用後は、必ずログアウトしてください。特に共有 PC や公共端末では必須です。ブラウザのタブを閉じるだけではセッションが終了しない場合があります。多くの Web サービスではセッションの有効期限が 24 時間から 30 日間に設定されており、ログアウトしなければその間ずっとセッションが有効なままです。明示的なログアウト機能を使用し、セッション Cookie を無効化してください。ブラウザの「閉じたときに Cookie を削除する」設定も有効な対策です。

パスワードを強力かつ固有に保つ

強力なパスワード単体ではセッションハイジャックを防げませんが、アカウント全体のセキュリティにおいて不可欠です。パスつく.com で各サービスに固有の 16 文字以上のパスワードを設定し、定期的に更新することで、パスワード漏洩を起点とした攻撃のリスクを低減できます。セッションが乗っ取られた疑いがある場合は、直ちにパスワードを変更し、すべてのセッションを無効化してください。

セッション保護とあわせてアカウント全体の防御力を高めるには、Web 認証とトークンセキュリティの実践書 (Amazon)が実践的です。

セッションハイジャックが疑われる場合の対処

身に覚えのない操作、不明な場所からのログイン通知、変更した覚えのない設定変更など、アカウントに不審な活動を発見した場合、セッションが乗っ取られている可能性があります。対処は時間との勝負です。セッションの有効期限が切れる前に攻撃者がパスワードや復旧用メールアドレスを変更すると、アカウントの回復が極めて困難になります。具体的な対処手順は<Link href="/articles/data-breach-response">データ漏洩時の対応ガイド</Link>も参考にしてください。

  • パスつく.com で直ちに新しいパスワードを生成し、変更する
  • アカウントのセキュリティ設定からすべてのアクティブセッションを無効化する
  • 多要素認証を有効化 (または再設定) する
  • アカウント設定、復旧用メールアドレス、電話番号に不正な変更がないか確認する
  • 連携しているサードパーティアプリを確認し、不審なアクセスを取り消す

セッションハイジャック防御チェックリスト

以下のチェックリストで、セッションセキュリティの状態を確認してください。

  • ログインするすべてのサイトで HTTPS が使用されていることを確認する
  • ブラウザの「HTTPS のみモード」を有効にする
  • 公共 Wi-Fi では VPN なしで機密操作を行わない
  • 共有 PC や公共端末の使用後は明示的にログアウトする
  • 重要なアカウントでログイン通知を有効にする
  • アクティブセッションを定期的に確認し、不明なものを取り消す
  • パスつく.com で各サービスに固有のパスワードを設定する
  • 重要でないサイトについてはブラウザ終了時に Cookie を削除する設定にする

今すぐできること

  1. ブラウザの「HTTPS のみモード」を有効にする (Chrome: 設定 → プライバシーとセキュリティ → セキュリティ → 常に安全な接続を使用する)
  2. パスつく.com でメールアカウントと銀行口座に 16 文字以上の固有パスワードを生成して設定する
  3. Google、Apple、SNS アカウントのアクティブセッションを確認し、身に覚えのないセッションを取り消す
  4. 重要なアカウントでログイン通知を有効にし、不正アクセスを即座に検知できるようにする
  5. 重要でないサイトについてはブラウザ終了時に Cookie を削除する設定にする