めんどうくさくない Bugハンティング Jul 21 2012 Yosuke HASEGAWA.

Slides:



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

Jun Yosuke HASEGAWA. NetAgent OWASP Japan Local Chapter Meeting #6 自己紹介 はせがわようすけ  ネットエージェント株式会社  株式会社セキュアスカイ・テクノロジー.
Wiki と Web サービス API. Wiki と Web サービス API ( 1 )  Web サービス API の流行 Blog が投稿用の Web サービス API を提供 Amazon 、 Google 、 Yahoo などが各種情報 取得のための Web サービス API を提供.
オリジンのはなし. NetAgent Shibuya.XSS Feb What is "Origin" ?  オリジン  Same-Origin Policy  クロスオリジンなんとか…  RFC6454 "The Web.
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 なんとなく Ajax ~新しくて古い XMLHttp 川合孝典 (Kansai.pm) 2005/5/22.
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
Rubyでニコニコをごにょごにょ MH35.
IIS 4.0で開発をするコツ Webアプリケーション構築.
・ω・.
エンコーディングと セキュリティ 徹底調査 - XSS Allstars from Japan - Masato Kinugawa.
Web::Security beyond HTML5
Webアプリケーション開発の 基本的なポイント
2007/12/21 宮脇文経 源氏物語の世界 再編集版 オリジナル - 高千穂大学 渋谷栄一教授 作成、無償公開
ネットエージェント株式会社 研究開発部 はせがわよすうけ
画像展示サイト“Fragments” 『閲覧しやすさ』と『デザイン性』を両立させた Webデザイン
サイバーセキュリティ演習 ― Webセキュリティ基礎&実践―
SOHOシステムの構築と運用 東北NTユーザ会新潟勉強会資料.
コンピュータウィルスと脆弱性 メディアコミュニケーション論Ⅲ 7/18/08.
JPAを利用した RESTful Webサービスの開発
JavaScriptゼミ第2回 2-2 変数とリテラル 発表者 直江宗紀.
IDLTM/IONTMを使用した UDON (Universe via Darts ON-line) プロトタイプの作成
スマホでも動作する JavaScript製 アドベンチャーゲームの作り方
Hot Pepper for iPod touch
ケータイキット for Smarty のご紹介
既存のBPOS のお客様のBPOS から Office 365 への切替
XSSで使えるかもしれないJavaScriptテクニック
Attacking with Character Encoding for Profit and Fun
市販のソフトウェアが これほど脆弱な理由 (それをどのように解決するか).
「コンピュータと情報システム」 07章 インターネットとセキュリティ
Vulnerability of Cross-Site Scripting
Webサービスマッシュアップを利用したWebアプリケーションの開発
第1回 JavaScriptゼミ ・ scriptエレメント ・ 記述における諸注意 ・ 古いブラウザへの対応方法
オペレーティングシステムⅡ 第3回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト 2009/10/16.
タグライブラリ ソフトウェア特論 第6回.
JavaScript 成瀬 基樹 平野 敦 北浦 繁.
卒研:データベースチーム 第4回 DOMを使った処理
タグライブラリとJSP J2EE I 第10回 /
JavaScript Language Update
見た目を定義する技術 CSS(スタイルシート).
IEのshowModalDialogとCookie(KB831678), デバッ グ用WinInet.dllの紹介
インターネット活用法 ~ブラウザ編~ 09016 上野喬.
JQueryでAjax 藤田@ジャストプレイヤー ※参考しまくり文献 jQuery日本語リファレンス.
タグライブラリとJSP J2EE II 第2回 2004年10月7日 (木).
押さえておきたいIE8の セキュリティ新機能
初年次セミナー 第2回 文字の出力.
初心者のためのセキュリティ/プライバシー講座
Javaによる Webアプリケーション入門 第5回
第8章 Web技術とセキュリティ   岡本 好未.
第4回JavaScriptゼミ セクション2-8 発表者 直江 宗紀.
卒業論文発表 「Web アクセスに伴う脅威の特徴分析」
ガジェット・マスターへの まわり道!? ~Ajaxを理解しよう~
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
基礎プログラミング演習 第5回 関数とイベントを使ったプログラム.
Webセキュリティ 情報工学専攻 1年 赤木里騎 P226~241.
ミドルウェア”TSUNAGI”を 用いたWEBアプリケーションの構築
基礎プログラミング演習 第12回.
HP作成 そろそろまとめ編 担当:TAの人.
Cell/B.E.のSPE Isolationモードを用いた監視システム
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
手書き文字の自動認識アプリケーション 15K1013 坂本 倖輝
基礎プログラミング演習 第3回.
図書系職員のための アプリケーション開発講習会
Webページに動きを持たせるJavascript言語について 例題のプログラムを通して体験的に理解することとします。
強制パススルー機構を用いた VMの安全な帯域外リモート管理
PHP と SQL (MySQL) の連携 日本語のデータを扱う
例題のプログラムを通して JavaScriptの仕組みを理解することとします。
情報基礎 空間情報の利用 講義の資料は下記のURLを参照.
Presentation transcript:

めんどうくさくない Bugハンティング Jul 21 2012 Yosuke HASEGAWA

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

これまでに調べた脆弱性 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 ...

質問 Question

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

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

Web技術、好きですか? 「はい」に挙手した人 かなり打たれ強い or 攻撃者

そもそもバグハンターって?

バグハンター(適当な想像) バグハンターってこんな人だ バグハントの方法 いつもバイナリエディタを開いてる デバッガは友達 電卓立ち上げたら勝ちだと思ってる バグハントの方法 とにかくコードを追う ファザーで叩く 見つけるための根気と執念

バグハンター ≒ バイナリアン? 否

バイナリもWebもバグハンターの資質は変わらない バグハンター(適当な想像) バイナリ系バグハンター いつもバイナリエディタを開いてる デバッガは友達 電卓立ち上げたら勝ちだと思ってる バグハントの方法 とにかくコードを追う ファザーで叩く 見つけるための根気と執念 Web系バグハンター いつもローカルHTTPプロキシを開いてる IEは友達 alert立ち上げたら勝ちだと思ってる バグハントの方法 とにかく入出力を追う スキャナで叩く 見つけるための根気と執念 バイナリもWebもバグハンターの資質は変わらない

とにかく(コード|入出力)を追う 見つけるための根気と執念 だいぶめんどくさい!

「未来を予測する最善の方法は、 それを創りだすことだ」 バグ探しめんどくさい! 執念深く探すのはだいぶめんどくさい 探さずにバグを見つける方法はないものか? 「未来を予測する最善の方法は、  それを創りだすことだ」 アラン・ケイ

脆弱性も「創り」だしちゃえばいいんだ!!!

脆弱性を創りだす 新しい脆弱性を「創りだす」 めんどくさい解析とかイヤだ 手より頭を使う 実装のミスではなく、既存の仕様・機能を最大限悪用できる方法を考える 新しい攻撃手法を考える 昨日まで安全だったソフトウェアがある日とつぜん軒並み危険になる

新しい脆弱性を創りだす 既存の機能を最大限悪用できる方法、新しい攻撃手法 Unicode円記号によるパストラバーサル UTF-7によるXSS(IE) E4X+WebWorkersによるデータ漏えい(Firefox)

Unicode円記号による パストラバーサル

円記号によるパストラバーサル Unicodeにはパス区切りの∖(U+005C)とは別に\(U+00A5)が定義 UnicodeからShift_JISへの変換でどちらも0x5Cに置き換わる いろいろできるんじゃね?

円記号によるパストラバーサル Unicodeの入力を持ちながら内部はShift_JISで処理 NTFS/FAT32上のファイル名 アンチウイルスでDoS、検索エンジンのインデックサでトラバーサルなど メーラの添付ファイル 一時展開するディレクトリを超えて展開

円記号によるパストラバーサル

円記号によるパストラバーサル

UTF-7によるXSS

UTF-7によるXSS 初出: 2005年12月、Googleを対象としたXSSをYair Amit氏が報告

UTF-7によるXSS 文字コードをUTF-7と誤認することによるXSS +ADw-script+AD4-alert(1)+ADw-script+AD4- 当時の対策「charsetをつける」 文字コードを誤認させるのが目的ならcharsetついてても攻略できるんじゃね?

UTF-7によるXSS charsetついてても IEが認識できないcharsetならXSS可能 Content-Type: text/html;charset=cp932 <meta>より前にニセの<meta>吐いてXSS可能 <title>+ADw-/title+AD4APA-meta http-equiv+AD0-content-type content+AD0-text/html+ADs-charset=utf-7+AD4-</title>

UTF-7によるXSS GoogleのあちこちでXSS可能でした www, news, books, Appliance… http://www.google.com/search?oe=cp932&q=%2BADw-... (今ならがっぽり報奨金もらえたのに…)

E4X+WebWorkerによるデータ漏えい

E4X + Web Workers = データ漏えい ECMAScript for XML (ECMA-357) https://developer.mozilla.org/ja/E4X JS内に直接XMLを記述可能 Firefox 15以前、ActionScriptでサポート

E4X + Web Workers = データ漏えい 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 );

E4X + Web Workers = データ漏えい XML内にJSの記述もできる。 XML内の {....} はJavaScriptとして動作

E4X + Web Workers = データ漏えい 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 ); { alert(1) }

E4X + Web Workers = データ漏えい E4XはJavaScript 外部から読み込み可能

E4X + Web Workers = データ漏えい var s = <mail> <subject>Test mail</subject> </mail> ; <script src="e4x.js"></script> <script> alert( s.subject ); </script>

E4X + Web Workers = データ漏えい これはJavaScript? HTML? HTMLでもありJavaScriptでもある <div> { alert( "Hello, E4X World." ); } </div> Hello, HTML World.

E4X + Web Workers = データ漏えい 攻撃者がHTML内の2か所に文字列を挿入可能な場合、その間のメッセージが外部から取得可能 (以下のコードは現在のFirefoxではそのままでは動作しません) <div>{ foo( <span>秘密のメッセージ部分</span> ) } </div> <script> function foo( s ){ alert( s ); } </script> <script src="target.html"></script>

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として動作する

E4X + Web Workers = データ漏えい JavaScript待望のマルチスレッド機構 バックグランドで重い処理を実行 DOMとは切り離されている

E4X + Web Workers = データ漏えい var worker = new Worker( "worker.js" ); worker.onmessage = function( event ) { ... }; worker.postMessage( msg ); メイン側 onmessage = function( event ){ /* 時間のかかる処理 */ postMessage( msg ); // メイン側に通知 } worker.js

E4X + Web Workers = データ漏えい new Workers( src ) は同一オリジンのみ (プロトコル、ホスト、ポートが一致すること) Worker内からは間接的に他オリジンのJSも利用可能 var worker = new Worker( "worker.js" ); // OK var worker = new Worker( "http://utf-8.jp/w.js" ); // NG メイン側 importScripts( "http://utf-8.jp/w.js" ); // OK worker.js

E4X + Web Workers = データ漏えい FirefoxでのE4Xによるデータ漏えい対策 script srcとして読み込まれたJSが単一のXMLオブジェクトのときはエラーとしてJSを実行しない …というのが、Web Workers のimportScripts では効いていなかった E4XとWeb Workersを組み合わせると外部サイトのHTML内のデータを盗み見ることが可能だった <div>{ foo( <span>秘密のメッセージ</span> ) } </div> // JavaScriptとして動作しない var s = <div>{ foo( <span>秘密のメッセージ</span> ) } </div>; // JavaScriptとして動作する

E4X + Web Workers = データ漏えい FirefoxでのE4Xによるデータ漏えい対策 E4XとWeb Workersを組み合わせると外部サイトのHTML内のデータを盗み見ることが可能だった // 罠サイト: WebWorkersからJSとしてHTMLを読む var worker = new Worker( “http://.../target.html" ); // JavaScriptとして動作する <div>{ foo( <span>秘密のメッセージ</span> ) } </div>

E4X + Web Workers = データ漏えい 単一XMLオブジェクトが読み込めない 仕様通りの実装だと脆弱性を生む いったんは収まったがWeb Workersの実装に伴い再度オープン 枯れていない新しい機能は狙い目 MFSA-2010-42で修正済み

E4X + Web Workers = データ漏えい ちなみに Mozilla Security Bug Bounty Programの対象なので賞金もらいました :-)

$500の小切手!! (今なら$3000なのに)

まとめ

まとめ めんどくさくない方法でバグハント! 脆弱性を創りだす 報奨金は報告のタイミング次第 個別の脆弱性を丹念に探すのではなく 新しい攻撃手法を創りだし それに合致するソフトウェアの実装を探す 報奨金は報告のタイミング次第 うまくやればバグハンティングで暮らせる時代!

質問 hasegawa@utf-8.jp hasegawa@netagent.co.jp @hasegawayosuke http://utf-8.jp/