過去のjQuery Mobile使ってると、脆弱性が出たらしいので、試してみた
(※もちろん被害あうのは両者です)
発端というか、僕が昨日見かけた記事はこちら。
https://github.com/jquery/jquery-mobile/pull/1789
このURLにサンプルコードも載っていますが、そのコードをブラウザ上で実行するとアラート画面が出ることが分かるかと思います。
このように任意のコードを実行できるようなことをざっくり言ってXSS(クロスサイトスクリプティング)と言います。定義とか詳しい説明はググればやまほどあるので、調べて見てください。個人的に何より困るのが任意のJSのコードが実行されてしまう、ということです。
条件は?
今回発見されたのは「過去のjQuery Mobile」のバージョンということですが、2011年06月22日時点では、「jQuery Mobile 1.0 Beta 1 Released!」と言っていて、gitのタグを見てみると1.0.a系の次にBetaになったようですね。CDNとか関係なくjQuery Mobile使って開発した人はバージョン調べたほうがよいでしょう。
んで、僕が昔作った環境のバージョン「1.0a4.1」でXSSが実行できたので、バージョンは上げておいたほうがよいでしょう。
どんなふうに怖いの?
任意のコードが実行出来る怖さに関しては、クッキーが盗まれたり、ページ書き換えされたりするのですが、こういう行為も怖いし、自分のサーバ・サービスがこの踏み台になっているというのがやはり怖いかなと。
利用者としてはクッキーにセッションIDが入っていることでセッションをハイジャックされるかもしれないし、ページ書き換えが行われれば、フォームのあるページを書き換えて、パスワードを入力させて、その送り先を任意のURLに変えることもできてしまいますから。まぁ、ここらへんは色々記事があるので、そちらを。
んで、試した
上述したように僕のサイトでは、「1.0a4.1」というバージョンのjQuery Mobileを使ってました。んで、このバージョンで「本当に」脆弱性があるのか試してみました。その「jQuery Mobile」を置いたURLに対して、以下のような感じでコードを加える。
http://sample.org/#<img src=/ onerror=alert(1)>
(sample.orgの部分はjQuery Mobile使ってるサイトに変えましょう。
簡単過ぎる…アラート画面が出ましたねぇ。これが出るサイトはコワイわけです。JSなんて簡単にDOM操作できるんで、絶対出ちゃいけない状態です。
終わりに
まぁ、今回はTwitterのTL見てて、たまたまこの情報を知ったので良かったですが、そうじゃなければすぐ気付かなかったかと思います。しかもjQuery Mobile使ったのって最近なので、わりと新しいバージョン使ってたはずですが、そんなの一切関係ない。
加えてこんなんで、短縮URLとか使われたら、とてもじゃないけど、コワくてコワくて。
まぁ、JSでHTMLを書き換えたり、色々やってみるとその可能性というか、やれることの多さを実感できるので、まず触れてみるのが一番だと思います。
HTML書き換えとか、どんな芸当だって感じですが、それが普通の世の中なので。
まぁ、できるだけ情報を得て気をつけましょうということで。これ以外にもまだ色々脆弱性は他のとこにありそうでコワイ…
ちなみに、サーバ管理者向けに昔書いたもう一つのセキュリティ記事も載せておきます。
こっちはブラウザ側がアップデートされてるので、かなりやりにくくなってるかな。