クッキーモンスター問題、クッキーモンスターバグ

http://www.atmarkit.co.jp/ait/articles/0604/15/news014.html
webブラウザ脆弱性のひとつ。
あるサイトからのクッキーを、別サイトで利用するクッキーとして保存してしまうというバグ。



クッキーには以下のようにDomainを指定することができる。これにより、たとえばwww.example.comexample.comで共通利用するcookieを保存できる。

Set-Cookie: SESSION_ID=9999999; Domain=example.com;

文字列の後方一致で、ドメイン名が一致したクッキーの「全て」がサーバに送信される。
例えば「SESSIN_ID=1111111; Domain=www.example.com
「SESSIN_ID=2222222; Domain=example.com
の2つのクッキーがブラウザに保存されていれば、www.example.comにアクセスしたとき、同じ名前のクッキーが2つサーバに送られる。(どちらが利用されるかはサーバ実装次第)
ここで、

Set-Cookie: SESSION_ID=9999999; Domain=com;

のようなhttpヘッダが送られて、それをブラウザが保存してしまうと、ドメイン名が「.com」で終わる全てのサイトに送られるクッキーが出来てしまう。
これがクッキーモンスターバグである。
上は例として「Domain=com」と書いたが、実際には「.com」や「.co.jp」などの広く使われるドメインのクッキーは受け入れないようブラウザ側で対策されている。



2017年現在広く使われているブラウザだと、Windows8.1以前のIEで「.tokyo.jp」などの地域型ドメイン名に対してCookieを受け入れるというバグが存在する。
Windows10のIEでは対策されている。

これを利用した攻撃が、「クロス・ドメイン・クッキー・インジェクション(Cross-Domain Cookie Injection)」。
攻撃者はあらかじめ正規な方法でログインしてセッション用のCookieを取得しておき、そのCookieクッキーモンスターバグで、被攻撃のブラウザに送り込む。
被攻撃はそうとは知らずに攻撃者から送られたセッションIDでWebサーバと通信することになり、攻撃者がそのセッションの情報を読み取れる状態になる。

どうでもいいけど「クッキーモンスター」というのはセサミストリートで出てくる、キャラクターの青い奴。