web-dev-qa-db-ja.com

関連するDNSドメイン(* .example.com)のコンピューター間でどのようなCookie攻撃が可能ですか?

ここでは、同じDNSドメイン内のいくつかのサーバーがさまざまな設定(スコープ、HTTPS、セキュア)でCookieを発行し、別のホストが同じ値のCookieを発行します。

ユーザーがsecure.example.comに次のCookieを設定しているとします。

 authCookie = SomeSessionToken (Scope example.com, Secure, HTTPOnly)

次に、ユーザーは侵害されたblog.example.comに移動します(おそらく別のタブにあります)。次のような非HTTPOnly Cookieを設定します。

 authCookie = AlternateSessionToken (Scope example.com, Secure, not-HTTPOnly)

Secure.example.comへの次のリクエストでは、代替の認証情報を使用しますか?

このシナリオは可能ですか?
-ブラウザは、2つのそれぞれのサーバーに2つの異なるCookie(同じ名前)を設定しますか?

-またはauthCookieが上書きされますか?

38

要約。はい、これは可能です。これはブラウザのバグではありません。これは、Cookieの設計どおりの機能の一部です。これから安全なブラウザはありません。 Cookieは古代の技術であり、そのセキュリティモデルはWebの他の部分と緩やかに統合されています。詳細は厄介で醜いです。

悲惨な詳細

サイトblog.example.comは、スコープblog.example.comまたはスコープexample.comでCookieを設定できます。後者のスコープを持つCookieは、ユーザーがsecure.example.comにアクセスすると、secure.example.comに送り返されます。

サイトsecure.example.comがスコープexample.comでCookieを設定する場合、サイトblog.example.comはそのCookieを任意に上書きできます。ブラウザは、すでにCookie jarにあるものと同じ名前とスコープのCookieを見つけると、古いCookieの値を破棄し、新しいCookieで上書きします。したがって、blog.example.comは、example.comをスコープとするCookieを上書きできます。

さらに悪いことに、1つのCookieが別のスコープでCookieをシャドウする可能性があります。 secure.example.comがスコープsecure.example.comと名前SESSIONIDでCookieを設定するとします。次に、blog.example.comがスコープexample.comと同じ名前のcookieを設定するとします。最後に、ユーザーがサイトsecure.example.comにアクセスしたとします。何が起こるのですか?醜いです。ブラウザは両方のCookieを未定義の順序で送信し、サーバーはどのCookie値がどのサイトからのものかを確実に判断する方法がありません。そのため、サーバーは混乱している状況にあることを検出できますが、混乱を解消する良い方法はありません。さらに悪いことに、一部のWebアプリケーションフレームワークは、Cookieの値の1つを使用し、他の値を静かに無視して、アプリケーションコードから混乱を隠す場合があります。これにより、blog.example.comsecure.example.comからCookieを上書きしたような効果的な動作につながる可能性があります。

(補足として、secureフラグはCookieの上書きを防ぎません。実際、 HTTPサイトはsecureでCookieを上書きできますflag 、ドメイン名が適切に関連付けられている限り。secureフラグは機密性の保護を提供しますが、整合性の保護は提供しません。)

最後に、Cookieを削除する方法がもう1つあります。悪意のあるサイトが大量のCookieを設定し、ブラウザが保存するCookie数の固定制限をオーバーフローさせる可能性があります。その結果、ブラウザは他のサイトからの古いCookieを「忘れて」しまいます。これにより、blog.example.comは、secure.example.comで設定されたすべてのCookieを削除し(スコープに関係なく)、example.comに返されるスコープsecure.example.comで新しいCookieを設定できます。これは、既存のCookieを上書きするのとほぼ同じ効果があります。これは、「cookie jarオーバーフロー」と言ったときに考えていたものかもしれません。

討論

乱雑です。悲しいことに、これはCookieがインターネットで機能する方法です。それを避けたい場合、最も簡単な防御策は、信頼されていないサイトに新しいセカンドレベルドメインを使用することです。あなたのサイトの命名を制限しないより良い防御策がおそらくあるでしょう、しかし私はそれが何であるかわかりません。

一般的な注意として、このようなWebの動作に関する質問については、 ブラウザのセキュリティハンドブック を強くお勧めします。ナゲットが詰まっています。この場合、その資料を cookieの同じ元のポリシー で読むことをお勧めします。

44
D.W.