情報セキュリティの基礎
Webアプリケーションで、ログインの前と後で同じセッションIDを使い続けていると、攻撃者があらかじめ用意したセッションIDを利用者に使わせ、利用者がログインした後にそのIDで利用者になりすますおそれがある。この攻撃への対策として最も適切なものはどれか。
- AセッションIDを、利用者ごとの連番にして管理しやすくする
- Bログインに成功したときに、新しいセッションIDを発行し直し、それまでのIDは無効にする
- CセッションIDをURLの中に入れて受け渡すようにする
答えと解説を見る
正解:B. ログインに成功したときに、新しいセッションIDを発行し直し、それまでのIDは無効にする
この攻撃はセッション固定攻撃と呼ばれます。Webアプリケーションは、ログインした利用者を、Cookieなどで受け渡すセッションIDで見分けています。ログインの前に攻撃者が知っているセッションIDを利用者に使わせることができ、そのIDがログインの後もそのまま使われると、攻撃者は同じIDを使って利用者としてアクセスできてしまいます。対策は、ログインに成功した時点で新しい推測できないセッションIDを発行し直し、古いIDを無効にすることです。これで、攻撃者がログインの前に知っていたIDは役に立たなくなります。セッションIDを盗んだり推測したりしてなりすます攻撃全般はセッションハイジャックと呼ばれ、IDを十分に長いランダムな値にする、HTTPSだけで送る(CookieのSecure属性)、URLに入れない(Refererヘッダや履歴から漏れやすい)といった対策を組み合わせます。連番のIDは推測されやすく危険です。
- A. 連番のIDは推測されやすく、ほかの利用者になりすまされる危険が高まります。
- B. 正しい。ログインの時点でIDを新しくすれば、攻撃者が事前に知っていたIDは使えなくなります。
- C. URLに入れたセッションIDは、Refererヘッダや閲覧の履歴、共有されたリンクなどから漏れやすくなります。