jquery.prettyPhotoライブラリにおけるDOM based XSSについて   6 comments

Posted at 2:48 pm in internet,Security,XSS

こんにちは。ハッカージャパンが終わってしまい、次の身の振り方を考えると夜も寝られないアラフォーです。いい加減にハローワークに行こうと思いながらも、ついつい寒いので家から出ないという目も当てられない状況です。だれか誘ってください。

cats_2013-11-24_15

どこかからお金が降ってこないかなあ。

そんなどうしようもないかんじで年を越そうとしているわたくしですが、http://attack-secure.comというセキュリティサイトのXSSを発見して、報償としてセキュリティWeb講座の受講権利をいただきました。英語ですががんばってこれで勉強してセキュリティ業界の端っこの方にでも潜り込みたいと思います。

また、同じようなものを見つけたpocketというサービスに名前が掲載されたりもしています。

getpocket_m

getpocket.comのXSS(すでに修正済み)

ということで、ここからはこれらのサイトのXSSについてちょっと書かせていただこうかと思います。


これらのサイトですが、jquery.prettyPhotoというjQueryで動作するライブラリが原因でXSSが起こります。

原因となっているjquery.prettyPhotoライブラリですが、バージョン3.1になってからXSS脆弱性を持つ機能が組み込まれ、prettyPhotoで画像を表示するとだいたいもれなくXSS可能という非常にダメな感じになっていました。

2012年にはすでにXSSが報告されており(バージョン3.1.3)。後に修正が入っているのですが(バージョン3.1.4)、たまたまなのかこれで対策が行われたつもりだったのかはちょっとよくわかりませんが、3.1.3までで使えた攻撃方法は失敗するようになっています。とはいえ根本的な脆弱性対策が行われたわけではなく、このバージョンにも脆弱性が残っており、2013年初頭に修正バージョンである3.1.5がリリースされています。

そして、3.1.5でも修正が加わったからなのか、jQuery側のアップデートにによるものなのかはちょっとわからないのですが、その時点で公式には一応XSSは起こらないようになっていたようです(自信なし)。

ですが、jQuery Migrate Plugin なんてなかった件にモロに合致してしまったようで、最新の3.1.5を使っている場合でもjQuery Migrate Pluginを組み合わせて使っているとほぼXSS可能となるようです(@t_ashulaさんありがとうございます)。

jQuery 1.8.2以下+prettyPhoto ×
jQuery 1.9.0より後+prettyPhoto ○
jQuery 1.9.0より後+jquery-migrate+prettyPhoto ×

多くのWebサイトでこのライブラリが使用されているようですので、心当たりのある人は確認しておきましょう。XSSの方法は書きませんが、調べればすぐにわかると思います。

そして、このprettyPhotoライブラリですが、いくつかのテーマやプラグインの構成要素としてWordPressにも組み込まれています(他のCMSのことは調べていませんすみません)。prettyphotoで検索するといくつもでてきますね。

最新のWordPressでは普通jquery 1.10.2、とjquery-migrate 1.2.1が組み込まれているようですので、これにprettyPhotoライブラリを使うともれなくアウトということになります。できれば使わないようにした方がいいと思いますので、とりあえず読み込んでいるライブラリを調べてみてはいかがでしょうか。

Written by bogus on 11月 28th, 2013