web-dev-qa-db-ja.com

jQueryセレクターでのXSSの活用

私の静的コードアナライザーは、クライアントのWebサイトにあるこのJavaScriptに、DOMベースのXSSの可能性があるとしてフラグを立てます。

_var x = $('#' + window.location.hash.substr(1))
x.addClass('highlighted').find('div').show();
_

コードは直接$(function(){ ... }にあるため、ページが読み込まれるたびに実行する必要がありますか? (告白:私はjQueryについてあまり知らない...)

グーグル、2011年のこの記事の後、jQueryがこのようなコードの利用をより困難にすることがわかりました。

http://blog.mindedsecurity.com/2011/07/jquery-is-sink.html

しかし、攻撃は依然として可能であり、依然として機能するものは http://www.mjcblog.net/2011/06/jquery-selector-injection/ です。

クライアントはまだ脆弱ですか?私はそう思いますが、実際に何が起こっているのかを知るのに十分なほどjQueryを知らないので、私はエクスプロイトを思い付くことができません。

編集する -$()に渡される値は常に_#_で始まるので、これがこれの悪用をブロックし、FirefoxとChromeコンソールがこれを確認するために-しかし、私はまだ別の方法がないことを確信していません:)

3
Mark Koek

クライアントが脆弱かどうかは、jQueryのバージョンと、jQuery migrateをロードしているかどうかによって異なります。私はしばらく前にこのテストサイトを構築し、これらの2つのバグに対して異なるバージョンのjQueryをテストしました。 http://research.insecurelabs.org/jquery/test/

Retire.js(私が管理している無料のオープンソースツール)は、そのサイトにあるjQueryのバージョンが脆弱かどうかを通知します。 http://retirejs.github.io/retire.js/ = chrome Retire.jsのバージョンをお勧めします。

3
Erlend