Home > 技術 > jQueryMobileのXSSに関する調査メモ

jQueryMobileのXSSに関する調査メモ

今回の原因

#1789: jQuery Mobile XSS Problem by jnlin for jquery/jquery-mobile - Pull Request - GitHubに書かれているXSSが今回の内容。

これは以下のようなhash値をjQueryMobile側のhashchangeイベントがキャッチし、

$()関数にhash値を渡すところで発生するよう。

jQueryMobileの2488行目あたりの以下のコードがそれ。このコードは2360行あたりにも存在する。

そして今回のjQueryのXSSに関する詳しい内容はmalaさんの記事を参考。
jQueryにおけるXSSを引き起こしやすい問題について - 金利0無利息キャッシング - キャッシングできます - subtech
new XSS pattern with jQuery

jQueryMobileのXSSデモUrl

以下のURLを表示するとalertが表示されるのが分かる。

■1.0a4.1
jQuery Mobile: Demos and Documentation

またbeta1のほうでは、

がなくなっており、hash値にimgタグを渡しても発生しない。

■1.0b1
jQuery Mobile: Demos and Documentation

jQueryのバグチケットを見てみる

#9521 (XSS with $(location.hash) and $(#) is needed?) - jQuery Core - Bug Tracker
ここに書いてある解決策である、

はうまくいかなかった。
これはコメント欄を読むと分かるが、「$("anychar<img>")」こうゆうパターンのときにダメのよう。
(何か他にも修正箇所が必要なのだろうか...)

malaさんのパッチを当てる!

ほんとありがたいことですが、こちらのパッチを使ってみたところうまくいきました!
quick patch script for jQuery http://bugs.jquery.com/ticket/9521 -- Gist

こちらのPerlコードは、今回の問題になっているjQuery変数のquickExprの内容を書き換えるものになります。
このパッチには過去古い時代のjQueryのquickExprも含まれているが、とりあえず以下に該当のバージョンのパッチを列挙してみました。

beta1のほうにバージョンアップできる場合は良いのですが、アルファ版とbeta版ではかなり動きや設定も違ってくるので、すぐに対応は難しいと思います。
jQuery MobileにXSSの脆弱性が見つかったのでアルファ版からベータ版に変更する際の注意点[to-R]

とりあえずまだ他のXSSがあるかどうかや今回の件に関する不具合がすべて取り除かれたかの動作確認は出来ておりませんが、
まずはjQuery側を修正し、動作検証をして様子を見てみようと思います。

jquery1.2.6時代のquickExpr用

jquery1.4.2時代のquickExpr用

jquery1.5時代のquickExpr用

いやはや、なかなか難しいもんですなー!

■参考リンク
Twitter / @bulkneets: 冗談みたいな話ですけど旧バージョンのjQuery m ...
Twitter / @bulkneets: jQuery mobileのbeta 1がリリースさ ...
Twitter / @bulkneets: 旧バージョンのjQuery Mobileはじめ多くの ...

Trackback:0

TrackBack URL for this entry
http://hisasann.com/cgi-bin/mt/mt-tb.cgi/1272
Listed below are links to weblogs that reference
jQueryMobileのXSSに関する調査メモ from HouseTect, JavaScriptな情報をあなたに

Home > 技術 > jQueryMobileのXSSに関する調査メモ

Tag cloud
月別アーカイブ
Powered by
Powered by
Movable Type Commercial 4.261

Page Top