Created
April 25, 2013 13:52
-
-
Save mala/31109de84afdf5f0c528 to your computer and use it in GitHub Desktop.
SWFUploadのXSSとWordPressの修正方法の問題
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
概要 | |
WordPressが修正したつもりになってたSWFUploadのXSSの修正方法が不完全で最新版でもまだある。 | |
http://wordpress.org/news/wp-includes/js/swfupload/swfupload.swf#?movieName=SWFUpload_0&buttonText=%26lt%3Ba%20href%3D'javascript%3Aalert(location)'%26gt%3Bclickhere%26lt%3B%2Fa%26gt%3B | |
---- | |
届出ステータス | |
- 2013-04-24 security at wordpress.org | |
- 2013-04-25 IPA, Neal Poole氏 | |
---- | |
SWFUploadのXSSの経緯 | |
- 影響が大きいWordPressに報告される、修正後Neal Poole氏が自身のブログで公表 | |
- Neal Poole氏が公表したのは movieName パラメータを使うもの | |
- buttonTextパラメータ + クリックジャッキングでも攻撃が成立する | |
swfuploadのプロジェクトが停止しているため、いくつかのforkが作られ、debianは独自で修正した。 | |
buttonTextパラメータを使う方はこの時点で広く知られていなかったため、結果としてdebianの修正には含まれていない。 | |
WordPressは3.3.2の修正の際に、buttonTextに指定されたHTMLタグを無効化することを意図したコードを追加している。 | |
wordpressバージョンのswfを解析すると以下のようになる | |
private function SetButtonTextStyle(arg0:String):void | |
{ | |
this.buttonTextStyle = ''; | |
this.buttonTextField.htmlText = this.buttonText; | |
this.buttonTextField.htmlText = this.buttonTextField.text; | |
} | |
このことから、WordPressは、buttonTextパラメータを使うXSSについても把握していたと考えられる。 | |
しかしWordPressの修正が間違っているので結果として3.3.2以降のバージョンもXSSが成立する。 | |
- http://wordpress.org/news/2012/04/wordpress-3-3-2/ | |
"Szymon Gruszecki for a separate bug in SWFUpload." とあるので、buttonTextについてはSzymon Gruszecki氏が報告したのかもしれない。 | |
textノード部分をhtmlTextに再代入するので、 "<" や ">" がテキストとして出力されていればHTMLタグが有効化されてしまう。 | |
表示したいHTMLをHTMLエスケープした上でパーセントエンコードしてbuttonTextに渡せば良い。 | |
2012年12月末の段階で何人かがbuttonTextパラメータ経由でのXSSについて把握していたようだ。 | |
2012-12-27 | |
- https://github.com/Yelp/SWFUpload/commits/master | |
- Debian作成のものに更にパッチを当てている | |
2012-12-31 | |
- http://www.breaksec.com/?p=5909 | |
2013-03 Full disclosureに投稿あり | |
- http://seclists.org/fulldisclosure/2013/Mar/110 | |
- http://seclists.org/fulldisclosure/2013/Mar/116 | |
複数の問題がある。WordPressは修正版をリリースしたが、本家のSWFUploadは開発を停止しており、 | |
修正バージョンがリリースされなかったので、WordPressの修正リリース後も、"Responsible disclosure" の結果、脆弱性の詳細が公開されなかった。 | |
Neal Poole氏は詳細を公開したが、buttonTextを使ったパターンについては含まれていなかった。 | |
その結果 | |
- http://jvndb.jvn.jp/ja/contents/2012/JVNDB-2012-002110.html | |
CVEでは「詳細不明の脆弱性」として取り扱われている。オリジナルのソースにどのような変更が加えられたのかをWordPressが公開していれば、その修正方法が不完全であることに気付く人がいただろう。 | |
詳細が開示されなかったため問題の一部しか修正せずに「修正したつもりになっている」forkが生まれ、WordPressは不適切な修正のまま1年以上が経過することとなった。 | |
WordPressの修正が不完全であることに気づいている人は現時点では少ないと思われるので、WordPressの修正バージョンが公開されるまでは開示しないつもりであるが、 | |
buttonTextを使ったXSSについては既に開示されている状態であるので、WordPressの反応を待って完全開示が好ましいと考えている。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment