1.10 セッションハイジャックとセッションフィクセーションとは?攻撃手法と効果的な対策を徹底解説

セッションハイジャック
セッションフィクセーション
情報セキュリティ
セッションID
不正アクセス
クロスサイトスクリプティング
中間者攻撃
セキュリティ対策
ウェブアプリケーション
HTTPS

1.10 セッションハイジャック

セッションハイジャックは、ユーザーとウェブサーバー間で確立されたセッションを乗っ取り、不正に情報を取得したり、操作を行ったりする攻撃手法です。攻撃者はユーザーのセッションIDを盗み取り、そのユーザーになりすましてシステムにアクセスします。この攻撃は、オンラインバンキングや電子商取引など、セッション管理が重要なウェブアプリケーションにおいて特に深刻な脅威となります。

1.10.1 セッションハイジャックとは

**セッションハイジャック(Session Hijacking)**は、ユーザーがウェブアプリケーションにログインしている間に、そのセッションを乗っ取ることで、不正なアクセスを行う攻撃です。セッションは、ユーザーが認証を受けた後、継続的に通信を行うために維持される一時的な接続情報です。このセッションを識別するために、セッションIDがクッキーやURL、隠しフィールドなどを通じてやり取りされます。

攻撃者がセッションIDを取得する主な方法:

  • クッキーの盗難:

    • クロスサイトスクリプティング(XSS):ウェブサイトの脆弱性を利用して、ユーザーのブラウザ上で悪意のあるスクリプトを実行し、クッキー情報を取得。
    • マルウェア:キーロガーやスパイウェアを使用して、クッキー情報を収集。
  • ネットワークの盗聴:

    • パケットスニッフィング:HTTP通信が暗号化されていない場合、ネットワーク上を流れるパケットを傍受してセッションIDを取得。
    • 中間者攻撃(Man-in-the-Middle Attack):攻撃者が通信経路に介在し、データを盗聴・改ざん。
  • 予測可能なセッションIDの悪用:

    • セッションIDが推測しやすい場合、攻撃者が可能性のあるIDを試行。

セッションハイジャックの影響:

  • 不正アクセス: 攻撃者がユーザーになりすまし、個人情報の閲覧・変更、金銭取引の不正操作などを行う。
  • 情報漏洩: 機密情報や個人データが外部に流出。
  • サービスの悪用: サーバーリソースの不正使用や、他のユーザーへの攻撃の踏み台にされる。

対策:

  • セッションIDの安全な管理:

    • セッションIDを十分にランダムで推測困難なものにする。
    • クッキーにHttpOnly属性を設定し、JavaScriptからのアクセスを禁止。
    • クッキーにSecure属性を設定し、HTTPS通信時のみ送信。
  • 通信の暗号化:

    • HTTPS(SSL/TLS)の導入により、通信内容を暗号化し、盗聴を防止。
  • セッションタイムアウトの設定:

    • 一定期間操作がない場合、セッションを自動的に終了。
  • ログイン時のセッションID再発行:

    • 認証後に新しいセッションIDを発行し、前のIDを無効化。
  • ユーザー教育:

    • 不審なリンクやメールを開かないように促す。
    • 公共のWi-Fiや共有PCでの重要な操作を避ける。

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

**セッションフィクセーション(Session Fixation)**は、攻撃者があらかじめ特定のセッションIDをユーザーに割り当て、そのセッションIDを使用してユーザーがログインした後に、同じセッションIDを用いて不正アクセスを行う攻撃手法です。

攻撃の流れ:

  1. 攻撃者がセッションIDを取得または生成:

    • サーバーから発行されたセッションIDを取得。
    • 自身でセッションIDを生成(場合によっては不正な手段でサーバーに認識させる)。
  2. ユーザーにセッションIDを押し付ける:

    • URL埋め込み:セッションIDを含むURLをユーザーに送信し、そのリンクをクリックさせる。
    • クッキーの設定:XSS攻撃や不正なウェブサイトを利用して、ユーザーのブラウザにセッションIDを設定。
  3. ユーザーがログイン:

    • ユーザーは割り当てられたセッションIDを使用してログイン。
  4. 攻撃者が同じセッションIDで不正アクセス:

    • 攻撃者は既知のセッションIDを使用して、認証済みの状態でシステムにアクセス。

セッションフィクセーションの特徴:

  • サーバー側のセッション管理の欠陥を悪用:

    • 認証後にセッションIDを再発行しないシステムが対象。
  • ユーザーの操作を必要とする:

    • ユーザーが攻撃者の仕掛けたセッションIDを受け入れる必要がある。

対策:

  • 認証後のセッションID再発行:

    • ログイン成功時に新しいセッションIDを生成し、以前のIDを無効化。
  • セッションIDをURLに含めない:

    • セッションIDはクッキーで管理し、URLパラメータとして渡さない。
  • クッキー設定の厳格化:

    • HttpOnly属性やSecure属性を設定。
    • クッキーのスコープ(ドメイン、パス)を適切に設定。
  • セッションIDの有効性チェック:

    • セッションIDがユーザーに正しく割り当てられたものかをサーバー側で確認。
  • 入力データの検証:

    • ユーザーから受け取るセッションIDやその他のデータを検証し、不正な値を拒否。

ユーザー側の対策:

  • 信頼できないリンクを避ける:

    • 不審なURLやメール内のリンクをクリックしない。
  • 定期的なログアウト:

    • 使用後は必ずログアウトし、セッションを終了。
  • ブラウザのセキュリティ設定の確認:

    • クッキーの取り扱いについて適切に設定。

まとめ

セッションハイジャックとセッションフィクセーションは、いずれもセッション管理の脆弱性を悪用した攻撃手法です。これらの攻撃に対抗するためには、ウェブアプリケーションの適切なセッション管理と、通信の暗号化、ユーザー教育など多角的な対策が必要です。開発者はセキュリティを考慮した設計と実装を行い、ユーザーも安全な利用方法を心がけることで、リスクを大幅に低減することができます。

公開: 2024-09-19 更新: 2024-09-19