• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
[デブサミ2012]趣味と実益の脆弱性発見
 

[デブサミ2012]趣味と実益の脆弱性発見

on

  • 15,850 views

Developers Summit 2012

Developers Summit 2012

Statistics

Views

Total Views
15,850
Views on SlideShare
13,682
Embed Views
2,168

Actions

Likes
41
Downloads
160
Comments
1

17 Embeds 2,168

http://d.hatena.ne.jp 1415
http://blog.livedoor.jp 504
https://twitter.com 138
http://tum.no32.tk 46
https://twimg0-a.akamaihd.net 14
http://s.deeeki.com 13
http://us-w1.rockmelt.com 8
https://si0.twimg.com 6
http://webcache.googleusercontent.com 6
http://localhost 4
http://paper.li 4
http://safe.tumblr.com 4
http://uparrow.blog.shinobi.jp 2
http://a0.twimg.com 1
http://favtile.com 1
http://pult.io 1
http://b.hatena.ne.jp 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    [デブサミ2012]趣味と実益の脆弱性発見 [デブサミ2012]趣味と実益の脆弱性発見 Presentation Transcript

    • Finding Vulnerabilities For Fun And Profit 趣味と実益の脆弱性発見 Feb 16 2012 Yosuke HASEGAWA
    • 自己紹介 はせがわようすけ ネットエージェント株式会社 研究開発部 株式会社セキュアスカイ・テクノロジー 技術顧問 Microsoft MVP for Consumer Security Oct 2005 - http://utf-8.jp/ 難読化JavaScript書いてますDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • 難読化 JavaScriptObfuscated JavaScript
    • 記号JavaScript JS without alnum$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"¥""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"¥¥"+$.__$+$.$$_+$._$_+$.__+"(¥¥¥"¥¥"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+$._$+",¥¥"+$.$__+$.___+"¥¥"+$.__$+$.__$+$._$_+$.$_$_+"¥¥"+$.__$+$.$$_+$.$$_+$.$_$_+"¥¥"+$.__$+$._$_+$._$$+$.$$__+"¥¥"+$.__$+$.$$_+$._$_+"¥¥"+$.__$+$.$_$+$.__$+"¥¥"+$.__$+$.$$_+$.___+$.__+"¥¥¥"¥¥"+$.$__+$.___+")"+"¥"")())(); jjencode - http://utf-8.jp/public/jjencode.html
    • 顔文字JavaScript JS with emoticons゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ [_]; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)=(o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: _ ,゚ω゚ノ : ((゚ω゚ノ==3) +_) [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ _)[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +_)[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +_) [c^_^o];(゚Д゚) [c] =((゚Д゚)+_) [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) [o] = ((゚Д゚)+_) [゚Θ゚];(゚o゚)=(゚Д゚) [c]+(゚Д゚)[o]+(゚ω゚ノ +_)[゚Θ゚]+ ((゚ω゚ノ==3) +_) [゚ー゚] + ((゚Д゚) +_) [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +_)[゚Θ゚]+((゚ー゚==3) +_) [(゚ー゚) - (゚Θ゚)]+(゚Д゚) [c]+((゚Д゚)+_) [(゚ー゚)+(゚ー゚)]+ (゚Д゚) [o]+((゚ー゚==3) +_) [゚Θ゚];(゚Д゚) [_] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +_) [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+_) [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +_) [o^_^o -゚Θ゚]+((゚ー゚==3) +_) [゚Θ゚]+ (゚ω゚ノ +_)[゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]=¥¥; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ+_)[c^_^o];(゚Д゚) [゚o゚]=¥";(゚Д゚) [_] ( (゚Д゚) [_] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) +(゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o)+(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) - (゚Θ゚))+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚o゚]) (゚Θ゚)) (_); aaencode - http://utf-8.jp/public/aaencode.html
    • 質問Question
    • 質問 : Web技術、好きですか?Q. Do you love web technologies?
    • クロスサイトスクリプティング 強制ブラウズ書式文字列攻撃 リモートファイルインクルード SQLインジェクション LDAPインジェクションパストラバーサル バッファオーバーフロー CSRF セッションハイジャック 質問 : Web技術、好きですか? Q. Do you love web technologies? OSコマンドインジェクションセッション固定攻撃 オープンリダイレクタ DoS HTTPレスポンス分割 メモリリーク XPathインジェクション HTTPヘッダインジェクション
    • Web技術、好きですか? 危険だらけのWeb技術が「好き」な人: かなり打たれ強い or 攻撃者Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • 今日のおはなしTodays topic
    • 今日のおはなし これまでに調べた脆弱性の紹介 ブラウザの知られていないような機能を 用いた攻撃 Webの標準仕様を組み合わせて発生する 脆弱性 なぜ脆弱性を探すのか 他の人にできないことをする 10年後も世界で通じるエンジニアで あるためにDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • これまでに調べた脆弱性 Vulnerabilities I found
    • これまでに調べた脆弱性 Webブラウザ、Webアプリケーションを中 心にいろいろ…  CVE-2007-0995 XSS of Mozilla Firefox  CVE-2007-1262 XSS of SquirrelMail  CVE-2007-2227 XSS of Internet Explorer  CVE-2008-0416 XSS of Mozilla Firefox  CVE-2008-1468 XSS of Namazu  CVE-2008-5808 XSS of Movable Type  CVE-2010-1213 Cross-origin data disclosure of Mozilla Firefox  CVE-2010-3348 Cross-origin data disclosure of Internet Explorer  CVE-2010-3770 XSS of Mozilla Firefox  CVE-2011-1339 XSS of Google Search Appliance  CVE-2011-3384 XSS of Sage  CVE-2011-3648 XSS of Mozilla Firefox ...Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • これまでに調べた脆弱性 一般的なWebアプリケーションの検査 Webアプリケーション側を調査 XSS、SQLインジェクション、etc... エスケープ漏れ、アプリの仕様間違いなどを 丹念に探す 効率性、網羅性が必要Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • これまでに調べた脆弱性 Webブラウザ側の脆弱性 ブラウザの知られていないような機能を用い た攻撃 Webの標準仕様を組み合わせて発生する脆弱 性 新しい脆弱性を「創り出す」ことができるDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • これまでに調べた脆弱性 Webブラウザ側の脆弱性 Webアプリケーション側のエスケープ漏 れより影響範囲が大きい 修正されれば大勢の人が救われる 取り組んでいる人が少ない 今すぐにでも世界トップになれる可能性も! 仕事としては成り立ちにくいDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • これまでに調べた脆弱性 ブラウザの知られていないような機能を用 いた攻撃 Content-Type無視によるXSS (IE) UTF-7によるJSON Hijacking (IE) Webの標準仕様を組み合わせて発生する 脆弱性 E4X + Web Workers = データ漏えい (Firefox)Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • Content-Type無視によるXSS (IE) IEに昔からある悪癖 Content-Type以外も含めファイルタイプを 決定 HTMLではないものがHTMLに昇格して XSSを引き起こす 例えばtext/plainDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • Content-Type無視によるXSS (IE) IEはContent-Type以外にも様々な要因 からファイルタイプを決定する 文書化されていない複雑なメカニズムDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • Content-Type無視によるXSS (IE) ファイルタイプの決定因子 "Content-Type" HTTPレスポンスヘッダ "X-Content-Type-Option" HTTPレスポ ンスヘッダ Windowsレジストリにおける関連付け IEの設定:"拡張子ではなく、内容によって ファイルを開く" URL自身 コンテンツそのものDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • IEにおけるファイルタイプ決定のメカニズム Content-Typeがレジストリに登録されている? [ HKEY_CLASSES_ROOT¥MIME¥Database¥Content Type ] Y N ファイルタイプを仮決定 IE8+ && "X-Content-Type-Options:nosniff"? Y N Y外部プラグイン/アプリが必要? プラグインを起動またはダウンロード ダウンロード N YIE8+ && "X-Content-Type-Options:nosniff"? 仮決定したファイルタイプを使用 N 有効 コンテンツをsniffしファイルタイプを決定「拡張子ではなく、内容によって ファイルを開く」設定値 無効 仮決定したファイルタイプを使用 URLの拡張子が "cgi" or "exe" or "dll" or "/" ? e.g. http://utf-8.jp/a.cgi?abcd, http://utf-8.jp/foo/ Y N QUERY_STRINGからファイルタイプを URLの拡張子からファイルタイプを 仮決定 仮決定 外部プラグイン/アプリが必要? 外部プラグイン/アプリが必要? N Y N Y コンテンツをsniffし プラグインを起動 コンテンツをsniffし プラグインを起動ファイルタイプを決定 またはダウンロード ファイルタイプを決定 またはダウンロード 21※これ以外にも例外的な挙動が多数あり Yosuke HASEGAWA http://utf-8.jp/
    • Content-Type無視によるXSS (IE) ファイルタイプ決定のメカニズムは、と にかく複雑すぎる! 50分では話し終わらない! 今回の図もずいぶん省略しています そもそも例外的な挙動が多い いつのまにか挙動が変化していることも多いDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • Content-Type無視によるXSS (IE) XSS実例Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • Content-Type無視によるXSS (IE) https://www.microsoft.com/en-us/homepage/ bimapping.js/a.html?v=<script>alert(1)</script>&k... HTTP/1.1 200 OK Content-Type: text/javascript; charset=utf-8 Date: Wed, 22 Jun 2011 13:53:37 GMT Content-Length: 2092 var <script>alert(1)</script>={"Webtrends":{"enabled":true,"sett ings":{"interactiontype":{"0":true,"1":true,"2":true,"3":true,"4":t rue,"5":true,"6":true,"7":true,"8":true,"9":true,"10":true,"11":tr ue,"12":true,"13".... "text/javascript" はレジストリに未登録Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • Content-Type無視によるXSS (IE) Microsoftでも正しく挙動を把握できてい ない ファイルのダウンロードダイアログで表示され るファイル名の命名規則 http://support.microsoft.com/kb/436153/ja " X-Content-Type-Options:nosniff"を 必ずつける(IE8+のみ)Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • これまでに調べた脆弱性 ブラウザの知られていないような機能を用 いた攻撃 Content-Type無視によるXSS (IE) UTF-7によるJSON Hijacking (IE) Webの標準仕様を組み合わせて発生する 脆弱性 E4X + Web Workers = データ漏えい (Firefox)Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • UTF-7によるJSON Hijacking (IE) ターゲット 機密情報を含むJSON 攻撃者がJSON内の一部をコントロールできる 例えばWebメールの新着通知など JSON内の他のデータも盗み見できる JSON {"from" : "a@example.com"}Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • UTF-7によるJSON Hijacking (IE) [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : "hasegawa@utf-8.jp" Injected by attacker }, { "name" : "John Smith", "mail" : "john@example.com" } ] ターゲットとなるJSON : http://example.com/newmail.jsonDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • UTF-7によるJSON Hijacking (IE) [ { "name" : "abc"}];var t=[{"":"", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] ターゲットとなるJSON : http://example.com/newmail.jsonDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • UTF-7によるJSON Hijacking (IE) 攻撃者は罠ページを準備して誘導 <script src="http://example.com/newmail.json" charset="utf-7"> <script> alert( t[ 1 ].name + t[ 1 ].mail ); </script> ターゲットとなるJSON http://example.com/newmail.json [ { "name" : "abc"}];var t=[{"":"", "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ]Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • UTF-7によるJSON Hijacking (IE) ユーザ XHR.send(…) JSON.parse(txt) JSON { "from" : "a@example.com" } Web mailDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • UTF-7によるJSON Hijacking (IE) <script src=“json”> 攻撃者 HTML ユーザ JSON <script src=“json”> From: "+MPv…ACI-" JSON { "from" : "+MPv/…ACI-" } Web mailDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • UTF-7によるJSON Hijacking (IE) 攻撃者の準備した罠ページ <script src="http://example.com/newmail.json" charset="utf-7"> こっちが優先される 攻撃者対象のJSON Content-Type: application/json; charset=utf-8 [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ]Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • UTF-7によるJSON Hijacking (IE) IE6、IE7はHTTPレスポンスヘッダより <script>要素のcharsetを優先 IE8では修正されている 2008年10月に報告したが修正されないDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • UTF-7によるJSON Hijacking (IE)  Webアプリ側で対策 リクエストヘッダの特定文字列を確認 GET http://example.jp/foo.json HTTP/1.1 Host: example.jp Connection: keep-alive X-Request-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:8.0) JSON内の「+」を「¥u002b」にエスケープ { name : "abc¥u002bMPv/f....." }; POSTのみ受け入れる GETでのJSONへのアクセスを拒否 不正なJSONフォーマットで応答(Google方式) 受信後にJSでゴミを除去Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • これまでに調べた脆弱性 ブラウザの知られていないような機能を用 いた攻撃 Content-Type無視によるXSS (IE) UTF-7によるJSON Hijacking (IE) Webの標準仕様を組み合わせて発生する 脆弱性 E4X + Web Workers = データ漏えい (Firefox)Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • E4X + Web Workers = データ漏えい E4Xってなに? ECMAScript for XML (ECMA-357) https://developer.mozilla.org/ja/E4X JS内に直接XMLを記述可能 Firefox、ActionScriptでサポート var s = <mail> <subject>Test mail</subject> <from>Yosuke HASEGAWA</from> <addr>hasegawa@utf-8.jp</addr> </mail> ; alert( s.subject );Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • E4X + Web Workers = データ漏えい E4Xってなに? XML内にJSの記述もできる。 XML内の {....} はJavaScriptとして動作 var s = <mail> <subject>Test mail</subject> <from> { alert(1) } </from> <addr>hasegawa@utf-8.jp</addr> </mail> ; alert( s.subject );Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • E4X + Web Workers = データ漏えい E4XはJavaScript 外部から読み込み可能 var s = <mail> <subject>Test mail</subject> </mail> ; <script src="e4x.js"></script> <script> alert( s.subject ); </script>Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • E4X + Web Workers = データ漏えい E4Xってなに? これはJavaScript? HTML? <div> { alert( "Hello, E4X World." ); } </div> <div> Hello, HTML World. </div> HTMLでもありJavaScriptでもあるDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • E4X + Web Workers = データ漏えい 攻撃者がHTML内の2か所に文字列を挿入 可能な場合、その間のメッセージが外部 から取得可能 (以下のコードは現在のFirefoxではそのままでは動作しません) <div>{ foo( <span>秘密のメッセージ部分</span> ) } </div> <script> function foo( s ){ alert( s ); } </script> <script src="target.html"></script>Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • E4X + Web Workers = データ漏えい FirefoxでのE4Xによるデータ漏えい対策 XML宣言、DOCTYPE宣言のついた XML,HTMLはE4Xとして解釈不可 script srcとして読み込まれたJSが単一の XMLオブジェクトのときはエラーとしてJSを 実行しない <div>{ foo( <span>秘密のメッセージ</span> ) } </div> // JavaScriptとして動作しない var s = <div>{ foo( <span>秘密のメッセージ</span> ) } </div>; // JavaScriptとして動作する 泥臭い…Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • E4X + Web Workers = データ漏えい Web Workersって何? JavaScript待望のマルチスレッド機構 バックグランドで重い処理を実行 DOMとは切り離されている メイン側 var worker = new Worker( "worker.js" ); worker.onmessage = function( event ) { ... }; worker.postMessage( msg ); worker.js onmessage = function( event ){ /* 時間のかかる処理 */ postMessage( msg ); // メイン側に通知 }Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • E4X + Web Workers = データ漏えい Web Workersって何? new Workers( src ) は同一オリジンのみ (プロトコル、ホスト、ポートが一致すること) メイン側 var worker = new Worker( "worker.js" ); // OK var worker = new Worker( "http://utf-8.jp/w.js" ); // NG Worker内からは間接的に他オリジンのJSも 利用可能 worker.js importScripts( "http://utf-8.jp/w.js" ); // OKDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • E4X + Web Workers = データ漏えい FirefoxでのE4Xによるデータ漏えい対策 script srcとして読み込まれたJSが単一のXMLオブ ジェクトのときはエラーとしてJSを実行しない <div>{ foo( <span>秘密のメッセージ</span> ) } </div> // JavaScriptとして動作しない var s = <div>{ foo( <span>秘密のメッセージ</span> ) } </div>; // JavaScriptとして動作する …というのが、Web Workers のimportScripts で は効いていなかった E4XとWeb Workersを組み合わせると外部サイト のHTML内のデータを盗み見ることが可能だったDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • E4X + Web Workers = データ漏えい E4Xの仕様に完全準拠ではない 単一XMLオブジェクトが読み込めない 仕様通りの実装だと脆弱性を生む いったんは収まったがWeb Workersの 実装に伴い再度オープン 枯れていない新しい機能は狙い目 MFSA-2010-42で修正済み ちなみに Mozilla Security Bug Bounty Program の対象なので賞金もらいました :-)Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • なぜ脆弱性を探すのかWhy I find Vulnerabilities ?
    • なぜ脆弱性を探すのか 他の人にできないことをする 自分がやらなければいつまでも脆弱なまま パズル的な楽しさ 功名心Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • なぜ脆弱性を探すのか ハードウェアエンジニア(1997年~) 電子回路の設計 小規模なソフトウェアも 産業用計測機器 発電所などでも使用 高い品質が求められるDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • なぜ脆弱性を探すのか 産業用計測機器の設計 高い安定性、堅牢性が要求される どのような入力でも安定して稼働 ソフトウェア、ハードウェアとも 堅牢性、安定性を脅かすバグとの戦い セキュリティ関連技術との出会い(2004年頃)Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • なぜ脆弱性を探すのか ソフトウェアのセキュリティ 脆弱なソフトウェアと堅牢なソフトウェアの 違い 勉強会、メーリングリスト等への参加Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • なぜ脆弱性を探すのか セキュリティについて学べば学ぶほど あちこちで簡単に脆弱性がみつかる 新しい攻撃方法を考えつく 対策技術は未成熟と気付くDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • なぜ脆弱性を探すのか いくつか問題を見つける 「脆弱性ではなく仕様です」の回答… 影響が大きいので公にはできない 自分だけが解決されないであろう問題を抱え てしまっている閉塞感Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • なぜ脆弱性を探すのか 「脆弱性ではなく仕様です」 PNGファイルがHTML扱いされXSS(IE) RLOを利用した拡張子の偽装Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • なぜ脆弱性を探すのか 「脆弱性ではなく仕様です」 最近はこういう返事は聞かない 「ありがとうございます」→何年も直らない 聞かなくなった時期は、ブラウザ競争の勃発 と一致 ※個人による体感ですDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • なぜ脆弱性を探すのか 問題を1人で抱える閉塞感 セキュリティ業界の友人からのアドバイス 「その仕様を最も悪用できる方法を思いつく ことが、世界平和の貢献につながる」Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • 「その仕様を最も悪用できる方法を思いつ くことが、世界平和の貢献につながる」
    • なぜ脆弱性を探すのか 「その仕様を最も悪用できる方法を思いつ くことが、世界平和の貢献につながる」 自分なりの解釈 悪用されたときの影響度が大きいのであれば 仕様の改善を迫ることもできる むしろセキュリティを通じて「世界の平和に 貢献」という大きな視野に感銘を受けるDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • なぜ脆弱性を探すのか 「世界平和のため」 どうすればもっとセキュリティのために貢献 できるか セキュリティ業界への転身につながる 「セキュリティ製品を通じて社会に貢献」Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • 10年後も世界で通じるエンジニアであるために
    • 10年後も世界で通じるエンジニアであるために Web = 標準化 + ブラウザ独自実装 標準化された機能 = 10年後も通用する 10年間成長しないつもりですか? ブラウザ独自の機能 = 10年後にはない? 独自機能を追いかけ続ける技術は 10年後も通用するはず!! CSS3 { ES }5Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • 10年後も世界で通じるエンジニアであるために 未開の地を探し続ける! 誰も通っていない道を探せ! 標準化された部分はおもしろみが少ない 独自実装な部分は狙い目 CSS3 { ES }5Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • 10年後も世界で通じるエンジニアであるために セキュリティな話をもっと発信して欲しい もっとみんなに発信してほしい! セキュリティ技術、日本発の話題が少ない 発信されていない情報は、世の中に存在しない のと等しいDevelopers Summit 2012 NetAgent http://www.netagent.co.jp/
    • 10年後も世界で通じるエンジニアであるために 「でも、セキュリティ界怖いし」 ちょっと間違ったことを言うと叩かれる? どうでもいい瑣末なことにこだわる?Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • 10年後も世界で通じるエンジニアであるために 「セキュリティ界」は怖い? 何か言われたときは、真摯に耳を傾けよう だいたい、自分が間違ってることが多い 自分自身のためにも、世界のためにも発信し てほしい!Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • 10年後も世界で通じるエンジニアであるために 未来のセキュリティ業界を支える人材発 掘のために、CTFコンテストやります! http://www.secco.jp/Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • 10年後も世界で通じるエンジニアであるために SECCON CTF 10年後を支える人材を発掘したい Security Contest Capture The Flag 九州地区予選 - 2012/02/18-19 当面は学生を対象に、一部社会人参加もあり http://www.seccon.jp/Developers Summit 2012 NetAgent http://www.netagent.co.jp/
    • 質問 hasegawa@utf-8.jp hasegawa@netagent.co.jp @hasegawayosuke http://utf-8.jp/Developers Summit 2012 NetAgent http://www.netagent.co.jp/