TL; DR:すべての適切に記述されたWebサイト(/ apps)はヘッダーX-XSS-Protection: 0
を発行し、この機能を忘れる必要があります。より優れたユーザーエージェントが提供できる追加のセキュリティが必要な場合は、厳格なContent-Security-Policy
ヘッダーをます。
長い答え:
HTTPヘッダー X-XSS-Protection
は、MicrosoftがInternet Explorer 8.0(MSIE 8)で導入したものの1つであり、誤って記述されたWebサイトのセキュリティを向上させることになっています。
アイデアは、ある種のヒューリスティックを適用して、リフレクションXSS攻撃を検出し、自動的に攻撃を無効にすることです。
これの問題のある部分は、「ヒューリスティック」と「中和」です。ヒューリスティックは誤検出を引き起こし、実装に使用できる副作用を引き起こすため、安全に除去することはできません、完全に安全なWebサイトにXSS攻撃およびDoS攻撃。
悪い点は、WebサイトがヘッダーX-XSS-Protection
を発行しない場合、ブラウザーはヘッダーのように動作することです。X-XSS-Protection: 1
です。悪い点は、この値がこのヘッダーのすべての可能な値の中で最も安全でない値であることです。
所定の安全なWebサイト(つまり、サイトにリフレクションXSS脆弱性がない)の場合、この「XSS保護」機能により、次の攻撃ます。
X-XSS-Protection: 1
攻撃者がJavaScriptの一部を選択的にブロックし、残りのスクリプトを実行し続けることを可能にします。これが可能なのは、この機能のヒューリスティックが単に「ページソースのスクリプト部分にGETパラメータの値が見つかった場合、スクリプトはユーザーエージェントに依存する方法で自動的に変更される」ためです。実際には、攻撃者はたとえば、パラメータを追加して、プレーンテキストデータを実行可能なJavaScriptコードに誤って変換する可能性があります。disablexss=<script src="framebuster.js"
を、ブラウザは<script src="framebuster.js"
実際のページソースから文字列を自動的に削除します。ページの残りの部分は引き続き実行され、攻撃者はページセキュリティのこの部分を削除したことに注意してください。実際には、ページソースのJSは変更できます。場合によっては、コンテンツが反映されたXSS脆弱性のないページを使用して、選択されたJavaScriptをページ上で実行できます
X-XSS-Protection: 1; mode=block
攻撃者は、ページの動作をサイドチャネルとして使用することにより、ページソースからデータをリークすることができます。たとえば、ページにの行に沿ってJavaScriptコードが含まれている場合、var csrf_secret="521231347843"
攻撃者はパラメータを追加するだけです。たとえばleak=var%20csrf_secret="3
、ページがブロックされていない場合、3
最初の桁は正しくありませんでした。攻撃者は再試行しますが、今回leak=var%20csrf_secret="5
はページの読み込みが中止されます。これにより、攻撃者はシークレットの最初の桁がであることを知ることができます5
。その後、攻撃者は次の数字を推測し続けます。
最後に、サイトがXSSリフレクション攻撃でいっぱいの場合、デフォルト値の1
を使用すると、攻撃対象領域が少し減少します。ただし、サイトがセキュリティで保護されていない場合、サイトはX-XSS-Protection: 0
この機能をサポートするブラウザで脆弱になります。サイトでの未知のXSS脆弱性に対するブラウザーからの多層防御サポートが必要な場合は、厳密なContent-Security-Policy
ヘッダーを使用してください。それはあなたのサイトを既知の脆弱性にさらしません。
現在、この機能はMSIE、Safari、Google Chromeでデフォルトで有効になっています。これは以前Edgeで有効にされていましたが、Microsoftはすでにこの誤った機能をEdgeから削除しています。Mozilla Firefoxはこれを実装していません。
以下も参照してください。
https://homakov.blogspot.com/2013/02/hacking-facebook-with-oauth2-and-chrome.html
https://blog.innerht.ml/the-misunderstood-x-xss-protection/
http:/ /p42.us/ie8xss/Abusing_IE8s_XSS_Filters.pdf
https://www.slideshare.net/masatokinugawa/xxn-en
https://bugs.chromium.org/p/chromium/issues/detail?id=396544
https:// bugs.chromium.org/p/chromium/issues/detail?id=498982