エグゼクティブサマリ
IEのクッキーモンスターバグはWindows 10では解消されているが、Windows 7とWindows 8.1では解消されていない。このため、地域型JPドメイン名と都道府県型JPドメイン名上のサイトは、クッキーが外部から書き換えられるリスクが現実的に存在しするので、セキュリティ対策上もクッキー書き換えのリスクを考慮しておく必要がある。クッキーが外部から変更された際のリスク
ウェブサイトの利用者が第三者によりクッキーの値を変更されると、以下のような攻撃が可能になります。- セッションIDの固定化攻撃(脆弱性がある場合)
- クッキーを攻撃経路とするクロスサイトスクリプティング攻撃(脆弱性がある場合)
- 一部のCSRF対策の回避
- FuelPHP
- CodeIgniter
- Django
Double Submit Cookieは、サーバー側で状態を保持する必要が無いため、RESTとの相性が良いというのも最近好まれる理由かと思いますが、外部からクッキーを変更されないことを前提しているところが微妙なところです。
筆者の所属企業の脆弱性診断サービスでは、Double Submit CookieによるCSRF対策は指摘対象となっていて、危険度は状況によりInformationからMediumまで変わり得ます。
クッキーを外部から変更する方法
クッキーを第三者が変更する方法ってあるの? と思われた方も多いと思いますが、以下のような方法により可能です。- クッキーモンスターバグ(対象ドメインかつ対象ブラウザの場合)
- HTTPSを使っているサイト(参考)
- クロスサイトスクリプティング脆弱性がある場合
- HTTPヘッダインジェクション脆弱性がある場合
- サブドメインに信頼できないサイトがあるか、XSS等の脆弱性がある場合
クッキーモンスターバグとは
東京都のサイトを例として説明します。東京都のサイトは、地域型JPドメイン名を使っていて、ホスト名は www.metro.tokyo.jp です。ここで、example.tokyo.jp という都道府県型JPドメイン名の罠サイトから、domain=tokyo.jp のクッキーが設定できたとすると、この罠サイトを閲覧したユーザーは、東京都のサイトで有効なクッキーを設定・変更されてしまうことになります。通常このようなSet-Cookieはできないはずなのですが、Internet Explorer(IE)は伝統的に(?)このようなクッキーを受け入れてしまいます。この種の問題はクッキーモンスターバグ(Cookie Monster Bug)と呼ばれます。
Windows 10 でクッキーモンスターバグを検証してみた
IEのクッキーモンスターバグは最近でも有効なのだろうかと思い、全ての更新プログラムを適用したWindows 8.1 と Windows 10で確認してみました。Windows 10では、Edgeも同様に検証しています。試験用のドメイン名としては、kawaguchi.tokyo.jpとtokumaru.bunkyo.tokyo.jpを用いました。その結果は下記のとおりです。ドメイン名 | ドメイン属性 | Windows 8.1 | Windows 10 | |
IE11 | IE11 | Edge | ||
kawaguchi.tokyo.jp | tokyo.jp | 設定可 | 設定不可 | 設定不可 |
tokumaru.bunkyo.tokyo.jp | tokyo.jp | 設定可 | 設定不可 | 設定不可 |
bunkyo.tokyo.jp | 設定可 | 設定不可 | 設定不可 |
結論としては、Windows 10では、IE、Edgeともクッキーモンスターバグは解消されています。厳密にどのタイミングで解消されたかは追えてないのですが、Windows 10の初期の版から解消されていることを確認していますので、Windows 10が登場したタイミングで解消されたのではないかと予想しています。
クッキーモンスターバグとどう付き合うべきか?
とは言え、Windows 7とWindows 8.1ではIEのクッキーモンスターバグは解消されておらず、上記の経緯から予想するに、これらでは解消される見込みは薄いと考えます。これらのWindowsがサポート終了となるのは、それぞれ2020年1月14日と2023年1月10日ですから、少なくともWindows 8.1がサポート終了となる2023年1月までは、クッキーモンスターバグのことは想定しておかなければならないことになります。脆弱性対処との関係
セッションIDの固定については、ログイン時にセッションIDを振り直すという標準的な対策を取っていれば、クッキーモンスターバグの影響は受けません。問題は、Double Submit CookieによるCSRF対策の回避です。こちらは簡単な対応策がありません。このため、IEのクッキーモンスターバグの影響がある地域型JPドメインおよび都道府県型JPドメイン名のサイトでは、Double Submit CookieによるCSRF対策は避けて、別の方法で対策するべきではないかと考えます。
なお、クッキーモンスターバグの影響がない場合でも、通信経路上に攻撃者が存在する場合は、中間者攻撃によりHTTP側でクッキーを改変できます。筆者の所属企業ではDouble Submit CookieによるCSRF対策を(危険度は様々だが)常に指摘対象としているのは、こちらの攻撃経路を考慮しているためです。