趣味と実益の脆弱性発見

1.4K Views

February 16, 12

スライド概要

Developers Summit 2012

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Finding Vulnerabilities For Fun And Profit 趣味と実益の脆弱性発見 Feb 16 2012 Yosuke HASEGAWA

2.

自己紹介 はせがわようすけ ネットエージェント株式会社 研究開発部 株式会社セキュアスカイ・テクノロジー 技術顧問 Microsoft MVP for Consumer Security Oct 2005 http://utf-8.jp/ 難読化JavaScript書いてます Developers Summit 2012 NetAgent http://www.netagent.co.jp/

3.

難読化 JavaScript Obfuscated JavaScript

4.
[beta]
記号JavaScript

JS without alnum

$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:+
+$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$_
_:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$}
;$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$
])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($.
_=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$
._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"¥"
"+$.$_$_+(![]+"")[$._$_]+$.$$$_+"¥¥"+$.__$+$.$$_+$._$_+$.__+"(¥¥
¥"¥¥"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+$
._$+",¥¥"+$.$__+$.___+"¥¥"+$.__$+$.__$+$._$_+$.$_$_+"¥¥"+$.__$+$
.$$_+$.$$_+$.$_$_+"¥¥"+$.__$+$._$_+$._$$+$.$$__+"¥¥"+$.__$+$.$$_
+$._$_+"¥¥"+$.__$+$.$_$+$.__$+"¥¥"+$.__$+$.$$_+$.___+$.__+"¥¥¥"¥
¥"+$.$__+$.___+")"+"¥"")())();

jjencode - http://utf-8.jp/public/jjencode.html

5.
[beta]
顔文字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

6.

質問 Question

7.

質問 : Web技術、好きですか? Q. Do you love web technologies?

8.

クロスサイトスクリプティング 強制ブラウズ 書式文字列攻撃 リモートファイルインクルード SQLインジェクション パストラバーサル LDAPインジェクション バッファオーバーフロー CSRF セッションハイジャック 質問 : Web技術、好きですか? Q. Do you love web technologies? OSコマンドインジェクション オープンリダイレクタ DoS セッション固定攻撃 HTTPレスポンス分割 XPathインジェクション メモリリーク HTTPヘッダインジェクション

9.

Web技術、好きですか? 危険だらけのWeb技術が「好き」な人: かなり打たれ強い or 攻撃者 Developers Summit 2012 NetAgent http://www.netagent.co.jp/

10.

今日のおはなし Today's topic

11.

今日のおはなし これまでに調べた脆弱性の紹介 ブラウザの知られていないような機能を 用いた攻撃 Webの標準仕様を組み合わせて発生する 脆弱性 なぜ脆弱性を探すのか 他の人にできないことをする 10年後も世界で通じるエンジニアで あるために Developers Summit 2012 NetAgent http://www.netagent.co.jp/

12.

これまでに調べた脆弱性 Vulnerabilities I found

13.

これまでに調べた脆弱性 Webブラウザ、Webアプリケーションを中 心にいろいろ…             CVE-2007-0995 CVE-2007-1262 CVE-2007-2227 CVE-2008-0416 CVE-2008-1468 CVE-2008-5808 CVE-2010-1213 CVE-2010-3348 CVE-2010-3770 CVE-2011-1339 CVE-2011-3384 CVE-2011-3648 ... Developers Summit 2012 XSS of Mozilla Firefox XSS of SquirrelMail XSS of Internet Explorer XSS of Mozilla Firefox XSS of Namazu XSS of Movable Type Cross-origin data disclosure of Mozilla Firefox Cross-origin data disclosure of Internet Explorer XSS of Mozilla Firefox XSS of Google Search Appliance XSS of Sage XSS of Mozilla Firefox NetAgent http://www.netagent.co.jp/

14.

これまでに調べた脆弱性 一般的なWebアプリケーションの検査 Webアプリケーション側を調査 XSS、SQLインジェクション、etc... エスケープ漏れ、アプリの仕様間違いなどを 丹念に探す 効率性、網羅性が必要 Developers Summit 2012 NetAgent http://www.netagent.co.jp/

15.

これまでに調べた脆弱性 Webブラウザ側の脆弱性 ブラウザの知られていないような機能を用い た攻撃 Webの標準仕様を組み合わせて発生する脆弱 性 新しい脆弱性を「創り出す」ことができる Developers Summit 2012 NetAgent http://www.netagent.co.jp/

16.

これまでに調べた脆弱性 Webブラウザ側の脆弱性 Webアプリケーション側のエスケープ漏 れより影響範囲が大きい 修正されれば大勢の人が救われる 取り組んでいる人が少ない 今すぐにでも世界トップになれる可能性も! 仕事としては成り立ちにくい Developers Summit 2012 NetAgent http://www.netagent.co.jp/

17.

これまでに調べた脆弱性 ブラウザの知られていないような機能を用 いた攻撃 Content-Type無視によるXSS (IE) UTF-7によるJSON Hijacking (IE) Webの標準仕様を組み合わせて発生する 脆弱性 E4X + Web Workers = データ漏えい (Firefox) Developers Summit 2012 NetAgent http://www.netagent.co.jp/

18.

Content-Type無視によるXSS (IE) IEに昔からある悪癖 Content-Type以外も含めファイルタイプを 決定 HTMLではないものがHTMLに昇格して XSSを引き起こす 例えばtext/plain Developers Summit 2012 NetAgent http://www.netagent.co.jp/

19.

Content-Type無視によるXSS (IE) IEはContent-Type以外にも様々な要因 からファイルタイプを決定する 文書化されていない複雑なメカニズム Developers Summit 2012 NetAgent http://www.netagent.co.jp/

20.

Content-Type無視によるXSS (IE) ファイルタイプの決定因子 "Content-Type" HTTPレスポンスヘッダ "X-Content-Type-Option" HTTPレスポ ンスヘッダ Windowsレジストリにおける関連付け IEの設定:"拡張子ではなく、内容によって ファイルを開く" URL自身 コンテンツそのもの Developers Summit 2012 NetAgent http://www.netagent.co.jp/

21.

IEにおけるファイルタイプ決定のメカニズム Content-Typeがレジストリに登録されている? [ HKEY_CLASSES_ROOT¥MIME¥Database¥Content Type ] Y N ファイルタイプを仮決定 外部プラグイン/アプリが必要? IE8+ && "X-Content-Type-Options:nosniff"? Y Y プラグインを起動またはダウンロード N IE8+ && "X-Content-Type-Options:nosniff"? Y N ダウンロード 仮決定したファイルタイプを使用 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 コンテンツをsniffし ファイルタイプを決定 ※これ以外にも例外的な挙動が多数あり Y プラグインを起動 またはダウンロード N コンテンツをsniffし ファイルタイプを決定 Y プラグインを起動 またはダウンロード 21 Yosuke HASEGAWA http://utf-8.jp/

22.

Content-Type無視によるXSS (IE) ファイルタイプ決定のメカニズムは、と にかく複雑すぎる! 50分では話し終わらない! 今回の図もずいぶん省略しています そもそも例外的な挙動が多い いつのまにか挙動が変化していることも多い Developers Summit 2012 NetAgent http://www.netagent.co.jp/

23.

Content-Type無視によるXSS (IE) XSS実例 Developers Summit 2012 NetAgent http://www.netagent.co.jp/

24.
[beta]
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/

25.

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/

26.

これまでに調べた脆弱性 ブラウザの知られていないような機能を用 いた攻撃 Content-Type無視によるXSS (IE) UTF-7によるJSON Hijacking (IE) Webの標準仕様を組み合わせて発生する 脆弱性 E4X + Web Workers = データ漏えい (Firefox) Developers Summit 2012 NetAgent http://www.netagent.co.jp/

27.

UTF-7によるJSON Hijacking (IE) ターゲット 機密情報を含むJSON 攻撃者がJSON内の一部をコントロールできる 例えばWebメールの新着通知など JSON内の他のデータも盗み見できる JSON {"from" : "a@example.com"} Developers Summit 2012 NetAgent http://www.netagent.co.jp/

28.
[beta]
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.json

Developers Summit 2012

NetAgent http://www.netagent.co.jp/

29.
[beta]
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.json

Developers Summit 2012

NetAgent http://www.netagent.co.jp/

30.
[beta]
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
"abc+MPv/fwAiAH0AXQA7-var
t=[{"":"",
t+AD0AWwB7ACIAIg-:+ACI-",
"mail" : "hasegawa@utf-8.jp"
},
{
"name" : "John Smith",
"mail" : "john@example.com"
}
]
Developers Summit 2012

NetAgent http://www.netagent.co.jp/

31.

UTF-7によるJSON Hijacking (IE) ユーザ XHR.send(…) JSON.parse(txt) JSON { "from" : "a@example.com" } Developers Summit 2012 Web mail NetAgent http://www.netagent.co.jp/

32.
[beta]
UTF-7によるJSON Hijacking (IE)
<script src=“json”>
HTML

ユーザ

攻撃者

JSON

<script src=“json”>
From: "+MPv…ACI-"
JSON

{
"from" : "+MPv/…ACI-"

}
Developers Summit 2012

Web mail
NetAgent http://www.netagent.co.jp/

33.
[beta]
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/

34.

UTF-7によるJSON Hijacking (IE) IE6、IE7はHTTPレスポンスヘッダより <script>要素のcharsetを優先 IE8では修正されている 2008年10月に報告したが修正されない Developers Summit 2012 NetAgent http://www.netagent.co.jp/

35.
[beta]
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/

36.

これまでに調べた脆弱性 ブラウザの知られていないような機能を用 いた攻撃 Content-Type無視によるXSS (IE) UTF-7によるJSON Hijacking (IE) Webの標準仕様を組み合わせて発生する 脆弱性 E4X + Web Workers = データ漏えい (Firefox) Developers Summit 2012 NetAgent http://www.netagent.co.jp/

37.

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/

38.
[beta]
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/

39.

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/

40.
[beta]
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/

41.
[beta]
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/

42.
[beta]
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/

43.

E4X + Web Workers = データ漏えい Web Workersって何? JavaScript待望のマルチスレッド機構 バックグランドで重い処理を実行 DOMとは切り離されている var worker = new Worker( "worker.js" ); worker.onmessage = function( event ) { ... }; worker.postMessage( msg ); onmessage = function( event ){ /* 時間のかかる処理 */ postMessage( msg ); // メイン側に通知 } Developers Summit 2012 メイン側 worker.js NetAgent http://www.netagent.co.jp/

44.

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" ); // OK Developers Summit 2012 NetAgent http://www.netagent.co.jp/

45.
[beta]
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/

46.

E4X + Web Workers = データ漏えい E4Xの仕様に完全準拠ではない 単一XMLオブジェクトが読み込めない 仕様通りの実装だと脆弱性を生む いったんは収まったがWeb Workersの 実装に伴い再度オープン 枯れていない新しい機能は狙い目 MFSA-2010-42で修正済み ちなみに Mozilla Security Bug Bounty Program の対象なので賞金もらいました :-) Developers Summit 2012 NetAgent http://www.netagent.co.jp/

48.

なぜ脆弱性を探すのか Why I find Vulnerabilities ?

49.

なぜ脆弱性を探すのか 他の人にできないことをする 自分がやらなければいつまでも脆弱なまま パズル的な楽しさ 功名心 Developers Summit 2012 NetAgent http://www.netagent.co.jp/

50.

なぜ脆弱性を探すのか ハードウェアエンジニア(1997年~) 電子回路の設計 小規模なソフトウェアも 産業用計測機器 発電所などでも使用 高い品質が求められる Developers Summit 2012 NetAgent http://www.netagent.co.jp/

51.

なぜ脆弱性を探すのか 産業用計測機器の設計 高い安定性、堅牢性が要求される どのような入力でも安定して稼働 ソフトウェア、ハードウェアとも 堅牢性、安定性を脅かすバグとの戦い セキュリティ関連技術との出会い(2004年頃) Developers Summit 2012 NetAgent http://www.netagent.co.jp/

52.

なぜ脆弱性を探すのか ソフトウェアのセキュリティ 脆弱なソフトウェアと堅牢なソフトウェアの 違い 勉強会、メーリングリスト等への参加 Developers Summit 2012 NetAgent http://www.netagent.co.jp/

53.

なぜ脆弱性を探すのか セキュリティについて学べば学ぶほど あちこちで簡単に脆弱性がみつかる 新しい攻撃方法を考えつく 対策技術は未成熟と気付く Developers Summit 2012 NetAgent http://www.netagent.co.jp/

54.

なぜ脆弱性を探すのか いくつか問題を見つける 「脆弱性ではなく仕様です」の回答… 影響が大きいので公にはできない 自分だけが解決されないであろう問題を抱え てしまっている閉塞感 Developers Summit 2012 NetAgent http://www.netagent.co.jp/

55.

なぜ脆弱性を探すのか 「脆弱性ではなく仕様です」 PNGファイルがHTML扱いされXSS(IE) RLOを利用した拡張子の偽装 Developers Summit 2012 NetAgent http://www.netagent.co.jp/

56.

なぜ脆弱性を探すのか 「脆弱性ではなく仕様です」 最近はこういう返事は聞かない 「ありがとうございます」→何年も直らない 聞かなくなった時期は、ブラウザ競争の勃発 と一致 ※個人による体感です Developers Summit 2012 NetAgent http://www.netagent.co.jp/

57.

なぜ脆弱性を探すのか 問題を1人で抱える閉塞感 セキュリティ業界の友人からのアドバイス 「その仕様を最も悪用できる方法を思いつく ことが、世界平和の貢献につながる」 Developers Summit 2012 NetAgent http://www.netagent.co.jp/

58.

「その仕様を最も悪用できる方法を思いつ くことが、世界平和の貢献につながる」

59.

なぜ脆弱性を探すのか 「その仕様を最も悪用できる方法を思いつ くことが、世界平和の貢献につながる」 自分なりの解釈 悪用されたときの影響度が大きいのであれば 仕様の改善を迫ることもできる むしろセキュリティを通じて「世界の平和に 貢献」という大きな視野に感銘を受ける Developers Summit 2012 NetAgent http://www.netagent.co.jp/

60.

なぜ脆弱性を探すのか 「世界平和のため」 どうすればもっとセキュリティのために貢献 できるか セキュリティ業界への転身につながる 「セキュリティ製品を通じて社会に貢献」 Developers Summit 2012 NetAgent http://www.netagent.co.jp/

61.

10年後も世界で通じる エンジニアであるために

62.

10年後も世界で通じるエンジニアであるために Web = 標準化 + ブラウザ独自実装 標準化された機能 = 10年後も通用する 10年間成長しないつもりですか? ブラウザ独自の機能 = 10年後にはない? 独自機能を追いかけ続ける技術は 10年後も通用するはず!! CSS3 { ES }5 Developers Summit 2012 NetAgent http://www.netagent.co.jp/

63.

10年後も世界で通じるエンジニアであるために 未開の地を探し続ける! 誰も通っていない道を探せ! 標準化された部分はおもしろみが少ない 独自実装な部分は狙い目 CSS3 { ES }5 Developers Summit 2012 NetAgent http://www.netagent.co.jp/

64.

10年後も世界で通じるエンジニアであるために セキュリティな話をもっと発信して欲しい もっとみんなに発信してほしい! セキュリティ技術、日本発の話題が少ない 発信されていない情報は、世の中に存在しない のと等しい Developers Summit 2012 NetAgent http://www.netagent.co.jp/

65.

10年後も世界で通じるエンジニアであるために 「でも、セキュリティ界怖いし」 ちょっと間違ったことを言うと叩かれる? どうでもいい瑣末なことにこだわる? Developers Summit 2012 NetAgent http://www.netagent.co.jp/

66.

10年後も世界で通じるエンジニアであるために 「セキュリティ界」は怖い? 何か言われたときは、真摯に耳を傾けよう だいたい、自分が間違ってることが多い 自分自身のためにも、世界のためにも発信し てほしい! Developers Summit 2012 NetAgent http://www.netagent.co.jp/

67.

10年後も世界で通じるエンジニアであるために 未来のセキュリティ業界を支える人材発 掘のために、CTFコンテストやります! http://www.secco.jp/ Developers Summit 2012 NetAgent http://www.netagent.co.jp/

68.

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/

69.

質問 hasegawa@utf-8.jp hasegawa@netagent.co.jp @hasegawayosuke http://utf-8.jp/ Developers Summit 2012 NetAgent http://www.netagent.co.jp/