対象試験と出題頻度
詳細をクリックして確認
ITパスポート
情報セキュリティマネジメント
基本情報技術者
応用情報技術者
★★★☆☆
ランクB(標準)
用語の定義
セッションハイジャックとは、一言で言うと「他人のセッションID(ログイン状態を示す識別情報)を盗み取り、その人になりすましてWebサービスを不正利用する攻撃」のことです。
イメージとしては、「映画館で他人が使っている座席チケットを盗んで、その人の席に座り込む」ようなものです。
ログイン後に発行されるセッションIDは「あなたは認証済みです」という証明書のようなもので、これを奪われると攻撃者がログイン中のユーザーとして振る舞えてしまいます。
解説
セッションハイジャック(Session Hijacking)は、Webアプリケーションの認証状態を管理する「セッション」の仕組みを悪用した攻撃です。多くのWebサービスでは、ユーザーがログインするとサーバーがセッションIDを発行し、Cookieなどに保存します。以降のリクエストではこのセッションIDを使ってユーザーを識別するため、セッションIDを盗まれると「なりすまし」が可能になります。
- セッションIDの窃取方法:XSS(クロスサイトスクリプティング)攻撃によるCookieの窃取、通信の盗聴(特に暗号化されていないHTTP通信)、セッションIDの推測(単純な連番など)、マルウェアによる情報窃取などがあります。
- セッションフィクセーション(Session Fixation)との違い:セッションハイジャックが「既存のセッションIDを盗む」のに対し、セッションフィクセーションは「攻撃者が用意したセッションIDをユーザーに使わせる」攻撃です。
セッションハイジャック攻撃が成功すると、攻撃者は正規ユーザーとしてログインした状態でサービスを利用できます。これにより、個人情報の閲覧・変更、不正な購入や送金、SNSでの不正投稿、パスワードの変更によるアカウント乗っ取りなど、深刻な被害が発生します。被害者はログアウトしない限り攻撃に気づきにくいという特徴もあります。
具体的な活用例・対策
セッションハイジャック対策は、セッション管理の強化と通信の保護の両面から行います。
- HTTPS(SSL/TLS)の使用: 通信を暗号化することで、ネットワーク上でのセッションIDの盗聴を防ぎます。Cookieには「Secure属性」を付与し、HTTPS通信でのみ送信されるようにします。
- HttpOnly属性の設定: CookieにHttpOnly属性を設定すると、JavaScriptからCookieにアクセスできなくなり、XSS攻撃によるセッションID窃取を防げます。
- セッションIDの推測困難化: セッションIDは十分な長さと複雑さを持つランダムな値を使用し、推測や総当たり攻撃を困難にします。
- ログイン時のセッションID再発行: ログイン成功時に新しいセッションIDを発行することで、セッションフィクセーション攻撃を防ぎます。
- セッションタイムアウトの設定: 一定時間操作がない場合や、長時間経過した場合にセッションを無効化し、被害の拡大を防ぎます。
- IPアドレス・ユーザーエージェントの検証: セッション中にIPアドレスやブラウザ情報が変わった場合に再認証を求めることで、不正利用を検知します。
試験ではこう出る!
ITパスポート、情報セキュリティマネジメント、基本情報技術者、応用情報技術者で出題されます。以下のキーワードとセットで覚えましょう。
【重要キーワード】
- セッションID(セッション識別子)
- Cookie(クッキー)
- HTTPS(SSL/TLS通信)
- HttpOnly属性・Secure属性
- セッションフィクセーション(関連攻撃)
試験問題で「セッションIDを窃取して、正規ユーザーになりすます攻撃」や「Cookieに格納されたセッションIDを盗み、ログイン状態を乗っ取る攻撃」といった記述があれば、それは「セッションハイジャック」に関する記述です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. セッションハイジャックに関する説明として、最も適切なものはどれでしょうか?
- A. 他人のセッションIDを盗み取り、正規ユーザーになりすましてWebサービスを不正利用する攻撃
- B. ログイン中のユーザーに罠サイトを経由して意図しないリクエストを送信させる攻撃
- C. Webアプリの入力欄に不正なSQL文を挿入し、データベースを不正に操作する攻撃
正解と解説を見る
正解:A
解説:
セッションハイジャックは、Webアプリケーションで使用されるセッションID(ログイン状態を識別する情報)を窃取し、正規ユーザーになりすましてサービスを不正利用する攻撃です。対策としてはHTTPS通信の使用、CookieへのHttpOnly属性・Secure属性の設定、セッションIDの推測困難化などが有効です。
選択肢Bは「クロスサイトリクエストフォージェリ(CSRF)」の説明です。選択肢Cは「SQLインジェクション」の説明であり、いずれもセッションハイジャックとは異なる攻撃手法です。