セッション固定攻撃とは?初心者にもわかる仕組みと対策を徹底解説
生徒
「先生、セッション固定攻撃っていう言葉を見かけたんですけど、これはどんな攻撃なんですか?」
先生
「セッション固定攻撃とは、読み方はセッションコテイコウゲキといい、攻撃者があらかじめ用意したセッションID(セッションアイディー)をユーザーに使わせて、そのIDでログインさせることで不正に利用する攻撃です。」
生徒
「えっ、セッションIDを攻撃者が決めちゃうんですか?それってどういう仕組みなんですか?」
先生
「そうなんです。ではまず、セッションとセッションIDがどういうものかを説明してから、セッション固定攻撃の流れを見ていきましょう。」
1. セッション固定攻撃とは?
セッション固定攻撃とは、読み方はセッションコテイコウゲキで、攻撃者があらかじめ指定したセッションIDを利用者に使わせてしまい、そのままユーザーがログインすると攻撃者も同じセッションを利用できるようになる攻撃手法です。
例えば、ネットショッピングや会員制サイトにログインする際には、サーバーがセッションIDを発行して「この人は本人ですよ」と確認します。しかしセッション固定攻撃では、攻撃者がそのセッションIDを事前に固定してしまうため、ログイン後に攻撃者が同じセッションを不正に利用できてしまいます。
2. セッションとセッションIDとは?
セッションとは、読み方はセッションで、ユーザーがログインしてからログアウトするまでのやり取りをひとまとまりに管理する仕組みのことです。そしてセッションIDは、そのセッションを識別するための番号で、読み方はセッションアイディーです。例えるなら「チケット番号」のようなもので、この番号がある人だけがサービスを継続して利用できるようになっています。
もし攻撃者がこのセッションIDを自由に決められると、チケットを勝手に作って他人の座席に座るような不正ができてしまうのです。これがセッション固定攻撃の本質です。
3. セッション固定攻撃の仕組み
セッション固定攻撃は、次のような流れで行われます。
- 攻撃者があらかじめセッションIDを作り出す。
- そのセッションIDをURLやCookie(クッキー)に埋め込み、ユーザーにアクセスさせる。
- ユーザーがそのセッションIDを使った状態でログインしてしまう。
- 攻撃者は同じセッションIDを利用して不正にログインできる。
つまり攻撃者は「同じ鍵を使わせる」ことで、後からその鍵で自由に出入りできるようにしてしまうのです。
4. セッション固定攻撃の被害例
セッション固定攻撃が成功すると、利用者にとって深刻な被害が発生します。例えば以下のようなケースがあります。
- オンラインショッピングで攻撃者が勝手に商品を購入する。
- SNSでなりすまし投稿をされてしまう。
- メールサービスに不正にログインされ、情報が盗まれる。
- 企業システムの管理者アカウントが奪われてしまう。
このようにセッション固定攻撃は、日常的に使うサービスにも被害を及ぼすため、初心者にとっても重要な知識です。
5. セッション固定攻撃を防ぐ方法
セッション固定攻撃を防ぐためには、いくつかの具体的な対策があります。
- ログイン時にセッションIDを再発行する:ログイン成功後に新しいセッションIDを必ず生成し、攻撃者の固定したIDを無効化する。
- CookieにSecure属性やHttpOnly属性を付与する:読み方はクッキーで、これにより攻撃者が不正にアクセスしにくくなる。
- URLにセッションIDを埋め込まない:URLに含めるとコピーされやすいため危険。
- タイムアウトを設定する:長時間同じセッションを使わないようにする。
特に「ログイン時のセッションID再発行」は基本中の基本の対策です。これを設定するだけでもリスクは大幅に減ります。
6. 雑学と歴史的背景
セッション固定攻撃は、2000年代初頭から知られている攻撃手法で、ウェブアプリケーションの脆弱性が注目されるきっかけの一つになりました。当時はURLにセッションIDをそのまま埋め込むサイトも多く、被害が拡大しました。
現在ではセキュリティ意識の高まりにより対策が進んでいますが、古いシステムや設定が不十分なサイトでは今も狙われる可能性があります。初心者の方も「ログイン後のセッションIDが変わることが大切」という点を覚えておくと安心です。
また、「セッション固定」という名前は、攻撃者がセッションを固定してしまうことから来ています。つまり「自由に変わるはずの鍵をあらかじめ固定されてしまう」イメージです。