Presentation is loading. Please wait.

Presentation is loading. Please wait.

HTML5時代の Webセキュリティ Jul 21 2012 Yosuke HASEGAWA. NetAgent security-mikan techtalk #5 自己紹介 はせがわようすけ  ネットエージェント株式会社  株式会社セキュアスカイ・テクノロジー.

Similar presentations


Presentation on theme: "HTML5時代の Webセキュリティ Jul 21 2012 Yosuke HASEGAWA. NetAgent security-mikan techtalk #5 自己紹介 はせがわようすけ  ネットエージェント株式会社  株式会社セキュアスカイ・テクノロジー."— Presentation transcript:

1 HTML5時代の Webセキュリティ Jul 21 2012 Yosuke HASEGAWA

2 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 自己紹介 はせがわようすけ  ネットエージェント株式会社  株式会社セキュアスカイ・テクノロジー 技術顧問  Microsoft MVP for Consumer Security Oct 2005 -  http://utf-8.jp/  セキュリティキャンプ Webセキュリティクラス講師

3 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 これまでに調べた脆弱性  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...

4 難読化 JavaScript Obfuscated JavaScript

5 $=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({ }+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:( {}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+( $._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$ $_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$. $;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$ ($.$($.$$+"\""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$. __+"(\\\"\\"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+$._$ +",\\"+$.$__+$.___+"\\"+$.__$+$.__$+$._$_+$.$_$_+"\\"+$.__$+$.$$_+$. $$_+$.$_$_+"\\"+$.__$+$._$_+$._$$+$.$$__+"\\"+$.__$+$.$$_+$._$_+"\\ "+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$.___+$.__+"\\\"\\"+$.$__+$.___+ ")"+"\"")())(); 記号JavaScript JS without alnum jjencode - http://utf-8.jp/public/jjencode.html

6 ゚ ω ゚ノ = / `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))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )a+ ( ゚ー゚ )+ ( ゚ Θ ゚ )+ ( ゚ Д ゚ ) [ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((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 ゚ ]) ( ゚ Θ ゚ )) ('_'); 顔文字JavaScript JS with emoticons aaencode - http://utf-8.jp/public/aaencode.html

7 質問 Question

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

9 クロスサイトスクリプティング SQLインジェクション CSRF HTTPレスポンス分割 オープンリダイレクタ HTTPヘッダインジェクション セッションハイジャック パストラバーサル リモートファイルインクルード DoS OSコマンドインジェクション メモリリーク バッファオーバーフロー 強制ブラウズ セッション固定攻撃 LDAPインジェクション XPathインジェクション 書式文字列攻撃

10 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Web技術、好きですか? 「はい」に挙手した人  かなり打たれ強い or  攻撃者

11

12 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5時代のWebアプリ  次々とリリースされるブラウザ  多数の新しい要素と属性  canvas, video, audio, input…  多数の新しいAPI  Web Sockets, Web Storage, XHR Lv.2…  最適化されたJavaScriptエンジン  高速化された描画エンジン  どのブラウザにどの機能が実装されてい るのか把握できない

13 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 次々とリリースされるブラウザ 678 2001 20032004 2006200720082009 134 5910 3.5 3.6 3.01.52.0 678 2 4 1 2 3 20102005 1.0 5 20112012 9 10 23 5 11 12 6

14 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5の新機能  マルチメディアのサポート...  文書構造を表す要素...  フォームの拡張...  JavaScript API Web Workers, WebSocket, File...  その他…

15 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5時代のWebアプリ  HTML5時代のブラウザ  高速化、高機能化  実行コードのブラウザ上へのシフト  ネイティブアプリからWebアプリへ  サーバ側で実行されていた処理がブラウザの JavaScript上へ  攻撃もクライアントサイドへシフト  JavaScript上の問題点の増加  XSSやCSRFなどの比重が増加

16 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5時代のWebアプリ  攻撃もクライアントサイドへシフト  JavaScriptを通じた攻撃の比重が増加  XSSのリスクも増加 多くの点から見て、XSS 脆弱性の危険性 はバッファ オーバーフローに匹敵します。 ” “ セキュリティに関するブリーフィング : Web に対する SDL の適用 http://msdn.microsoft.com/ja-jp/magazine/cc794277.aspx

17 そもそもXSSって? →簡単におさらい

18 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSおさらい  対象  動的にHTMLを生成するWebアプリ  問題  攻撃者が用意したスクリプトがHTML内に挿 入される  対策  HTMLを生成する時点でエスケープ

19 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSおさらい http://shop.example.com/ ?item=">... http://shop.example.com/ ?item=">... GET /?item=">... <input type="text" value="">... <input type="text" value="">... HTMLを生成するときの エスケープ漏れ HTMLを生成するときの エスケープ漏れ 被害者 攻撃者 オンラインショップなど

20 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSおさらい 被害者 攻撃者 オンラインショップなど http://shop.example.com/ ?item=">... http://shop.example.com/ ?item=">... <input type="text" value="">... <input type="text" value="">... GET /?item=">...

21 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSおさらい Subject: test mail... Subject: test mail... HTMLを生成するときの エスケープ漏れ HTMLを生成するときの エスケープ漏れ 被害者 攻撃者 Webメールなど Subject: test mail... Subject: test mail...

22 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSおさらい HTMLを生成するときの エスケープ漏れ HTMLを生成するときの エスケープ漏れ 被害者 攻撃者 Webメールなど Subject: test mail... Subject: test mail...

23 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSおさらい  対象  動的にHTMLを生成するWebアプリ  問題  攻撃者が用意したスクリプトがHTML内に挿 入される  対策  HTMLを生成する時点でエスケープ

24 大原則 HTMLを生成する時点で エスケープ って何だっけ? → おさらい

25 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5  HTMLを生成する時点でエスケープ! XSSおさらい < > < → < > → > " → " ' → ' & → & < → < > → > " → " ' → ' & → & データ 処理 ユーザ HTML生成

26 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 エスケープの例外  href、src等のURLの動的生成  http以外のスキームに注意  JavaScript内の動的生成  JS内の文字列リテラルはHTMLとは異なるエ スケープ <iframe src="data:text/html;base64, PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K"> <iframe src="data:text/html;base64, PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K"> var s=" alert(1)//"; var s=" alert(1)//";

27 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSおさらい  HTMLを生成する時点でエスケープ  コンテキスト(文脈)に応じたエスケープ  コンテキストが入れ子になっているときはエス ケープも入れ子に。 …');">  URLの動的生成  href、src等はhttp,https限定とする

28 やってはいけない XSS対策

29 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5  入力時のサニタイズ やってはいけないXSS対策 < > 処理 ユーザ HTML生成 データ < → < > → > " → " ' → ' & → & < → < > → > " → " ' → ' & → & サニタイズ

30 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 やってはいけない:入力時のサニタイズ  入力時点でのデータの加工はプログラム 規模が大きくなると破綻する  「サニタイズ」という語が本来の意味を 失って意味不明になっている  続きはWebで サニタイズ言うな 検索

31 XSSの種類

32 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類  反射型XSS / Type-1  ユーザからの送信内容をそのまま表示  XSSフィルタ等である程度防御  お問い合わせフォーム、サイト内検索  持続型XSS / Type-2  攻撃者のスクリプトがサーバ内で保持  掲示板、Webメール

33 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類  反射型XSS / Type-1  ユーザからの送信内容をそのまま表示  XSSフィルタ等である程度防御  お問い合わせフォーム、サイト内検索  持続型XSS / Type-2  攻撃者のスクリプトがサーバ内で保持  掲示板、Webメール GET /?item=">...... ※ GET だけでなく POST もあり得る

34 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類

35 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類

36 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類 XSSフィルターはリクエストとレスポンス 両方に同じスクリプトが含まれると反応

37 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類  反射型XSS / Type-1  ユーザからの送信内容をそのまま表示  XSSフィルタ等である程度防御  お問い合わせフォーム、サイト内検索  持続型XSS / Type-2  攻撃者のスクリプトがサーバ内で保持  掲示板、Webメール

38 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類  反射型XSS / Type-1  ユーザからの送信内容をそのまま表示  XSSフィルタ等である程度防御  お問い合わせフォーム、サイト内検索  持続型XSS / Type-2  攻撃者のスクリプトがサーバ内で保持  掲示板、Webメール Subject: test... Subject: test... Subject: test... Subject: test...

39 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類  持続型XSS / Type-2  2006年6月 mixi「こんにちはこんにちは」  2007年8月 Twitter「こんにちはこんにち は」  2010年9月 Twitter

40 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類  反射型XSS / Type-1  ユーザからの送信内容をそのまま表示  XSSフィルタ等である程度防御  お問い合わせフォーム、サイト内検索  持続型XSS / Type-2  攻撃者のスクリプトがサーバ内で保持  掲示板、Webメール  DOM based XSS / Type-0  JavaScriptが引き起こす  サーバ側のHTML生成には問題なし //http://example.jp/# alert(1) div.innerHTML = location.hash; //http://example.jp/# alert(1) div.innerHTML = location.hash;

41 DOM based XSS

42 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 DOM based XSS  JavaScriptが引き起こすXSS  サーバ側のHTML生成時には問題なし  JavaScriptによるHTMLレンダリング時の問題  JavaScriptの利用に合わせて増加 //http://example.jp/# alert(1) div.innerHTML = location.hash; //http://example.jp/# alert(1) div.innerHTML = location.hash;

43 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 DOM based XSS location.hashを使ったXSSの場合、サーバ側に攻撃の 詳細が残らない

44 ここまでXSSの復習です!

45 HTML5が生む脆弱性

46 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5が生む脆弱性  Cross-Site Scripting(XSS)  要素、属性、イベントが増えている  Cross-Document Messaging(XDM)  クロスドメインでのドキュメント間通信  XMLHttpRequest(XHR) Lv.2  クロスドメインでの読み込み  Ajaxデータを利用した攻撃  XSS、データの盗み見

47 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5が生む脆弱性  Cross-Site Scripting(XSS)  要素、属性、イベントが増えている  Cross-Document Messaging(XDM)  クロスドメインでのドキュメント間通信  XMLHttpRequest(XHR) Lv.2  クロスドメインでの読み込み  Ajaxデータを利用した攻撃  XSS、データの盗み見

48 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSS  これまでの間違ったXSS対策  危険そうな要素を検出  onXXX、hrefなどの名称の属性を検出  これまで仮にこの方法で網羅できていた としても …

49 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSS  HTML5で多数の要素、属性、イベントが 導入

50 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSS  いわゆる「ブラックリスト」での対応に 漏れ  そもそもブラックリスト方式は無理がある  「HTML生成時にエスケープ」の原則  HTML5と関係なくXSSを防げる X //http://html5sec.org/#72 X //http://html5sec.org/#72

51 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 DOM based XSS  DOM based XSSは増えている  JavaScriptの大規模化に伴い増加  サーバ側での対策と原則は同じ  HTML生成時にエスケープ  URL生成時はhttp(s)のみ  backgroundImageへの代入やイベントハ ンドラの動的生成は避ける

52 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 DOM based XSS  HTML生成時にエスケープ  むしろtextNodeを使おう! div.innerHTML = s.replace( /&/g, "&" ).replace( /</g, "<" ).replace( />/g, ">" ).replace( /"/g, """ ).replace( /'/g, "'" ); div.innerHTML = s.replace( /&/g, "&" ).replace( /</g, "<" ).replace( />/g, ">" ).replace( /"/g, """ ).replace( /'/g, "'" ); div.appendChild( document.createTextElement( s ) ); div.appendChild( document.createTextElement( s ) );

53 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 DOM based XSS  URL生成時はhttp(s)のみ  オープンリダイレクタを発生させないよう 同一ホストに制限 if( url.match( /^https?:\/\// ) ){ a.setAttribute( "href", url ); } if( url.match( /^https?:\/\// ) ){ a.setAttribute( "href", url ); } var base = location.protocol + "//" + location.host + "/"; if( url.substring( 0, base.length ) == base ){ location.href = url; } var base = location.protocol + "//" + location.host + "/"; if( url.substring( 0, base.length ) == base ){ location.href = url; }

54 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 DOM based XSS if( url.match( /^https?:\/\// ) ){ var elm = docuement.createElement( "a" ); elm.appendChild( document.createTextNode( url ) ); elm.setAttribute( "href", url ); div.appendChild( elm ); } if( url.match( /^https?:\/\// ) ){ var elm = docuement.createElement( "a" ); elm.appendChild( document.createTextNode( url ) ); elm.setAttribute( "href", url ); div.appendChild( elm ); } // bad code div.innerHTML = ' ' + url + ' '; // bad code div.innerHTML = ' ' + url + ' ';

55 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5が生む脆弱性  Cross-Site Scripting(XSS)  要素、属性、イベントが増えている  Cross-Document Messaging(XDM)  クロスドメインでのドキュメント間通信  XMLHttpRequest(XHR) Lv.2  クロスドメインでの読み込み  Ajaxデータを利用した攻撃  XSS、データの盗み見

56 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XDM  Cross-Document Messaging  ブラウザのwindow/iframe間で相互に通信

57 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XDM  Cross-Document Messaging // メッセージ送信側 iframe1.contentWindow.postMessage( " メッセージ " ) // メッセージ送信側 iframe1.contentWindow.postMessage( " メッセージ " ) // メッセージ受信側 (iframe 内に表示 ) window.onmessage = function( e ){ if( e.origin == "http://example.jp/" ){ alert( e.data ); } // メッセージ受信側 (iframe 内に表示 ) window.onmessage = function( e ){ if( e.origin == "http://example.jp/" ){ alert( e.data ); } 正規の相手以外と通信しないようにoriginを必ず確認する

58 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5が生む脆弱性  Cross-Site Scripting(XSS)  要素、属性、イベントが増えている  Cross-Document Messaging(XDM)  クロスドメインでのドキュメント間通信  XMLHttpRequest(XHR) Lv.2  クロスドメインでの読み込み  Ajaxデータを利用した攻撃  XSS、データの盗み見

59 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XHR Lv.2  XMLHttpRequest  かつては同一オリジンへのリクエストしかで きなかった  プロトコル + ホスト + ポート var xhr = new XMLHttpRequest(); xhr.open( "GET", "http://example.jp/", true ); xhr.onreadystatechange = function(){ if( xhr.readyState == 4 && xhr.status == 200 ){ alert( xhr.responseText ); } xhr.send( null ); var xhr = new XMLHttpRequest(); xhr.open( "GET", "http://example.jp/", true ); xhr.onreadystatechange = function(){ if( xhr.readyState == 4 && xhr.status == 200 ){ alert( xhr.responseText ); } xhr.send( null );

60 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XHR Lv.2  XMLHttpRequest  現在はクロスドメインでのリクエストが可能 GET / HTTP/1.1 Host: another.example.jp Origin: http://base.example.jp/ HTTP/1.1 200 OK Access-Control-Allow-Origin: * GET / HTTP/1.1 Host: another.example.jp Origin: http://base.example.jp/ HTTP/1.1 200 OK Access-Control-Allow-Origin: * HTML

61 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XHR Lv.2  XHRを利用する側は、任意ドメインから のデータを読まないようにチェック // bad code: http://example.jp/#/foo/bar.txt var url = location.hash.substring(1); var xhr = new XMLHttpRequest(); xhr.open( "GET", url, true ); xhr.onreadystatechange = function(){ if( xhr.readyState == 4 && xhr.status == 200 ){ div.innerHTML = xhr.responseText; } xhr.send( null ); // bad code: http://example.jp/#/foo/bar.txt var url = location.hash.substring(1); var xhr = new XMLHttpRequest(); xhr.open( "GET", url, true ); xhr.onreadystatechange = function(){ if( xhr.readyState == 4 && xhr.status == 200 ){ div.innerHTML = xhr.responseText; } xhr.send( null ); http://example.jp/#http://evil.example.jp/ などの指定で任意コンテンツを挿入可能

62 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XHR Lv.2  XHRを利用する側は、任意ドメインから のデータを読まないようにチェック // bad code: http://example.jp/#/foo/bar.txt var url = location.hash.substring(1); var xhr = new XMLHttpRequest(); xhr.open( "GET", url, true ); xhr.onreadystatechange = function(){ if( xhr.readyState == 4 && xhr.status == 200 ){ div.innerHTML = xhr.responseText; } xhr.send( null ); // bad code: http://example.jp/#/foo/bar.txt var url = location.hash.substring(1); var xhr = new XMLHttpRequest(); xhr.open( "GET", url, true ); xhr.onreadystatechange = function(){ if( xhr.readyState == 4 && xhr.status == 200 ){ div.innerHTML = xhr.responseText; } xhr.send( null ); http://example.jp/#http://evil.example.jp/ などの指定で任意コンテンツを挿入可能

63 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XHR Lv.2  XHRを利用する側は、任意ドメインから のデータを読まないようにチェック // http://example.jp/#/foo/bar.txt var url = location.hash.substring(1); if( url.match( /^\/\w/ ) ){ var xhr = new XMLHttpRequest(); xhr.open( "GET", url, true );... } // http://example.jp/#/foo/bar.txt var url = location.hash.substring(1); if( url.match( /^\/\w/ ) ){ var xhr = new XMLHttpRequest(); xhr.open( "GET", url, true );... }

64 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XHR Lv.2  サーバ側:特定の相手にのみ応答を許可  サーバ側はリクエストのOriginヘッダを見て 相手を判別してはいけない  Originヘッダは偽装されている可能性がある。 GET / HTTP/1.1 Host: another.example.jp Origin: http://base.example.jp/ HTTP/1.1 200 OK Access-Control-Allow-Origin: htp://base.example.jp GET / HTTP/1.1 Host: another.example.jp Origin: http://base.example.jp/ HTTP/1.1 200 OK Access-Control-Allow-Origin: htp://base.example.jp リクエスト レスポンス

65 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XHR Lv.2  サーバ側:特定の相手にのみ応答を許可。  JSで明示的に指定した場合のみCookieが送 信される GET / HTTP/1.1 Host: another.example.jp Origin: http://base.example.jp/ Cookie: sessionid=A251BBCA HTTP/1.1 200 OK Access-Control-Allow-Origin: htp://base.example.jp Access-Control-Allow-Credentials: true GET / HTTP/1.1 Host: another.example.jp Origin: http://base.example.jp/ Cookie: sessionid=A251BBCA HTTP/1.1 200 OK Access-Control-Allow-Origin: htp://base.example.jp Access-Control-Allow-Credentials: true リクエスト レスポンス xhr.withCredentials = true; // JavaScript 内

66 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XHR Lv.2  サーバ側:特定の相手にのみ応答を許可。  リクエストヘッダに「秘密の情報」を含める  サーバ側はリクエストヘッダ内の情報を確認 して正規の通信相手か判断  クロスドメインでのsetRequestHeaderは 癖があるので注意 事前にOPTIONS要求が発行(preflight) https://developer.mozilla.org/en/http_access_control xhr.setRequestHeader( "X-Secret-Key", "A251BBCA" );

67 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5が生む脆弱性  Cross-Site Scripting(XSS)  要素、属性、イベントが増えている  Cross-Document Messaging(XDM)  クロスドメインでのドキュメント間通信  XMLHttpRequest(XHR) Lv.2  クロスドメインでの読み込み  Ajaxデータを利用した攻撃  XSS、データの盗み見

68 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用した攻撃  Ajaxでの利用増加  HTML5とは直接は関係ない  Ajaxデータを利用したXSS  Ajaxでやり取りされるデータ(JSON,text, csv etc..)を直接ブラウザ上で開いたときに XSS  Ajaxデータの盗み見  機密情報を含むAjaxデータを受動的攻撃によ り攻撃者が盗み見る

69 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用した攻撃  Ajaxでの利用増加  HTML5とは直接は関係ない  Ajaxデータを利用したXSS  Ajaxでやり取りされるデータ(JSON,text, csv etc..)を直接ブラウザ上で開いたときに XSS  Ajaxデータの盗み見  機密情報を含むAjaxデータを受動的攻撃によ り攻撃者が盗み見る

70 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用したXSS  IEのContent-Type無視  HTMLではないものがHTMLに昇格して XSS  例えばtext/plain

71 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用したXSS  IEは最終的に「ファイルタイプ」に基づいて コンテンツを処理する  Content-Type 以外にも様々な要因から ファイルタイプを決定  文書化されていない複雑なメカニズム  「ファイルのダウンロードダイアログで表示され るファイル名の命名規則」 http://support.microsoft.com/kb/436153/ja ファイルタイプ決定のメカニズム解明に近づく唯一のドキュメント

72 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用したXSS  ファイルタイプの決定因子  "Content-Type" HTTPレスポンスヘッダ  "X-Content-Type-Option" HTTPレスポ ンスヘッダ  Windowsレジストリにおける関連付け  IEの設定:"拡張子ではなく、内容によって ファイルを開く"  URL自身  コンテンツそのもの

73 IEにおけるファイルタイプ決定のメカニズム 73 Y N Y N N Y 有効 無効 YN NYYN YN Content-Type がレジストリに登録されている ? [ HKEY_CLASSES_ROOT\MIME\Database\Content Type ] ファイルタイプを仮決定 外部プラグイン / アプリが必要 ? IE8+ && "X-Content-Type-Options:nosniff"? コンテンツを sniff しファイルタイプを決定 URL の拡張子が ".cgi" または ".exe" または "/" ? e.g. http://utf-8.jp/a.cgi?abcd, http://utf-8.jp/foo/ 外部プラグイン / アプリが必 要 ? プラグインを起動またはダウン ロード 「拡張子ではなく、内容に よってファイルを開く」設定 値 仮決定 した ファイルタイプを使用 IE8+ && "X-Content-Type-Options:nosniff"? 仮決定したファイルタイプを使用 QUERY_STRING からファイルタイプを 仮決定 プラグインを起動 またはダウンロー ド コンテンツを sniff し ファイルタイプを決 定 コンテンツを sniff し ファイルタイプを決 定 外部プラグイン / アプリが必要 ? URL の拡張子からファイルタイプを 仮決定 ダウンロー ド プラグインを起動 またはダウンロー ド Yosuke HASEGAWA http://utf-8.jp/ ※これ以外にも例外的な挙動が多数あり

74 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用したXSS  ファイルタイプ決定のメカニズムは、と にかく複雑すぎる!  そもそも例外的な挙動が多い  いつのまにか挙動が変化していることも多い  Microsoft自身も挙動を把握しきれていない のでは

75 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用したXSS  XSS実例 https://www.microsoft.com/en-us/homepage/ bimapping.js/a.html?v= alert(1) &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 alert(1) ={"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".... 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 alert(1) ={"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" はレジストリに未登録

76 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用したXSS  XSS実例

77 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用したXSS  AjaxコンテンツによるXSSは以下のよう な状況で発生しやすい  JSON - JSON文字列内 {"text" :"..." }  JSONP - callback名 http://example.com/?callback=...  text, CSV - そもそもエスケープできない  対策の話はあとで。

78 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用した攻撃  Ajaxでの利用増加  HTML5とは直接は関係ない  Ajaxデータを利用したXSS  Ajaxでやり取りされるデータ(JSON,text, csv etc..)を直接ブラウザ上で開いたときに XSS  Ajaxデータの盗み見  機密情報を含むAjaxデータを受動的攻撃によ り攻撃者が盗み見る

79 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータの盗み見  JavaScriptとして解釈可能なAjaxデータ が狙われやすい  JavaScriptのsrcとして読み込む {"from" : "a@example.com"} JSON

80 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータの盗み見  様々な手法でブラウザごとにJSONデータ を奪取  JSON Array Hijacking for Android  JSON Hijacking for IE  JSON以外にもCSVなどは狙いやすい

81 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータの盗み見  様々な手法でブラウザごとにJSONデータ を奪取  JSON Hijacking for Android  JSON Hijacking for IE  JSON以外にもCSVなどは狙いやすい

82 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Array Hijacking for Android  Androidでは、古いJSON Hijackingの 手法がまた通用する  PC用ブラウザでは2008年頃にはすでに根絶  Android 2.2, 2.3で確認  property setter の再定義  機密情報を含むJSON配列がターゲット

83 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Array Hijacking for Android [ { "name" : "alice", "mail" : "alice@example.com" }, { "name" : "bob", "mail" : "bob@example.jp" }, ] [ { "name" : "alice", "mail" : "alice@example.com" }, { "name" : "bob", "mail" : "bob@example.jp" }, ] var s = ""; Object.prototype.__defineSetter__( "mail", function( val ) { s += "mail:" + val + "\n"; } ); Object.prototype.__defineSetter__( "name", function( val ) { s += "name:" + val + "\n"; } ); var s = ""; Object.prototype.__defineSetter__( "mail", function( val ) { s += "mail:" + val + "\n"; } ); Object.prototype.__defineSetter__( "name", function( val ) { s += "name:" + val + "\n"; } ); 攻撃対象となるJSON : http://example.jp/target.json 攻撃者の作成した罠ページ

84 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータの盗み見  様々な手法でブラウザごとにJSONデータ を奪取  JSON Hijacking for Android  JSON Hijacking for IE  JSON以外にもCSVなどは狙いやすい

85 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 JSON Hijacking for IE  IE6,IE7では特定条件下でJSONの奪取が 可能  攻撃者がJSON内に文字列を挿入可能  機密情報を含むJSONがターゲット

86 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 JSON Hijacking for IE [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] 攻撃者によって挿入 ターゲットとなるJSON : http://example.com/newmail.json

87 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 JSON Hijacking for IE [ { "name" : "abc"}];var t=[{"":"", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] [ { "name" : "abc"}];var t=[{"":"", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] ターゲットとなるJSON : http://example.com/newmail.json

88 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 JSON Hijacking for IE alert( t[ 1 ].name + t[ 1 ].mail ); alert( t[ 1 ].name + t[ 1 ].mail ); 攻撃者は罠ページを準備して誘導 [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] ターゲットとなるJSON http://example.com/newmail.json [ { "name" : "abc"}];var t=[{"":"", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] [ { "name" : "abc"}];var t=[{"":"", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ]

89 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 JSON Hijacking for IE 攻撃者の準備した罠ページ 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" } ] 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" } ] 攻撃者対象のJSON こっちが優先される

90 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 JSON Hijacking for IE  IE6,IE7はHTTPレスポンスヘッダより 要素のcharset属性を優先  IE8では修正されている  2008年10月に報告したが修正されない

91 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用した攻撃  Ajaxデータを利用した攻撃  Ajaxデータを利用したXSS Ajaxでやり取りされるデータ(JSON,text, csv etc..) を直接ブラウザ上で開いたときにXSS  Ajaxデータの盗み見 機密情報を含むAjaxデータを受動的攻撃により攻撃者 が盗み見る  対策  XMLHttpRequest以外からのアクセスを弾く  X-Content-Type-Options: nosniffヘッダ  エスケープ(XSS対策)、POST only(盗み見対策)など も次善策として…

92 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用した攻撃への対策  XMLHttpRequest以外からのアクセスを 弾く  Ajaxデータは通常、XHRからのリクエスト を想定している  XHR以外からアクセスさせないことでXSSお よび盗み見を防ぐことができる

93 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用した攻撃への対策  XMLHttpRequest以外からのアクセスを 弾く  リクエストヘッダに特定文字列を入れる 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) 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) jQuery、prototype.js だと X-Request-With は自動挿入される

94 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用した攻撃への対策  XMLHttpRequest以外からのアクセスを 弾く  リクエストヘッダに特定文字列を入れる 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) 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) jQuery、prototype.js だと X-Request-With は自動挿入される

95 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用した攻撃への対策  X-Content-Type-Optoins:nosniff  レスポンスヘッダで応答  IE8以降でHTML扱いされることがなくなる Content-Type: application/json; charset=utf-8 X-Content-Type-Options: nosniff Content-Type: application/json; charset=utf-8 X-Content-Type-Options: nosniff

96 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5が生む脆弱性:まとめ  Cross-Site Scripting(XSS)  これまで通りの対策の徹底  Cross-Document Messaging(XDM)  originによる通信相手の確認  XMLHttpRequest(XHR) Lv.2  クライアント/サーバ側とも通信相手を確認  Ajaxデータを利用した攻撃  XMLHttpRequestからの要求のみに限定  X-Content-Type-Options:nosniffヘッダの 付与

97 新しい防御機構

98 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 新しい防御機構  様々な防御機構がブラウザに追加  XSSフィルター / XSS Auditor  X-Content-Type-Options  クリックジャッキング対策  Content Security Policy

99 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSフィルター / XSS Auditor  反射型のXSSをほぼ軽減  IE8+、Chrome、Safari に搭載  レスポンスヘッダに の指定でフィルタを停止可能 X-XSS-Protection: 0

100 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 X-Content-Type-Options  Content-Typeに従ってコンテンツを開 く指定  コンテンツ内の "sniff" を行わなくなる  IE8+で有効  レスポンスヘッダに以下をつける  原則、全てのコンテンツにつけておくべ き。 X-Content-Type-Options: nosniff

101 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 クリックジャッキング対策  クリックジャッキング  標的サイトを透明に重ね、意図しないクリッ ク等を引き起こす攻撃 透明表示の 標的サイト 罠サイト

102 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 クリックジャッキング対策  frameおよびiframeでの表示を禁止する  IE8+、Chrome、Safari、Opera、 Firefoxの各ブラウザが対応  レスポンスヘッダで指定 // 全ての埋め込みを禁止 X-Frame-Options: DENY // 全ての埋め込みを禁止 X-Frame-Options: DENY // 同一オリジン以外からの埋め込みを禁止 X-Frame-Options: SAMEORIGIN // 同一オリジン以外からの埋め込みを禁止 X-Frame-Options: SAMEORIGIN http://www.jpcert.or.jp/ed/2009/ed090001.pdf

103 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Content Security Policy  Content-Security-Policy(CSP)  等のソースを限定するための 指令  レスポンスヘッダで指定 // 画像以外を同一ドメインに制約 Content-Security-Policy: default-src 'self'; image-src * // 画像以外を同一ドメインに制約 Content-Security-Policy: default-src 'self'; image-src * // example.jp の script src を許可 Content-Security-Policy: default-src 'self'; script-src example.jp // example.jp の script src を許可 Content-Security-Policy: default-src 'self'; script-src example.jp http://www.w3.org/TR/2012/WD-CSP-20120710/ http://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html

104 質問タイム

105 NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 質問 hasegawa@utf-8.jp hasegawa@netagent.co.jp @hasegawayosuke http://utf-8.jp/

106


Download ppt "HTML5時代の Webセキュリティ Jul 21 2012 Yosuke HASEGAWA. NetAgent security-mikan techtalk #5 自己紹介 はせがわようすけ  ネットエージェント株式会社  株式会社セキュアスカイ・テクノロジー."

Similar presentations


Ads by Google