セッションID固定化攻撃
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/08/10 16:30 UTC 版)
「セッションハイジャック」の記事における「セッションID固定化攻撃」の解説
セッションハイジャックを行う第三の方法としてセッションID固定化攻撃(セッションフィクセーション攻撃、session fixation attack)が知られている。脆弱性をツリー型に分類するCWEではセッションID固定化攻撃を不適切な認証(CWE-287)による脆弱性のひとつとして分類している(CWE-384)。 前述のようにWebアプリケーションはユーザのブラウザにセッションIDを保持させる事でセッション管理を行っているが、この攻撃では何らかの不正な手段を用いて被害者のブラウザに攻撃者が用意したIDを入れ込む。これにより被害者とWebアプリケーションの間のセッションのIDは攻撃者が入れ込んだものになってしまう。攻撃者自身は当然このIDを知っているので、被害者のセッションのハイジャックが可能になる。 攻撃者がセッションIDをブラウザに入れ込む方法は様々だが、URLにセッションIDを埋め込んでいるタイプのWebアプリケーションの場合は、セッションID部分を攻撃者が指定したものに書き換えたURLを被害者にクリックさせる事でセッションID固定化が実現できる。一方、セッションIDをcookieに記憶させている場合は、cookieの書き換えが可能な脆弱性(クロスサイトスクリプティングやHTTPヘッダ・インジェクション)を利用してcookie内のセッションIDを攻撃者が指定したものに書き換える事ができる。 攻撃者が入れ込むセッションIDは、攻撃者自身がランダムに新しく生成するケースと、Webアプリケーションとの他のセッション(例えばWebアプリケーションと攻撃者とのセッション)のIDを流用するケースとがある。前者の場合、攻撃が成功するにはWebアプリケーションの側が攻撃者の生成したセッションIDを受け入れる必要がある。Webアプリケーションの側で自身の発行したセッションIDを全て管理していれば、Webアプリケーションは攻撃者の生成したセッションIDを受け入れずにすむはずだが、Webアプリケーションの開発言語の中には自身で発行してないセッションIDすらも受け入れてしまうものがあり(例えば古いバージョンのPHP)、これが原因で攻撃が可能になってしまう場合がある。このように任意のセッションIDを受け入れてしまうという言語特性をセッションアダプションという。 一方、別のセッションのIDを流用した攻撃の例としては、攻撃者はまずWebアプリケーションとセッションを貼り、そのセッションのIDを被害者のブラウザに入れ込むというものがある。この場合Webアプリケーションの側で自身の発行したセッションIDを管理していても、この攻撃を防げない。なぜなら被害者のブラウザに入れ込まれたIDは、Webアプリケーション自身が(攻撃者に対して)発行した正規のIDだからである。
※この「セッションID固定化攻撃」の解説は、「セッションハイジャック」の解説の一部です。
「セッションID固定化攻撃」を含む「セッションハイジャック」の記事については、「セッションハイジャック」の概要を参照ください。
- セッションID固定化攻撃のページへのリンク