Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Browser andsecurity2015

6,948 views

Published on

2015/1/31 開催「MVP Community Camp 2015」での MVP セッション「ブラウザーとセキュリティー - 安全な Web のために」の発表スライドです。

Published in: Technology
  • Be the first to comment

Browser andsecurity2015

  1. 1. ブラウザーとセキュリ ティー - 安全な Web のために Murachi Akira aka hebikuzure This material provided by CC BY-NC-ND 4.0. See http://creativecommons.org/licenses/by-nc-nd/4.0/
  2. 2. About me 村地 彰 aka hebikuzure http://www.murachi.net/ http://www.hebikuzure.com/ https://hebikuzure.wordpress.com/ MicrosoftMVP(InternetExplorer)Apr.2011~ 2015/1/31 2© 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015
  3. 3. Agenda 今日の Web を取り巻く脅威の傾向 脅威とその対策 (技術的側面から) ◦ 悪意のあるコードを実行させない ◦ 悪意のあるコードが実行されても影響を限定 化する ◦ それぞれどのような技術があるのか Call to action 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 3
  4. 4. はじめに 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 4
  5. 5. インターネットの利用者の 増加 0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 0 2,000 4,000 6,000 8,000 10,000 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 利用者数 人口普及率 日本国内の利用者、情報通信白書平成26年度版より作成 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 5
  6. 6. マルウェアの増加 (出典)McAfee社脅威レポート(2012年第4四半期) 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 6
  7. 7. 脅威の変化と多様化 情報処理推進機構「2014年版 情報セキュリティ10大脅威」より引用 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 7
  8. 8. インターネットの入り口は 多様 ブラウザー (PC / モバイル) e-mail (PC / モバイル) アプリ (PC / モバイル) RTC (ex. LINE, Skype, WhatsApp, … ) Device (Camera,MusicPlayer,GamePlayer,…) IoT (Everything connect to Internet, wow!) 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 8
  9. 9. ということは… Attack surface は ブラウザーだけ ではない 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 9
  10. 10. ということは… 安全な Web ≠ 安全なブラウザー 安全なインターネット ≠ 安全なブラウザー 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 10
  11. 11. その上で ブラウザーによる インター ネット (Web サイト、Web ア プリケーション) の利用を想 定したセッション内容です 考えなければならないことは まだまだ他にもあります 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 11
  12. 12. 本題 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 12
  13. 13. Web 上の脅威 サーバーに 被害 クライアントに 被害 サーバーに 原因 SQL インジェクション XSS, CSRF クライアントに 原因 Bot 感染による DDoS マルウェア感染 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 13 被害 原因
  14. 14. 二つの対策 悪意のあるコードを 実行させない 悪意のあるコードが実行 されても影響を限定化する 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 14
  15. 15. 「実行させない」対策 脆弱性の排除 DEP ASLR XSS フィルター X-Frame-Options ヘッダー SmartScreen フィルター 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 15
  16. 16. 「影響を限定化する」対策 UAC (User Account Control) 管理者としてログオンしない ACL (Access Control List) 整合性レベル 実行環境の仮想化 Firewall / Proxy / Gateway Security 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 16
  17. 17. 「実行させない」対策 脆弱性の排除 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 17
  18. 18. 脆弱性の排除 : 実行環境 実行環境 (= オペレーティング システム、 ミドルウェア、ブラウザー、アドオン) のセキュア コーディング 主な対策事項 ◦ バッファ オーバーフロー ◦ 整数オーバーフロー ◦ フォーマット文字列の脆弱性 ◦ 動的メモリ管理の脆弱性 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 18
  19. 19. 脆弱性の排除 : 実行環境 参考情報 IPA「セキュア プログラミング講座」 ◦ https://www.ipa.go.jp/security/awareness/vendor/ programmingv2/ JPCERT CC「セキュアコーディング」 ◦ https://www.jpcert.or.jp/securecoding/ Hacking:美しき策謀 第2版 ◦ http://www.oreilly.co.jp/books/9784873115146/ 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 19
  20. 20. 脆弱性の排除 : 実行環境 製品で対処されていても、実際の実行環 境に適用されていなければ意味がない セキュリティ更新プログラムの適用 セキュリティ対策済みバージョンへの アップグレード 更新できない場合は代替の回避策を適用 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 20
  21. 21. 脆弱性の排除 : Web サイト Web ページ / Web アプリケーションのセ キュア コーディング 主な対策事項 ◦ XSS ◦ CSRF ◦ SQL インジェクション ◦ コマンド インジェクション ◦ ディレクトリ トラバーサル 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 21
  22. 22. XSS (Cross Site Scripting) クライアントからの入力を元にページを 生成する際、不正な入力によりページ内 に攻撃者の意図する実行可能コンテンツ (一般的に JavaScript) が挿入さてしまう 攻撃者が挿入したスクリプトが元の Web サイトのセキュリティ コンテキスト で実行される 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 22
  23. 23. XSS の例 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 23 攻撃ページ ① リンクを踏まるなどして 攻撃ページを開かせる 被害者のブラウザー XSS 脆弱性のあるサーバー ② レスポンス ④ 攻撃スクリプトを含むレスポンス ③ 不正入力を含むリクエスト 攻撃ページをホストするサーバー Fire!!
  24. 24. XSS の種別 反射型 XSS 蓄積型 XSS Dom Based XSS Mutation-based XSS (mXSS) 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 24
  25. 25. わかりやすい XSS <?php session_start(); !empty($name = $_GET['name']); ?> <html> <body> <h1>XSS</h1> <p>名前:<?php echo $name; ?><p/> </body> </html> 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 25
  26. 26. DOM Based XSS <html> <h1>DOM Based XSS</h1> Hi <script> varpos=document.URL.indexOf("name=")+5; vars=document.URL.substring(pos,document.URL.length) document.write(s); </script> <br> </html> 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 26
  27. 27. XSS の対策 基本 ◦ ページに出力する文字内の <, >, ", & をエス ケープする ◦ タグの属性は " で括る ◦ ex. <input type="hidden" name="foo" value="&lt;script&gt;"> 応用 ◦ 参考文献を参照 w 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 27
  28. 28. CSRF (Cross-site Request Forgery) クライアントからの入力を受け付ける ページで、本来受け付ける意図のない外 部ページからの入力を受け取ってしまう 攻撃ページを用意して被害者ユーザーに アクセスさせると、ユーザーが意図しな いページへの投稿、データ入力を強制さ れる 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 28
  29. 29. CRSF の例 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 29 攻撃ページ 攻撃ページをホストするサーバー 被害者のブラウザー CSRF 脆弱性のあるサーバー 信頼関係 (ログオン) ② レスポンス ③ 不正な投稿の リクエスト ① リンクを踏ませるなどして 攻撃ページを開かせる ユーザー意図に 反した操作
  30. 30. CRSF の対策 referer は偽装されたり参照できなかった りするので使えないと考えた方がよい トークン認証 ◦ 本来の送信ページにトークンを埋め込み、 トークンを含まないリクエストは拒否する パスワード再入力 ◦ 重要な操作のリクエストにはパスワードの再 入力を求める 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 30
  31. 31. SQL インジェクション 外部からの入力を元にデータベースに SQL コマンドを発行する際、意図しない SQL コマンドを挿入されてしまう データベースの改竄 / 破壊や、データ ベース内の秘密情報の漏洩が発生する 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 31
  32. 32. SQL インジェクションの 例 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 32 ① 細工したクエリを 含むリクエスト ② 意図しない SQL コマンド ③ 秘密情報を返却④ 秘密情報を含む ページをレスポンス 攻撃者 Web アプリケーション データベース 不適切な SQL コマンド生成
  33. 33. コード例 SELECT * FROM USERMASTER WHERE USERID = '{$userId}' AND PASSWORD = '{$passwd}' ◦ $userId : akira ◦ $passwd : ' OR 'A' = 'A SELECT * FROM USERMASTER WHERE USERID = 'akira' AND PASSWORD = '' OR 'A' = 'A' 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 33
  34. 34. SQL インジェクションの 対策 プレース ホルダーを利用する (推奨) 発行前に SQL 文を検証する 入力されたクエリの文字列を適切にエス ケープする 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 34
  35. 35. 脆弱性の排除 Web サイト 参考資料 IPA「セキュア プログラミング講座」 ◦ https://www.ipa.go.jp/security/awareness/vendor/ programmingv2/ IPA「安全なウェブサイトの作り方」 ◦ https://www.ipa.go.jp/security/vuln/websecurity.html 「体系的に学ぶ安全なWebアプリケーションの作り方」 ◦ http://www.sbcr.jp/products/4797361193.html 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 35
  36. 36. 体系的に学ぶ 安全な Webアプリケーションの作 り方 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 36 著者: 徳丸浩 発売日: 2011年3月1日 ISBN: 978-4-7973-6119-3 出版社: ソフトバンククリエイティブ 価格: ¥3,360(税込み) https://www.hash-c.co.jp/wasbook/ お勧め
  37. 37. 「実行させない」対策 クライアント側の対策 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 37
  38. 38. DEP (Data Execute Prevention) メモリ領域をプログラム(実行可能) 領域 とデータ (実行不可) 領域に分離し、デー タ領域からのコード実行を防ぐ機能 バッファ オーバーフローなどで不正な 実行エントリ (メモリ番地) が指示されて も、そこがデータ領域であればコードは 実行されない (Windows XP SP2 以降の機能) 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 38
  39. 39. ASLR (Address Space Layout Randomization) プログラム モジュールがロード (読み込 み) されるメモリ領域を、起動の度にラ ンダム化する機能 バッファ オーバーフローなどで実行エ ントリ (メモリ番地) を書き換えて、特定 のプログラム モジュールの機能を呼び出 すことを困難にする (Windows Vista 以降の機能) 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 39
  40. 40. ASLR のイメージ 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 40 最初の起動 2回目の起動 最初と2回目 で、モジュー ルがロードさ れているアド レスが異なる https://technet.microsoft.com/ja-jp/library/dd362922.aspx より引用
  41. 41. XSS フィルター GET / POST されるデータと、レスポンス中 のコンテンツを比較し、XSS のパターンに マッチする場合、XSS となる部分を修正し てレンダリングする機能 ◦ http://blogs.technet.com/b/srd/archive/2008/08/18/ ie-8-xss-filter-architecture-implementation.aspx ◦ http://blogs.msdn.com/b/ieinternals/archive/2011/0 1/31/controlling-the-internet-explorer-xss-filter- with-the-x-xss-protection-http-header.aspx (Internet Explorer 8 以降の機能) 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 41
  42. 42. X-Frame-Options ヘッダー Clickjacking を防止するため、ページのフ レーム内での表示を禁止する HTTP ヘッ ダー ◦ https://msdn.microsoft.com/ja-jp/library/cc288472.aspx ◦ https://developer.mozilla.org/ja/docs/HTTP/X-Frame-Options (Internet Explorer 8 以降の機能、他のブラウ ザーでも実装済み) 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 42
  43. 43. Clickjacking 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 43 ユーザーに意図に反した 操作をさせたいページを 透明化したフレーム内に 読み込んで、操作を誘導 する別のページと重ね合 わせる。 ユーザーは見えている誘 導ページをクリックした つもりでも、実際には透 明なフレーム内のページ をクリックしている。
  44. 44. SmartScreen フィルター Web からダウンロードされるファイルが 安全かどうか評価し、危険な可能性があ る場合、ダウンロード前に警告 / ブロッ クする機能 (Internet Explorer 8 以降の機能) ◦ IE8 は URL でのみ評価 ◦ IE9 以降は URL とプログラムの両方で評価 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 44
  45. 45. SmartScreen の効果 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 45
  46. 46. 「影響を限定化する」対策 主にクライアントでの対策 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 46
  47. 47. 限定化の考え方 多層防御 (Defense in Depth) 複数の手法により防御の「層」を重ね て、一つの層が突破されても他の層で影 響の拡大を防ぐ手法 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 47
  48. 48. UAC (User Account Control) 管理者 (Administrators) としてログオンし ても、通常の操作は標準ユーザー (Users) と同じ権限で実行される 管理者としての権限が必要な場合は、昇格 のプロンプトで許可を与える必要がある システム設定の変更など重要な操作がサイ レントに行われることがない (WindowsVista以降の機能) 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 48
  49. 49. 管理者としてログオンしな い UAC は管理者としての操作のすべての場 面で昇格を求める訳ではない 標準ユーザーとしてログオンし、管理者 権限が必要な場合のみ昇格する方がより 安全になる 標準ユーザーが昇格するには管理者ユー ザーのパスワードが必要 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 49
  50. 50. ACL (Access Control List) セキュリティ オブジェクト (ファイル、 レジストリ キーなど) に対する操作の権 限を、ユーザー / ユーザー グループごと に制御する機能 いわゆる「アクセス権」の機能 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 50
  51. 51. 整合性レベル セキュリティ オブジェクト (ファイル、レジ ストリ キーなど) に対する操作の権限を、プロ セス (実行されているプログラム) に対して制 限する機能 (WindowsVista以降の機能) 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 51 整合性 アクセスレベル つシステム特権 高 管理者特権 (プロセスはファイルを Program Files フォルダにインストールし、 HKEY_LOCAL_MACHINE などの重要なレジストリ領域に書き込みを実行できます) 中 ユーザー特権 (プロセスはユーザーのドキュメント フォルダ内でファイルを作成およ び変更することができ、HKEY_CURRENT_USER などのユーザー専用のレジストリ領域 に書き込みを実行できます) 低 信頼性の低い権限 (プロセスは Temporary Internet FilesLow や HKEY_CURRENT_USERSoftwareLowRegistry キーなどの整合性が低いロケーションにし か書き込みを実行できません)
  52. 52. 実行環境の仮想化 安全性が確認できない Web アプリケー ションの利用、ファイルのダウンロード と実行を、仮想化環境で行う Hyper-V、Windows Virtual PC 、他サード パーティ製品など 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 52
  53. 53. Firewall / Proxy / Gateway Security 特定のクライアント / サーバーにセキュ リティ上の問題が生じても、ネットワー クを経由して他のクライアント / サー バーに影響を与えることを防ぐ 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 53
  54. 54. まとめ 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 54
  55. 55. 脅威の分析 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 55 サーバーに 被害 クライアントに 被害 サーバーに 原因 SQL インジェクション XSS, CSRF クライアントに 原因 Bot 感染による DDoS マルウェア感染 被害 原因
  56. 56. 二つの対策 悪意のあるコードを 実行させない 悪意のあるコードが実行 されても影響を限定化する 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 56
  57. 57. Call to Action 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 57
  58. 58. Web 開発者の方 セキュア プログラミングの実践 脆弱性診断を受ける 「ユーザーが増えてからセキュアにすれ ばよい」は間違い 脆弱性報告を受け付ける窓口を整備して、 報告に適切に対処する 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 58
  59. 59. ユーザーの方 オペレーティング システム (Windows) とブラウザー (Internet Explorer) はできる 限り最新バージョンを利用する セキュリティ更新プログラムは必ず適用 する 管理者としてログオンしない (標準ユー ザーで利用する) 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 59
  60. 60. Any Question? 2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 60

×