私はいかにしてOperaブラウザのCookie Monster Bugを確認したか

昨日の日記「都道府県型JPドメインがCookieに及ぼす影響の調査 | 徳丸浩の日記」にも書きましたが、Operaブラウザの最新版(11.51)には、地域型ドメインの場合にCookie Monster Bugがあります。以下は、三重県志摩市ドメイン(www.city.shima.mie.jp)上で domain=mie.jpのCookieをセットした様子です。

この状態で三重県津市(www.info.city.tsu.mie.jp)のホームページにアクセスしたところ、このCookieが送信されることをネットワークキャプチャにて確認しました。

Operaブラウザは独自の方法でCookie Monster Bugに対応しているというのが業界の常識だと思っていましたので、当初この現象を見て驚きました。大げさに言えば「ニュートリノが光速を越えた」ことに匹敵する(大げさ過ぎ)ような驚きでしたので、CERN研究所にならって実験方法を見直しました。

実験1(hostsファイル)

最初の実験では、Windows上のlocalhost上で動くApache三重県のサーバーに見立てて、hostsファイルでホスト名に対するIPアドレスをセットしていました。しかし、「OperaDNSを使ってCookie Monster Bugを解決している」という情報がありましたので、DNSで名前解決をしないこの方法ではダメかもしれないと思いました。

実験2(Burp Proxy)

次に、Burp Proxyを使って、三重県津市のホームページのレスポンスをSet-Cookieを追加しました。やはりdomain=mie.jpのCookieがセットされました。
しかし、ブラウザはPorxy経由のアクセスではDNSにアクセスする必要がないので、Proxy経由だと特別な条件になるかもしれないと思いました。少なくともProxy経由の場合にはCookie Monster Bugがあるとは言えますが、Proxy経由でない場合も確認した方がよいと思いました。

実験3(DNSキャッシュサーバーで実験用ドメインをセット)

第3の実験では、DNSキャッシュサーバーを立てて、そこに実験用のドメインを定義しました。実験用ドメイン以外についてはネット上のDNSを参照するため、通常のネットアクセスと条件は変わらないと考えました。この条件でも、domain=mie.jpのCookieをセットでき、ブラウザから送信されることを確認しました。

実験4(透過Proxy上で書き換え)

実験3でほぼOKとは思いましたが、なにせ私の脳内では「ニュートリノの光速超え問題」に匹敵する発見(大げさ)なので、万全を期すために異なる条件で実験したいと思いました。私の実験環境には透過Proxyがありましたので、これを用いてCookieをセットすることにしました。透過Proxyを用いた実験結果が、冒頭で示した志摩市のページ上でセットしたdomain=mie.jpのCookieです。具体的には、志摩市のページのレスポンスを透過Proxyで書き換え、Set-Cookieヘッダを追加しました。このCookieOperaブラウザにセットされることを確認しました。
透過Proxyはブラウザからは見えませし、DNSISPの提供するものを使いましたので、通常のネットアクセスと同じ環境と同じと考えられます。ここに至ってようやく、「OperaブラウザにはCookie Monster Bugがある」と確信するに至りました。

結論

Operaブラウザの最新版(11.51)には地域型ドメインに対するCookie Monster Bugがある。

[PR]
安全なWebアプリケーションの作り方電子書籍版は本日発売開始です。くわしくはこちら