Más contenido relacionado La actualidad más candente (16) Similar a Browser andsecurity2015 (20) Browser andsecurity20151. ブラウザーとセキュリ
ティー
- 安全な 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. 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. Agenda
今日の Web を取り巻く脅威の傾向
脅威とその対策 (技術的側面から)
◦ 悪意のあるコードを実行させない
◦ 悪意のあるコードが実行されても影響を限定
化する
◦ それぞれどのような技術があるのか
Call to action
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 3
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
11. その上で
ブラウザーによる インター
ネット (Web サイト、Web ア
プリケーション) の利用を想
定したセッション内容です
考えなければならないことは
まだまだ他にもあります
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 11
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
18. 脆弱性の排除 : 実行環境
実行環境 (= オペレーティング システム、
ミドルウェア、ブラウザー、アドオン)
のセキュア コーディング
主な対策事項
◦ バッファ オーバーフロー
◦ 整数オーバーフロー
◦ フォーマット文字列の脆弱性
◦ 動的メモリ管理の脆弱性
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 18
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
21. 脆弱性の排除 : Web サイト
Web ページ / Web アプリケーションのセ
キュア コーディング
主な対策事項
◦ XSS
◦ CSRF
◦ SQL インジェクション
◦ コマンド インジェクション
◦ ディレクトリ トラバーサル
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 21
22. XSS (Cross Site Scripting)
クライアントからの入力を元にページを
生成する際、不正な入力によりページ内
に攻撃者の意図する実行可能コンテンツ
(一般的に JavaScript) が挿入さてしまう
攻撃者が挿入したスクリプトが元の
Web サイトのセキュリティ コンテキスト
で実行される
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 22
23. XSS の例
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 23
攻撃ページ
① リンクを踏まるなどして
攻撃ページを開かせる
被害者のブラウザー
XSS 脆弱性のあるサーバー
② レスポンス
④ 攻撃スクリプトを含むレスポンス
③ 不正入力を含むリクエスト
攻撃ページをホストするサーバー
Fire!!
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
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. XSS の対策
基本
◦ ページに出力する文字内の <, >, ", & をエス
ケープする
◦ タグの属性は " で括る
◦ ex. <input type="hidden" name="foo"
value="<script>">
応用
◦ 参考文献を参照 w
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 27
28. CSRF (Cross-site Request Forgery)
クライアントからの入力を受け付ける
ページで、本来受け付ける意図のない外
部ページからの入力を受け取ってしまう
攻撃ページを用意して被害者ユーザーに
アクセスさせると、ユーザーが意図しな
いページへの投稿、データ入力を強制さ
れる
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 28
29. CRSF の例
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 29
攻撃ページ
攻撃ページをホストするサーバー
被害者のブラウザー
CSRF 脆弱性のあるサーバー
信頼関係 (ログオン)
② レスポンス
③ 不正な投稿の
リクエスト
① リンクを踏ませるなどして
攻撃ページを開かせる
ユーザー意図に
反した操作
32. SQL インジェクションの
例
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 32
① 細工したクエリを
含むリクエスト
② 意図しない SQL コマンド
③ 秘密情報を返却④ 秘密情報を含む
ページをレスポンス
攻撃者 Web アプリケーション データベース
不適切な SQL
コマンド生成
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. SQL インジェクションの
対策
プレース ホルダーを利用する (推奨)
発行前に SQL 文を検証する
入力されたクエリの文字列を適切にエス
ケープする
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 34
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. 体系的に学ぶ 安全な
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/
お勧め
38. DEP (Data Execute Prevention)
メモリ領域をプログラム(実行可能) 領域
とデータ (実行不可) 領域に分離し、デー
タ領域からのコード実行を防ぐ機能
バッファ オーバーフローなどで不正な
実行エントリ (メモリ番地) が指示されて
も、そこがデータ領域であればコードは
実行されない
(Windows XP SP2 以降の機能)
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 38
39. ASLR (Address Space Layout Randomization)
プログラム モジュールがロード (読み込
み) されるメモリ領域を、起動の度にラ
ンダム化する機能
バッファ オーバーフローなどで実行エ
ントリ (メモリ番地) を書き換えて、特定
のプログラム モジュールの機能を呼び出
すことを困難にする
(Windows Vista 以降の機能)
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 39
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. 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. 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. Clickjacking
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 43
ユーザーに意図に反した
操作をさせたいページを
透明化したフレーム内に
読み込んで、操作を誘導
する別のページと重ね合
わせる。
ユーザーは見えている誘
導ページをクリックした
つもりでも、実際には透
明なフレーム内のページ
をクリックしている。
47. 限定化の考え方
多層防御 (Defense in Depth)
複数の手法により防御の「層」を重ね
て、一つの層が突破されても他の層で影
響の拡大を防ぐ手法
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 47
48. UAC (User Account Control)
管理者 (Administrators) としてログオンし
ても、通常の操作は標準ユーザー (Users)
と同じ権限で実行される
管理者としての権限が必要な場合は、昇格
のプロンプトで許可を与える必要がある
システム設定の変更など重要な操作がサイ
レントに行われることがない
(WindowsVista以降の機能)
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 48
50. ACL (Access Control List)
セキュリティ オブジェクト (ファイル、
レジストリ キーなど) に対する操作の権
限を、ユーザー / ユーザー グループごと
に制御する機能
いわゆる「アクセス権」の機能
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 50
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 キーなどの整合性が低いロケーションにし
か書き込みを実行できません)
53. Firewall / Proxy / Gateway Security
特定のクライアント / サーバーにセキュ
リティ上の問題が生じても、ネットワー
クを経由して他のクライアント / サー
バーに影響を与えることを防ぐ
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 53
55. 脅威の分析
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 55
サーバーに
被害
クライアントに
被害
サーバーに
原因
SQL
インジェクション
XSS, CSRF
クライアントに
原因
Bot 感染による
DDoS
マルウェア感染
被害
原因
59. ユーザーの方
オペレーティング システム (Windows)
とブラウザー (Internet Explorer) はできる
限り最新バージョンを利用する
セキュリティ更新プログラムは必ず適用
する
管理者としてログオンしない (標準ユー
ザーで利用する)
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 59
Notas del editor バッファ オーバーフロー ⇒ スタック オーバーフロー、ヒープ オーバーフロー バッファ オーバーフロー ⇒ スタック オーバーフロー、ヒープ オーバーフロー 最近の流行 DOM Based XSS : DOM 操作によりスクリプトが挿入される/ mXSS :例えば innerHTML などを経由してすでに構築されているDOMツリーを参照したときに、本来のDOM構造とは異なる結果を得てしまい、そのためにHTML構造の破壊を引き起こすという類のDOM based XSSの亜種 この例だと ' (シングルクォート) をユーザー入力内からエスケープすれば回避できるが、それだけでは済まない場合が一般的