web-dev-qa-db-ja.com

IE8 XSSフィルター:本当に何をするのですか?

Internet Explorer 8には、クロスサイトスクリプティングの試行をインターセプトしようとする新しいセキュリティ機能 XSSフィルター があります。次のように説明されています。

Internet Explorer 8の新機能であるXSSフィルターは、URLおよびHTTP POSTリクエストでJavaScriptを検出します。JavaScriptが検出された場合、XSSフィルターはリフレクションの証拠、リフレクションが検出された場合、XSSフィルターは元のリクエストを無害化し、追加のJavaScriptを実行できないようにします。

「リフレクションの証拠」がなくてもXSSフィルターが作動することがわかり、別のサイトにリクエストが行われ、レスポンスにJavaScriptが含まれている場合にフィルターが単に気付くと考え始めています。

しかし、効果が現れたり消えたりするように見えるため、それでも確認するのは困難です。 IEにはさまざまなゾーンがあり、問題を再現したと思うと、フィルターはもう機能しなくなり、その理由はわかりません。

誰もこれと戦う方法に関するヒントを持っていますか?本当に探しているフィルターは何ですか? iframeに表示され、フィルターをトリガーしないHTMLを返すことができるサードパーティのサイトにPOSTデータを送信する方法はありますか?

背景:サードパーティのサイトからJavaScriptライブラリを読み込んでいます。このJavaScriptは、現在のHTMLページからデータを収集し、サードパーティのサイトに投稿します。サードパーティのサイトは、iframeに表示されるHTMLで応答します。動作を確認するには、 AOL Food ページにアクセスし、ストーリーのすぐ上にある[印刷]アイコンをクリックします。

43
Ned Batchelder

それは本当に何をしますか?それは、サードパーティがあなたのサイトのめちゃくちゃなバージョンにリンクすることを可能にします。

[いくつかの条件が満たされ、]ページに逐語的に存在し、危険であると思われる文字列をクエリ送信で見ると起動します。

クエリ文字列とページコードの両方に<script>something()</script>が存在する場合、サーバー側のスクリプトは安全ではなく、エスケープせずにマークアップとしてその文字列をそのまま反映するためであると仮定します。

しかし、もちろん、偶然一致して入力された可能性のある完全に有効なクエリであるという事実とは別に、誰かがページを見て意図的にその一部をコピーしたために一致する可能性もあります。例えば:

http://www.bing.com/search?q=%3Cscript+type%3D%22text%2Fjavascript%22%3E

IE8でそれに従うと、Bingページが正常に妨害され、スクリプトエラーが発生し、ポップアウト結果ビットが機能しなくなります。基本的に、リンクのライセンスを取得している攻撃者に、好きではないページの一部を選択して無効にする許可を与えます。これには、フレームバスタースクリプトなどの他のセキュリティ関連の手段も含まれます。

IE8が「潜在的に危険」と考えるものは何ですか?このスクリプトタグよりもはるかに多くの奇妙なことがあります。 。さらに、最終的にページ自体を解析するようなHTMLパーサーの代わりに、テキストパターンシステム(おそらく正規表現)を使用して、一連の「危険な」テンプレートと一致するようです。はい、IE8を使用してください。ブラウザはHT̈́͜MLを使用しており、ブラウザは̿r̿e̴̬g̉̆e͎x͍͔̑̃̽̚です。

クエリ内の文字列を見ることによる「XSS保護」は、まったくの偽物です。 「修正」することはできません。まさにそのコンセプトには本質的に欠陥があります。望まないときに介入するという問題は別として、最も基本的な攻撃以外から実際に保護することはできません— IE8がより広く使用されるようになると、攻撃者はそのようなブロックを確実に回避します。 HTML出力を正しくエスケープすることを忘れていた場合でも、依然として脆弱です。すべてのXSSの「保護」が提供する必要があるのは、誤った安心感です。残念ながら、Microsoftはこの誤ったセキュリティ感覚を好むようです。サーバー側にもASP.NETに同様のXSS「保護」があります。

したがって、webappオーサリングについての手がかりがあり、良い男の子のように出力をHTMLに適切にエスケープしている場合は、ヘッダーを出力することにより、この望ましくない、実行不能な間違った侵入を無効にすることをお勧めします。

X-XSS-Protection: 0

hTTPレスポンスで。 (そしてValidateRequest="false" ASP.NETを使用している場合はページ内にあります。)

PHPで適切にエンコードせずに文字列をつなぎ合わせている他のすべての人にとっては...そのままにしておいた方がよいかもしれません。実際にユーザーを保護することを期待しないでください。あなたのサイトは既に壊れているので、それがもう少し壊れるかどうか気にしますか?

動作を確認するには、AOL Foodページにアクセスし、ストーリーのすぐ上にある「印刷」アイコンをクリックしてください。

ああ、そうです、IE8でこの破損が見られます。 IEが実行を停止したコンテンツへのハッキングを行ったが... XSSフィルターの候補であることがわかる唯一のクロスドメイン要求は、これがhttp://h30405.www3.hp.com/print/start

POST /print/start HTTP/1.1
Host: h30405.www3.hp.com
Referer: http://recipe.aol.com/recipe/oatmeal-butter-cookies/142275?

csrfmiddlewaretoken=undefined&characterset=utf-8&location=http%253A%2F%2Frecipe.aol.com%2Frecipe%2Foatmeal-butter-cookies%2F142275&template=recipe&blocks=Dd%3Do%7Efsp%7E%7B%3D%25%3F%3D%3C%28%2B.%2F%2C%28%3D3%3F%3D%7Dsp%7Ct@kfoz%3D%25%3F%3D%7E%7C%7Czqk%7Cpspm%3Db3%3Fd%3Do%7Efsp%7E%7B%3D%25%3F%3D%3C%7D%2F%27%2B%2C.%3D3%3F%3D%7Dsp%7Ct@kfoz%3D%25%3F%3D%7E%7C%7Czqk...

そのblocksパラメーターは、ページがより曖昧になり続けます。おそらくsomethingがあり、(偶然に)返されたHTMLに反映され、XSSエクスプロイトがどのように見えるかのIE8の混乱したアイデアの1つをトリガーします。

これを修正するには、h30405.www3.hp.comのサーバーにX-XSS-Protection: 0ヘッダー。

56
bobince

間違っていると思われるシナリオのネットワークキャプチャ(www.fiddlercap.com)を私(ericlaw @ Microsoft)に送信してください。

XSSフィルターは次のように機能します。

  1. このプロセスでXSSFILTERが有効になっていますか?
    はいの場合–次のチェックに進みます。いいえの場合– XSSフィルターをバイパスしてロードを続行します
  2. 「ドキュメント」ロード(サブダウンロードではなく、フレームのような)ですか?はいの場合–次のチェックに進みます。いいえの場合– XSSフィルターをバイパスしてロードを続行します
  3. HTTP/HTTPSリクエストですか?はいの場合–次のチェックに進みます。いいえの場合– XSSフィルターをバイパスしてロードを続行します
  4. RESPONSEにはx-xss-protectionヘッダーが含まれていますか?はい:値= 1:XSSフィルター有効(urlactionチェックなし)値= 0:XSSフィルター無効(urlactionチェックなし)いいえ:次のチェックに進む
  5. URLActionがXSSフィルタリングを有効にするゾーンにサイトが読み込まれていますか? (デフォルト:インターネット、信頼、制限)はいの場合–次のチェックに進みますいいえの場合– XSSフィルターをバイパスしてロードを続行します
  6. クロスサイトリクエストですか? (リファラーヘッダー:HTTPリクエストリファラーヘッダーの最終(リダイレクト後)完全修飾ドメイン名は、取得するURLの完全修飾ドメイン名と一致しますか?)はいの場合-XSSフィルターをバイパスしてロードを続行しますリクエストのURLは削除する必要があります。
  7. RESPONSEデータのヒューリスティックな指示は、安全でないREQUEST DATAからのものですか?はいの場合–応答を変更します。

#7の正確な詳細は非常に複雑ですが、基本的に、IEはリクエストデータ(URL /ポストボディ)とレスポンスデータ(スクリプトボディ)を一致させ、それらが一致すると、応答データが変更されます。

あなたのサイトの場合、POST to http://h30405.www3.hp.com/print/start の本文を見たいと思うでしょう。対応する応答。

25
EricLaw

実際、見た目よりも悪いです。 XSSフィルターは、安全なサイトを危険にさらす可能性があります。ここを読む: http://www.h-online.com/security/news/item/Security-feature-of-Internet-Explorer-8-unsafe-868837.html

その記事から:

ただし、GoogleはX-XSS-Protection:0ヘッダーを送信することでIEのXSSフィルターを無効にします。

あなたのサイトについて、これが解決策であるかどうかを判断するのに十分な知識はありませんが、おそらく試してみてください。フィルターの詳細な説明、およびフィルターを無効にする方法については、こちらをご覧ください。 http://michael-coates.blogspot.com/2009/11/ie8-xss-filter-bug.html

7
Roland Bouman