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

Slides:



Advertisements
Similar presentations
Jun Yosuke HASEGAWA. NetAgent OWASP Japan Local Chapter Meeting #6 自己紹介 はせがわようすけ  ネットエージェント株式会社  株式会社セキュアスカイ・テクノロジー.
Advertisements

オリジンのはなし. NetAgent Shibuya.XSS Feb What is "Origin" ?  オリジン  Same-Origin Policy  クロスオリジンなんとか…  RFC6454 "The Web.
Integrated Personal Page C05823 森本万里子 C05829 西山礼恵 C05899 高木華子.
1 情報処理基礎 2006 年 7 月 6 日. 2 本日の学習項目 HTML 文書の基礎知識を習得する。 ホームページ・ビルダーの基本的な使 い方を習得する。 ホームページの作成 自己紹介のためのホームページを作成する。
Internet Explorer 障害解析 最初の一歩 - IE のトラブルを理解する -. 概要 Internet Explorer を使用中に発生するトラブルの 種類と、調査のための切り分け方法を紹介します! (以降は IE と略称で表記します) よくあるお問い合わせ Web ページの表示が白画面のまま完了しない.
Copyright © Ariel Networks, Inc. AJAX 勉強会 アリエル・ネットワーク株式会社.
Nov Yosuke HASEGAWA #owaspjapan. OWASP Japan Local Chapter Meeting #8 #owaspjapan 自己紹介 はせがわようすけ  ネットエージェント株式会社  株式会社セキュアスカイ・テクノロジー 技術顧問  Microsoft.
情報アプリケーション1 2006 年 10 月 12 日 第四回資料 担当 重定 如彦. 目次 データの送信とフォーム クイズ CGI 複数のパーツのデータの分割方法 配列変数.
1 安全性の高いセッション管理方 式 の Servlet への導入 東京工業大学 理学部 千葉研究室所属 99-2270-6 松沼 正浩.
© 2005 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます prototype.js と Perl で Ajax 株式会社はてな 伊藤 直也
1 PHP プログラムの実行(まと め) 担当 岡村耕二 月曜日 2限 平成 22 年度 情報科学 III (理系コア科目・2年生) 本資料の一部は、堀良彰准教授、天野浩文准教授、菅沼明 准教授等による以前の講義資料をもとにしています。
1 なんとなく Ajax ~新しくて古い XMLHttp 川合孝典 (Kansai.pm) 2005/5/22.
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
The Perl Conference Japan ’98 朝日奈アンテナによる コンテンツ情報の取得と利用
Web::Security beyond HTML5
ネットエージェント株式会社 研究開発部 はせがわよすうけ
ハルビン絵葉書コレクションシステムの再構築と機能追加 -サーバ側:PHPとMySQLを用いて
技術トピックス 2014/10.
画像展示サイト“Fragments” 『閲覧しやすさ』と『デザイン性』を両立させた Webデザイン
サイバーセキュリティ演習 ― Webセキュリティ基礎&実践―
めんどうくさくない Bugハンティング Jul Yosuke HASEGAWA.
Webアプリケーションの 通信メカニズム WEBアプリ研究プロジェクト 第2回.
コンピュータウィルスと脆弱性 メディアコミュニケーション論Ⅲ 7/18/08.
受動的攻撃について Eiji James Yoshida penetration technique research site
第2章 ネットサービスとその仕組み(前編) [近代科学社刊]
<TITLE OF PRESENTATION>
Google AJAX Search APIのお勉強
IE5でアプリケーション開発 東日本計算センター 小野 修司.
オペレーティングシステムⅡ 第5回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト 2009/11/6.
Hot Pepper for iPod touch
第1回 HTML5入門.
XSSで使えるかもしれないJavaScriptテクニック
サイバーセキュリティ演習 ― Webセキュリティ基礎&実践―
第4回 個人の動画配信補足のためのWeb構築
Vulnerability of Cross-Site Scripting
第1回 JavaScriptゼミ ・ scriptエレメント ・ 記述における諸注意 ・ 古いブラウザへの対応方法
Outlook で送信したメールの 添付ファイルが消える
佐賀大学 理工学部知能情報システム学科 講師 大月 美佳
タグライブラリとJSP J2EE I 第10回 /
検索サイトの話 情報社会と情報倫理 1/22/09.
HTTPプロトコルとJSP (1) データベース論 第3回.
JQueryでAjax 藤田@ジャストプレイヤー ※参考しまくり文献 jQuery日本語リファレンス.
押さえておきたいIE8の セキュリティ新機能
HTTPプロトコル J2EE I 第7回 /
情報コミュニケーション入門 総合実習(1) 基礎知識のポイント(2)
基礎プログラミング演習 第1回.
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
実際にたたいてAPI APIの初歩からプログラムまで使用方法のAtoZ.
第8章 Web技術とセキュリティ   岡本 好未.
ネットワークアプリケーションと セキュリティ
卒業論文発表 「Web アクセスに伴う脅威の特徴分析」
ガジェット・マスターへの まわり道!? ~Ajaxを理解しよう~
分散IDSの実行環境の分離 による安全性の向上
第7回JavaScriptゼミ セクション4-5 発表者 直江 宗紀.
すぐできるBOOK -基本設定編-.
Webセキュリティ 情報工学専攻 1年 赤木里騎 P226~241.
日本郵便 「Web-EDI」利用ガイド (JP EDIシステム)
情報処理概論Ⅰ 2007 第5回 2019/4/7 情報処理概論Ⅰ 第5回.
情報コミュニケーション入門e 第12回 Part1 Web入門(2)
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
ASP.NET 2.0による Webサービスの構築 2008年10月18日 こくぶんまさひろ.
Webページに動きを持たせるJavascript言語について 例題のプログラムを通して体験的に理解することとします。
情報コミュニケーション入門e 第12回 Part1 Web入門(2)
システムプログラミング 第10回 プロセス間通信3 簡易Web server(準備) Chat プログラム 担当:青木義満、篠埜 功
CO-Client Opeartion 1.1 利用履歴データベースの設計 (スキーマ バージョン 対応)
第2回 Webサーバ.
ASP.NET 2.0による Webサービスの構築 2008年10月18日 こくぶんまさひろ.
例題のプログラムを通して JavaScriptの仕組みを理解することとします。
HTTPプロトコルの詳細 M1 峯 肇史.
Presentation transcript:

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

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

NetAgent security-mikan techtalk #5 これまでに調べた脆弱性  Webブラウザ、Webアプリケーションを中 心にいろいろ…  CVE XSS of Mozilla Firefox  CVE XSS of SquirrelMail  CVE XSS of Internet Explorer  CVE XSS of Mozilla Firefox  CVE XSS of Namazu  CVE XSS of Movable Type  CVE Cross-origin data disclosure of Mozilla Firefox  CVE Cross-origin data disclosure of Internet Explorer  CVE XSS of Mozilla Firefox  CVE XSS of Google Search Appliance  CVE XSS of Sage  CVE XSS of Mozilla Firefox...

難読化 JavaScript Obfuscated JavaScript

$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({ }+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:( {}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+( $._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$ $_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$. $;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$ ($.$($.$$+"\""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$. __+"(\\\"\\"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+$._$ +",\\"+$.$__+$.___+"\\"+$.__$+$.__$+$._$_+$.$_$_+"\\"+$.__$+$.$$_+$. $$_+$.$_$_+"\\"+$.__$+$._$_+$._$$+$.$$__+"\\"+$.__$+$.$$_+$._$_+"\\ "+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$.___+$.__+"\\\"\\"+$.$__+$.___+ ")"+"\"")())(); 記号JavaScript JS without alnum jjencode -

゚ ω ゚ノ = / `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 -

質問 Question

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

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

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

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

NetAgent security-mikan techtalk #5 次々とリリースされるブラウザ

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

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

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

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

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

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

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

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

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

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

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

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

NetAgent 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)//";

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

やってはいけない XSS対策

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

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

XSSの種類

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

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

NetAgent security-mikan techtalk #5 XSSの種類

NetAgent security-mikan techtalk #5 XSSの種類

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

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

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

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

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

DOM based XSS

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

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

ここまでXSSの復習です!

HTML5が生む脆弱性

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

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

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

NetAgent security-mikan techtalk #5 XSS  HTML5で多数の要素、属性、イベントが 導入

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

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

NetAgent 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 ) );

NetAgent 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; }

NetAgent 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 + ' ';

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

NetAgent security-mikan techtalk #5 XDM  Cross-Document Messaging  ブラウザのwindow/iframe間で相互に通信

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

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

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

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

NetAgent security-mikan techtalk #5 XHR Lv.2  XHRを利用する側は、任意ドメインから のデータを読まないようにチェック // bad code: 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: 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 ); などの指定で任意コンテンツを挿入可能

NetAgent security-mikan techtalk #5 XHR Lv.2  XHRを利用する側は、任意ドメインから のデータを読まないようにチェック // bad code: 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: 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 ); などの指定で任意コンテンツを挿入可能

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

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

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

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

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

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

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

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

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

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

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. 外部プラグイン / アプリが必 要 ? プラグインを起動またはダウン ロード 「拡張子ではなく、内容に よってファイルを開く」設定 値 仮決定 した ファイルタイプを使用 IE8+ && "X-Content-Type-Options:nosniff"? 仮決定したファイルタイプを使用 QUERY_STRING からファイルタイプを 仮決定 プラグインを起動 またはダウンロー ド コンテンツを sniff し ファイルタイプを決 定 コンテンツを sniff し ファイルタイプを決 定 外部プラグイン / アプリが必要 ? URL の拡張子からファイルタイプを 仮決定 ダウンロー ド プラグインを起動 またはダウンロー ド Yosuke HASEGAWA ※これ以外にも例外的な挙動が多数あり

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

NetAgent security-mikan techtalk #5 Ajaxデータを利用したXSS  XSS実例 bimapping.js/a.html?v= alert(1) &k... HTTP/ OK Content-Type: text/javascript; charset=utf-8 Date: Wed, 22 Jun :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/ OK Content-Type: text/javascript; charset=utf-8 Date: Wed, 22 Jun :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" はレジストリに未登録

NetAgent security-mikan techtalk #5 Ajaxデータを利用したXSS  XSS実例

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

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

NetAgent security-mikan techtalk #5 Ajaxデータの盗み見  JavaScriptとして解釈可能なAjaxデータ が狙われやすい  JavaScriptのsrcとして読み込む {"from" : JSON

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

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

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

NetAgent security-mikan techtalk #5 Array Hijacking for Android [ { "name" : "alice", "mail" : }, { "name" : "bob", "mail" : }, ] [ { "name" : "alice", "mail" : }, { "name" : "bob", "mail" : }, ] 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 : 攻撃者の作成した罠ページ

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

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

NetAgent security-mikan techtalk #5 JSON Hijacking for IE [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : }, { "name" : "John Smith", "mail" : } ] [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : }, { "name" : "John Smith", "mail" : } ] 攻撃者によって挿入 ターゲットとなるJSON :

NetAgent security-mikan techtalk #5 JSON Hijacking for IE [ { "name" : "abc"}];var t=[{"":"", "mail" : }, { "name" : "John Smith", "mail" : } ] [ { "name" : "abc"}];var t=[{"":"", "mail" : }, { "name" : "John Smith", "mail" : } ] ターゲットとなるJSON :

NetAgent 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" : }, { "name" : "John Smith", "mail" : } ] [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : }, { "name" : "John Smith", "mail" : } ] ターゲットとなるJSON [ { "name" : "abc"}];var t=[{"":"", "mail" : }, { "name" : "John Smith", "mail" : } ] [ { "name" : "abc"}];var t=[{"":"", "mail" : }, { "name" : "John Smith", "mail" : } ]

NetAgent security-mikan techtalk #5 JSON Hijacking for IE 攻撃者の準備した罠ページ Content-Type: application/json; charset=utf-8 [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : }, { "name" : "John Smith", "mail" : } ] Content-Type: application/json; charset=utf-8 [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : }, { "name" : "John Smith", "mail" : } ] 攻撃者対象のJSON こっちが優先される

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

NetAgent 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(盗み見対策)など も次善策として…

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

NetAgent security-mikan techtalk #5 Ajaxデータを利用した攻撃への対策  XMLHttpRequest以外からのアクセスを 弾く  リクエストヘッダに特定文字列を入れる GET 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/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 は自動挿入される

NetAgent security-mikan techtalk #5 Ajaxデータを利用した攻撃への対策  XMLHttpRequest以外からのアクセスを 弾く  リクエストヘッダに特定文字列を入れる GET 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/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 は自動挿入される

NetAgent 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

NetAgent 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ヘッダの 付与

新しい防御機構

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

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

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

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

NetAgent 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

NetAgent 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

質問タイム

NetAgent security-mikan techtalk #5 質問 @hasegawayosuke