Upload
-
View
3.305
Download
0
Embed Size (px)
Citation preview
ブラウザーとセキュリティー-安全な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/
About me村地 彰 aka hebikuzure
http://www.murachi.net/
http://www.hebikuzure.com/
https://hebikuzure.wordpress.com/
Microsoft MVP (Internet Explorer) Apr. 2011 ~
2015/1/31 2© 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015
Agenda今日のWeb を取り巻く脅威の傾向
脅威とその対策 (技術的側面から)◦悪意のあるコードを実行させない
◦悪意のあるコードが実行されても影響を限定化する
◦それぞれどのような技術があるのか
Call to action
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 3
インターネットの利用者の増加
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
マルウェアの増加
(出典)McAfee社脅威レポート(2012年第4四半期)
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 6
脅威の変化と多様化
情報処理推進機構「2014年版情報セキュリティ10大脅威」より引用
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 7
インターネットの入り口は多様ブラウザー (PC / モバイル)
e-mail (PC / モバイル)
アプリ (PC / モバイル)
RTC (ex. LINE, Skype, WhatsApp, … )
Device (Camera, Music Player, Game Player, … )
IoT (Everything connect to Internet, wow!)
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 8
ということは…
Attack surface はブラウザーだけではない
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 9
ということは…
安全なWeb≠安全なブラウザー
安全なインターネット≠安全なブラウザー
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 10
その上で
ブラウザーによるインターネット (Web サイト、Web アプリケーション) の利用を想定したセッション内容です
考えなければならないことはまだまだ他にもあります
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 11
Web上の脅威
サーバーに被害
クライアントに被害
サーバーに原因
SQL インジェクション
XSS, CSRF
クライアントに原因
Bot 感染によるDDoS
マルウェア感染
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 13
被害
原因
二つの対策
悪意のあるコードを実行させない
悪意のあるコードが実行されても影響を限定化する
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 14
「実行させない」対策脆弱性の排除
DEP
ASLR
XSS フィルター
X-Frame-Options ヘッダー
SmartScreenフィルター
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 15
「影響を限定化する」対策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
脆弱性の排除 : 実行環境実行環境 (= オペレーティングシステム、ミドルウェア、ブラウザー、アドオン) のセキュアコーディング
主な対策事項◦バッファオーバーフロー
◦整数オーバーフロー
◦フォーマット文字列の脆弱性
◦動的メモリ管理の脆弱性
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 18
脆弱性の排除 : 実行環境参考情報
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
脆弱性の排除 : 実行環境製品で対処されていても、実際の実行環境に適用されていなければ意味がない
セキュリティ更新プログラムの適用
セキュリティ対策済みバージョンへのアップグレード
更新できない場合は代替の回避策を適用
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 20
脆弱性の排除 : Web サイトWeb ページ / Web アプリケーションのセキュアコーディング
主な対策事項◦ XSS
◦ CSRF
◦ SQL インジェクション
◦コマンドインジェクション
◦ディレクトリトラバーサル
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 21
XSS (Cross Site Scripting)クライアントからの入力を元にページを生成する際、不正な入力によりページ内に攻撃者の意図する実行可能コンテンツ(一般的に JavaScript) が挿入さてしまう
攻撃者が挿入したスクリプトが元のWeb サイトのセキュリティコンテキストで実行される
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 22
XSSの例
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 23
攻撃ページ
①リンクを踏まるなどして攻撃ページを開かせる
被害者のブラウザー
XSS 脆弱性のあるサーバー
②レスポンス
④攻撃スクリプトを含むレスポンス
③不正入力を含むリクエスト
攻撃ページをホストするサーバー
Fire!!
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
わかりやすい 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
DOM Based XSS<html><h1>DOM Based XSS</h1>Hi<script>var pos=document.URL.indexOf("name=")+5;var s=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
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
CSRF (Cross-site Request Forgery)
クライアントからの入力を受け付けるページで、本来受け付ける意図のない外部ページからの入力を受け取ってしまう
攻撃ページを用意して被害者ユーザーにアクセスさせると、ユーザーが意図しないページへの投稿、データ入力を強制される
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 28
CRSFの例
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 29
攻撃ページ
攻撃ページをホストするサーバー
被害者のブラウザー
CSRF 脆弱性のあるサーバー
信頼関係 (ログオン)
②レスポンス
③不正な投稿のリクエスト
①リンクを踏ませるなどして攻撃ページを開かせる
ユーザー意図に反した操作
CRSF の対策referer は偽装されたり参照できなかったりするので使えないと考えた方がよい
トークン認証◦本来の送信ページにトークンを埋め込み、トークンを含まないリクエストは拒否する
パスワード再入力◦重要な操作のリクエストにはパスワードの再入力を求める
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 30
SQL インジェクション外部からの入力を元にデータベースに
SQL コマンドを発行する際、意図しないSQL コマンドを挿入されてしまう
データベースの改竄 /破壊や、データベース内の秘密情報の漏洩が発生する
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 31
SQL インジェクションの例
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 32
①細工したクエリを含むリクエスト
②意図しない SQL コマンド
③秘密情報を返却④秘密情報を含むページをレスポンス
攻撃者 Web アプリケーション データベース
不適切な SQLコマンド生成
コード例SELECT * FROM USERMASTER
WHERE USERID = '{$userId}' ANDPASSWORD = '{$passwd}'◦ $userId : akira◦ $passwd : ' OR 'A' = 'A
SELECT * FROM USERMASTERWHERE USERID = 'akira' ANDPASSWORD = '' OR 'A' = 'A'
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 33
SQL インジェクションの対策プレースホルダーを利用する (推奨)
発行前に SQL 文を検証する
入力されたクエリの文字列を適切にエスケープする
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 34
脆弱性の排除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
体系的に学ぶ安全な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/
お勧め
DEP (Data Execute Prevention)
メモリ領域をプログラム(実行可能) 領域とデータ (実行不可) 領域に分離し、データ領域からのコード実行を防ぐ機能
バッファオーバーフローなどで不正な実行エントリ (メモリ番地) が指示されても、そこがデータ領域であればコードは実行されない
(Windows XP SP2 以降の機能)
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 38
ASLR (Address Space Layout Randomization)
プログラムモジュールがロード (読み込み) されるメモリ領域を、起動の度にランダム化する機能
バッファオーバーフローなどで実行エントリ (メモリ番地)を書き換えて、特定のプログラムモジュールの機能を呼び出すことを困難にする
(Windows Vista 以降の機能)
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 39
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 より引用
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
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
Clickjacking
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 43
ユーザーに意図に反した操作をさせたいページを透明化したフレーム内に読み込んで、操作を誘導する別のページと重ね合わせる。
ユーザーは見えている誘導ページをクリックしたつもりでも、実際には透明なフレーム内のページをクリックしている。
SmartScreenフィルターWeb からダウンロードされるファイルが安全かどうか評価し、危険な可能性がある場合、ダウンロード前に警告 / ブロックする機能
(Internet Explorer 8 以降の機能)◦ IE8 は URL でのみ評価
◦ IE9 以降は URL とプログラムの両方で評価
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 44
限定化の考え方多層防御 (Defense in Depth)
複数の手法により防御の「層」を重ねて、一つの層が突破されても他の層で影響の拡大を防ぐ手法
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 47
UAC (User Account Control)
管理者 (Administrators) としてログオンしても、通常の操作は標準ユーザー (Users) と同じ権限で実行される
管理者としての権限が必要な場合は、昇格のプロンプトで許可を与える必要がある
システム設定の変更など重要な操作がサイレントに行われることがない
(Windows Vista 以降の機能)
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 48
管理者としてログオンしないUAC は管理者としての操作のすべての場面で昇格を求める訳ではない
標準ユーザーとしてログオンし、管理者権限が必要な場合のみ昇格する方がより安全になる
標準ユーザーが昇格するには管理者ユーザーのパスワードが必要
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 49
ACL (Access Control List)セキュリティオブジェクト (ファイル、レジストリキーなど) に対する操作の権限を、ユーザー / ユーザーグループごとに制御する機能
いわゆる「アクセス権」の機能
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 50
整合性レベルセキュリティオブジェクト (ファイル、レジストリキーなど) に対する操作の権限を、プロセス (実行されているプログラム)に対して制限する機能 (Windows Vista 以降の機能)
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 Files\Low やHKEY_CURRENT_USER\Software\LowRegistryキーなどの整合性が低いロケーションにしか書き込みを実行できません)
実行環境の仮想化安全性が確認できないWeb アプリケーションの利用、ファイルのダウンロードと実行を、仮想化環境で行う
Hyper-V、Windows Virtual PC、他サードパーティ製品など
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 52
Firewall / Proxy / Gateway Security
特定のクライアント / サーバーにセキュリティ上の問題が生じても、ネットワークを経由して他のクライアント / サーバーに影響を与えることを防ぐ
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 53
脅威の分析
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 55
サーバーに被害
クライアントに被害
サーバーに原因
SQL インジェクション
XSS, CSRF
クライアントに原因
Bot 感染によるDDoS
マルウェア感染
被害
原因
二つの対策
悪意のあるコードを実行させない
悪意のあるコードが実行されても影響を限定化する
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 56
Web開発者の方セキュアプログラミングの実践
脆弱性診断を受ける
「ユーザーが増えてからセキュアにすればよい」は間違い
脆弱性報告を受け付ける窓口を整備して、報告に適切に対処する
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 58
ユーザーの方オペレーティングシステム (Windows) とブラウザー (Internet Explorer) はできる限り最新バージョンを利用する
セキュリティ更新プログラムは必ず適用する
管理者としてログオンしない (標準ユーザーで利用する)
2015/1/31 © 2015 Murachi Akira - CC BY-NC-ND - MVP Community Camp 2015 59