サイバー攻撃手法・脆弱性分析 重要度:★★★出題: AM2・PM1
セッション管理の脆弱性 (セッションフィクセーション・セッションハイジャック)
せっしょんかんりのぜいじゃくせい / せっしょんふぃくせーしょん / Session Management Vulnerabilities / Session Fixation & Hijacking
攻撃者が事前に取得したセッションIDを被害者に使わせてログインさせ、ログイン完了後に同じセッションIDでなりすます「セッションフィクセーション(固定化)攻撃」とその対策。
3行速習ポイント
- セッションハイジャック:通信盗聴、XSSによるdocument.cookie読取り、推測可能な連番セッションID、RefererヘッダからのURLパラメータ漏洩等により、利用中のセッションIDを奪う攻撃
- セッションフィクセーション:ログイン前とログイン後で同じセッションIDを継続使用する設計不備を突き、攻撃者が用意したセッションIDを罠リンクやCookieインジェクションで被害者にセットしてログインさせる攻撃
- セッションフィクセーションの根本対策は「ログイン成功時に必ず既存のセッションを破棄し、新しいセッションIDを再発行すること」
図解
図セッションフィクセーション攻撃の防止とセキュアなセッションID管理
11. 十分な乱数強度での発行とURL埋め込み禁止
発行・伝送保護暗号論的擬似乱数生成器(CSPRNG)とCookie属性保護
推測不能なセッションIDを生成し、Referer漏洩を防ぐためURLパラメータには一切含めず、HttpOnly・Secure・SameSite属性付きCookieで送信
22. ログイン成功時のセッションID再発行(最重要)
固定化攻撃の根絶認証成立時に既存セッションを破棄し新セッションIDを割当
攻撃者が事前に用意したセッションIDを被害者に使わせてログインさせる「セッションフィクセーション(固定化)攻撃」を根本的に無力化
33. ログアウト・タイムアウト時のサーバ側破棄
確実な失効処理ブラウザCookie削除だけでなくサーバ側セッションストアを無効化
ログアウト操作時や一定時間無操作時に、サーバ側のメモリ/Redis上のセッションデータを確実に削除し、盗まれた古いIDの悪用を防止
💡 URLクエリパラメータにセッションIDを含めると、外部リンク遷移時の「Refererヘッダ」から外部サイトへセッションIDが漏洩するためCookie(HttpOnly+Secure)で管理する
概要と本質
Webアプリの認証実装において、パスワード検証自体は正しくてもセッションIDのライフサイクル管理に不備があると、アカウント乗っ取りが成立します。「セッションIDをURLパラメータに含めない(CookieのHttpOnly+Secure属性で送る)」「十分な乱数強度を持つフレームワーク標準のセッション管理機構を使う」「ログイン成功時にセッションIDを変更する」の3原則が必須です。
重要ポイント・コア概念
- なぜセッションIDをURLクエリパラメータに入れてはいけないのか:外部サイトへのリンクをクリックした際にHTTPリクエストの Referer ヘッダにURLごとセッションIDが含まれて外部サーバへ漏洩するため(またブラウザ履歴やアクセスログにも残るため)
- ログアウト時のサーバ側セッション破棄:ブラウザ側のCookieを削除するだけでなく、必ずサーバ側のセッションストア(Redisやメモリ)上のセッションデータを無効化・削除する
- 権限昇格時やパスワード変更時の再発行:一般画面から管理画面へ昇格する際やパスワード変更時には、他端末の既存セッションを無効化し新しいセッションIDを発行する
午後記述・情報セキュリティ対策での攻略ポイント
午後試験のWebアプリケーション問題で超頻出!「ログイン成功時に行うべきセッション管理上の処理は何か(セッションIDの再発行)」「セッションIDをURLパラメータで引き回すとRefererヘッダ経由で漏洩する仕組み」は一字一句正確に書けるようにしておきましょう。
午後記述で使える加点キーワード(クリックでコピー)
関連する重要用語
この用語が出題された過去問を解く(1分演習)
即時アウトプットで定着情報処理安全確保支援士 過去問演習で実践力を鍛える