Download - 見つけた脆弱性について(cybozu.com Security Challenge)
![Page 1: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/1.jpg)
見つけた脆弱性について
cybozu.com Security Challenge
![Page 2: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/2.jpg)
My name isMasato Kinugawa ( 有力説 )日本人と思われるキヌガワ・マサト (ITmedia説 )クニガワマサト (GIGAZINE 説 )
![Page 3: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/3.jpg)
Google/Mozilla/Microsoft(IE11)/Facebook/Etsy/Paypal/Github etc..
![Page 4: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/4.jpg)
見つけた脆弱性XSS(DOM)XSS(Flash)XSS(Flash)XSS(Flash)XSS(Flash)XSS( ブラウザのバグ起因 )アクセス不備情報漏えい
![Page 5: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/5.jpg)
今回話すものXSS(DOM)XSS(Flash)XSS(Flash)XSS(Flash)XSS(Flash)XSS( ブラウザのバグ起因 )アクセス不備情報漏えい
![Page 6: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/6.jpg)
コンテスト開始数分前…ログインページの URL が伝えられる
見れるものは見ておこう:robots.txtcrossdomain.xmlエラーページHTTP レスポンスヘッダ静的ファイルが置かれているパス
![Page 7: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/7.jpg)
あれ…
// 大体こんなかんじのコードescaped_url = location.href.replace('&', '&').replace('<', '<').replace('>', '>').replace('"', '"');document.write('<a href="'+escaped_url+'">'+escaped_url+'</a>');
![Page 8: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/8.jpg)
location.href と XSSChrome/Safari/IE は # 以降に <> などを % エンコードせずに含められる• IE は ? 以降も OK
![Page 9: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/9.jpg)
コンテスト開始確認してもやっぱり動く開始して 15 分後に報告もう【 CySecChallenge-3 】、はや!
// 修正後escaped_url = locaton.href.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"'); document.write('<a href="'+escaped_url+'">'+escaped_url+'</a>');
![Page 10: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/10.jpg)
1 対 1 でメッセージを送受信する機能に存在特定 URL にアクセスするとログイン中の第三者 ( ゲストユーザーを除く ) がメッセージの添付ファイルにアクセス可能1 人に向けて送信しているのに別の人間が閲覧可能なのは適切でない
アクセス不備
��
��
😈
FILE
MESSAGE
![Page 11: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/11.jpg)
脱線
👴 U+1F474 🙋 U+1F64B 😈 U+1F608
OLDER MAN
HAPPY PERSON RAISING ONE HAND
SMILING FACE WITH HORNS
![Page 12: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/12.jpg)
Flash の XSS( 本日のメインコンテンツ )
個人的に Flash のバグを追っていた時期Flash は相当バグっている• 先日その一部が修正 (CVE-2014-0491)($2,000)
みつけた問題 (4 件 ) はすべて第三者が配布の swf ファイルすべて既知の脆弱性すべて ExternalInterface.call() の問題
![Page 13: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/13.jpg)
ExternalInterface.call()Flash から JavaScript を呼び出すために使うExternalInterface.call("JS 関数 "," 引数 ")Flash 側の引数の処理が適切でないため XSS を引き起こしやすい " \" \ ➡ ➡ \ (!?)
…ExternalInterface.call("console.log",loaderInfo.parameters["param"]);…
//http://example.com/example.swf?param="abc\// 実行時に Flash が生成する JavaScripttry{__flash__toXML(console.log("\"abc\"));}catch (e){"<undefined/>"}
![Page 14: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/14.jpg)
Ctrl+Shift+F
1つ目の問題
![Page 15: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/15.jpg)
2-4 つ目の問題静的ファイルをホストするドメインに XSS が存在アプリのドメインは app.cybozu-dev.com静的ファイルのドメインは static.cybozu-dev.com通常はフィッシング・ DoS 程度の影響で済む
![Page 16: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/16.jpg)
連鎖static.cybozu-dev.com にクロスドメインでファイルの中身を読み出せる Flash ツールが存在app.cybozu-dev.com は crossdomain.xml でstatic.cybozu-dev.com を許可XSS で ExternalInterface.addCallback() に設定された関数を細工して呼び出せば app.cybozu-dev.com の情報が盗れるような構造だった
![Page 17: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/17.jpg)
crossdomain.xml
…<cross-domain-policy> <allow-access-from domain="static.cybozu-dev.com" /></cross-domain-policy>…
Flash 独自のクロスドメイン制限を緩める設定ルートに設置することが多いkintone にも設置されていた:
https://app.cybozu-dev.com/crossdomain.xml
![Page 18: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/18.jpg)
ExternalInterface.addCallback()
JavaScript から Flash の関数を呼び出すために使う…ExternalInterface.addCallback("jsFunc",flashFunc)…
<embed name="swf" allowscriptaccess="always" src="http://example.com/example.swf"></embed><script>swf.jsFunc()//flashFunc() が呼び出される</script>
AS
JS
![Page 19: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/19.jpg)
攻撃イメージstatic.cybozu-dev.com app.cybozu-dev.com
xss のある swf
クロスドメインでレスポンスを取得できる swf
crossdomain.xml
<allow-access-from domain="static.cybozu-dev.com" />
ターゲットのページ
機密情報
Check
OK
Request
Response
XSS でロード & 関数呼出
機密情報
![Page 20: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/20.jpg)
具体的にExternalInterface.addCallback("jsFunc", send);// 省略public function send(uri:string):void{ var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest(uri); loader.load(request);// 省略 ExternalInterface.call("util.xdr",responseText);
util={};util.xdr=function(a){alert(a)}// 上書き swf.jsFunc("http://app.cybozu-dev.com/target")// レスポンスが alert される
AS
JS
![Page 21: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/21.jpg)
ところで動的に JS で swf を作ればいいのでは?• data: URI や Blob で試したけどうまくいかない
これができたら「 crossdomain.xml で許可しているドメインに XSS = 設置ドメインの情報が漏れる」ことになるんだけど、誰かなんとかならない?
![Page 22: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/22.jpg)
Flash と XSS まとめセキュリティチェックの盲点Same Origin Policy とは異なるセキュリティ制限が今回のような問題を生むこともあるFlash は相当バグっている (2 度目 ) ので変なところに XSS が生まれることもある必要ないファイルは積極的に削除すべき
![Page 23: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/23.jpg)
コンテスト感想報告された途中経過はずっと 1位だったさらにコンテスト最終日に 5 件の問題を報告(全て脆弱性として受理 )余裕で 1位か…そうでもない
![Page 24: 見つけた脆弱性について(cybozu.com Security Challenge)](https://reader035.vdocuments.site/reader035/viewer/2022062312/555cb45fd8b42ab2358b567a/html5/thumbnails/24.jpg)
最後にコンテスト形式は新鮮で面白かった第 2 回に期待!
ありがとうございました!