Works by

Ren's blog

@rennnosuke_rk 技術ブログです

セッションに係る脆弱性とその対策② - セッションフィクセーション

本記事は前回の記事に続き、同じくセッションに関する脆弱性であるセッションフィクセーションにまとめる。

セッションフィクセーションとは

セッションフィクセーションは、攻撃者が一旦サービスとのセッションを確立してセッションIDを取得した後、そのIDを他のユーザのセッションIDとして設定してしまうことで、そのユーザになりすましてしまうというもの。


f:id:rennnosukesann:20180206235533p:plain

f:id:rennnosukesann:20180207000034p:plain

攻撃者の持つセッションIDを他のユーザに使わせることで、攻撃者と、セッションフィクセーションの罠にかかったユーザが同じセッションを共有している状態になる。そのため、攻撃者はユーザのログイン権限などを取得することができる。

セッションフィクセーションの起点

攻撃者のセッションフィクセーションが成功するためには、Webサービスのユーザに攻撃者のセッションIDを使ってわなければならない。そのためには、ユーザの使用するブラウザに攻撃者のセッションID入りクッキーを仕込む必要がある。

クロスサイトスクリプティングを利用したセッションフィクセーション

攻撃者が他のユーザにセッションを埋め込む主な方法に、クロスサイトスクリプティングが挙げられる。

クロスサイトスクリプティングとは

攻撃者が用意したWebサイトにユーザへアクセスさせ、不正なスクリプトをユーザのブラウザ上で実行、他サイトへの不正リクエストなどを実行させる攻撃のこと。

クロスサイトスクリプティングは様々な攻撃の起点として用いられる。
例えばセッションハイジャックもこのクロスサイトスクリプティングを利用して実行される場合がある。

攻撃者がクロスサイトスクリプティングによってセッションフィクセーションを実施する場合、
自分のセッションを埋め込む&正規のサイトにリダイレクトするスクリプトを仕込んだWebサイトを用意し、
そのサイトへのリンクを他のユーザに踏ませる。

うまくリンクを踏んでもらえたなら、ユーザがサービスへのログインをした瞬間、
攻撃者はユーザと同一のセッションIDを既に持っているので、
そのサービスへのなりすましログインが可能になってしまう。