web-dev-qa-db-ja.com

Chrome Reflected XSSに対して完全に安全ですか?

ChromeはWebリクエストの一部であるスクリプトを実行しません。

http://vulnerable_site?pageTitle=<script>alert('xss')</script>

スクリプトはWebリクエストの一部であるため、このようなリンクを使用すると、Chromeはスクリプトを実行しません。これにより、Chromeブラウザ?

編集:すでに読んだ this スレッド;タイトルは似ていますが内容が異なります。

20
vikkyhacks

いいえ、XSSフィルターは、サーバーから出力されたHTMLの入力にXSSコードが含まれているかどうかを調べるだけなので、.

たとえば、Chromeの場合、次の内容を含むURLでWebページにアクセスしていることがわかります。

_?q=<script>alert("XSS!")</script>
_

サーバーから返されたHTMLに次のものが含まれている場合:

_<p>You have searched for <b><script>alert("XSS!")</script>
_

このコードはリクエストに含まれている可能性が高いため、コードを無効化します。

ただし、コードがリクエストで見つからない場合、たとえば、アプリケーションが何らかの方法でエンコードされた入力を受け入れる場合、フィルターは、コードがリクエストに埋め込まれたXSSコードの結果であると理解できない場合があります。

WebKitの commit log に示されているように、最近Chromeのレンダリングエンジンが分岐するまで、URLのXSSコードと結果のXSS-の最も一般的なバイパスに対処しようとしています。 HTMLのコードは少し異なります。

特別な場合のこれらのルールがいずれも適用されない場合、XSSはそのまま残ります。たとえば、URLのBase64エンコードデータをデコードしていない場合、WebアプリケーションがBase64でエンコードされた入力を受け入れると、WebアプリケーションをXSSできる可能性があります。

例:

_?q=PHNjcmlwdD5hbGVydCgnWFNTIScpPC9zY3JpcHQ+
_

(_PHNjcmlwdD5hbGVydCgnWFNTIScpPC9zY3JpcHQ+_ is <script>alert("XSS!")</script>エンコードされたBase-64)、フィルタリングされていない場合、次のような応答HTMLになります。

_<p>You have searched for <b><script>alert("XSS!")</script>
_

さらに、エンコードされていないHTMLに埋め込まれていないデータでXSSが発生するのを防ぐことはできませんが、JavaScriptによって安全でない方法で処理されます。

たとえば、次のJavaScriptを含むページについて考えます。

_eval(location.hash.substring(1))
_

これにより、URLの_#_の後に続くすべてのコードが実行されますが、Chromeによって除外されません。

この例はここで動作しています

Base64を使用する別の例

23
user2428118

XSS防止はブラウザーの責任ではありません。XSSホールはWebサイトの欠陥が原因で発生し、そのような欠陥を防止するかどうかはWebサイトの所有者の責任です。

一部のブラウザーは、WebサイトのXSSおよびCSRFホールを軽減する試みを実装していますが、これらは典型的な攻撃パターンを探すヒューリスティックです。彼らは決して完全ではありません。

XSSホールを実装する方法は無限にあり、ホールと意図された動作を区別する確実な方法はありません。ブラウザフィルターが、XSSとCSRFホールの問題を認識し、気にし、対処するサイト所有者の代わりになる方法はありません。

これらのフィルターは、誤った安心感を生み出すことで、害よりも害を及ぼすのではないかと思います。

12
aaaaaaaaaaaa

開発者による Chromeバグ118808 で述べたように:

XSS監査バイパスは、Chromeセキュリティの脆弱性を構成しません(このため、このバグにSecSeverity-Noneのフラグが付けられます)。重大度のガイドラインは、次の場所にあります http:// dev。 chromium.org/developers/severity-guidelines

もう少し明確にするために、XSS監査は、Webサイトの一般的なXSS脆弱性からユーザーを保護する多層防御メカニズムです。事実、XSSのすべてのバリアントをキャッチできるわけではないことはわかっています。キャッチできるものは、影響を受けるサイトで修正する必要があります。したがって、監査人は本当にユーザーのための追加のセーフティネットですが、強力なセキュリティメカニズムとして意図されていません。

これは、Chromeチーム自体が完全に安全であることを期待していないことを示しています(これはおそらく不可能です)。

2
Ángel

いいえ。 this Webkit commit を参照して、「バイパス」という単語を見つけてください。研究者が一定期間に発見した監査人バイパスを見るでしょう...

2
user36484