Firefox Security Features

52
Security Features Slides @ Mozilla Workshop @ Tokyo 6th by Tomoya ASAI (dynamis) last update on 2011.10.01 see also: http://dynamis.jp/r

description

Mozilla 勉強会@東京 6th 後半のセキュリティ機能紹介スライド

Transcript of Firefox Security Features

Page 1: Firefox Security Features

Security FeaturesSlides @ Mozilla Workshop @ Tokyo 6th

by Tomoya ASAI (dynamis)

last update on 2011.10.01see also: http://dynamis.jp/r

Page 2: Firefox Security Features

セキュリティ関連機能をまとめて紹介します

意外と知られていないが超重要!

Page 3: Firefox Security Features

about:me Tomoya ASAI (dynamis) Mozilla Japan - Technical mktg. http://dynamis.jp/ http://facebook.com/dynamis http://twitter.com/dynamitter dynamis mozilla-japan.org@

dynamis (古代ギリシャ語 dunamis) は「でゅなみす」と読みます

Page 4: Firefox Security Features

about:Mozilla Content Security Policy Security Privacy latest topic

Agenda

Page 5: Firefox Security Features

このスライドの見方 こんなスライドが基本スタイル 可読性のため下線なしリンクも コードは要点だけ残した簡略版

-moz- 以外の接頭辞など割愛

右下には補足や一次情報源 URL

何かあれば遠慮無く Facebook や Twitter でコンタクトしてください

画像からも時々リンクしてます

Page 6: Firefox Security Features

はじめに。

Page 8: Firefox Security Features

…ということです。

発行/オライリー・ジャパン 発売/オーム社 定価(本体3,400円+税) オライリー・ジャパンFirefox Hacks Rebooted

ISBN978-4-87311-497-2

Mozilla Japan

推薦書!

Mozilla Japan代表理事 瀧田佐登子

ウェブを使い倒すテクニック満載! ●新しいユーザーインタフェース ●タブグループ ●アプリタブ●Firefox Syncを使ってブラウザ情報の同期を取ろう ●テキスト領域のリサイズ ●Personasで実現する着せ替えブラウザ ●ユーザープロファイルの基本 ●Vimperator ●KeySnail ●VimperatorとKeySnailの設計の違いからくる設計手法 ●Firefox Home ●FirefoxとTwitter ●Facebook関連 ●Add-on SDKとは何か ●Add-on SDKのセットアップ ●拡張機能の開発(基礎編) ●addon-kitライブラリ●api-utilsライブラリ ●拡張機能の開発(応用編) ●拡張機能のローカライズ ●拡張機能の自動テスト●再起動不要な拡張機能「Bootstrapped Extensions」の作り方 ●Bootstrapped Extensionsの制限●

外部スクリプトをBootstrapped Extensionsで読み込む ●FirefoxのUIをBootstrapped Exten-sionsで変更する ●Bootstrapped Extensionsの設定UI ●Bootstrapped ExtensionsでのResource URLの登録 ●Bootstrapped Extensionsと非同期な初期化処理や終了処理 ●XPCOMコンポーネントをBootstrapped Extensionsに組み込む ●Bootstrapped Extensionsでのchrome.manifestの利用 ●Bootstrapped ExtensionsのFirefox 3.6対応 ●e10sにおけるプロセス間通信の基本 ●メッセージマネージャのAPI詳説 ●コンテントスクリプト用のAPI詳説 ●Chromeスクリプトからコンテントスクリプトへ同期的にメッセージを送る ●Bootstrapped Extensionsでコンテントスクリプトを使う ●非同期処理のすすめ ●MozStorageの非同期API ●アドオンマネージャの非同期API●ワーカーによるマルチスレッド処理 ●JSDeferredで非同期処理をスッキリ書く ●Firefoxの非同期処理をDeferred化する ●HTML5再入門 ●ECMAScript5 ●ECMAScript for XML ●E4X 応用●CSS3時代のデザイン ●Webフォント徹底活用 ●テキスト領域のリサイズ ●Canvas入門 ●SVGとSMILによるアニメーション ●新しいアニメーション技術比較 ●コンテンツセキュリティポリシー ●イマドキのセキュリティ機能を活用する ●AndroidでもFirefox ●デバイスセンサーを活用する ●プラグインプロセスの分離 ●js-ctypesとXPConnectの違いを理解する ●js-ctypesの基本的な使い方 ●js-ctypesで自力でメモリを管理する ●Firefox.Future

最新のWeb技術、新世代Add-on SDKはもちろん、FirefoxとWebの未来がこの一冊に集約!日本のMozillaドリームチームが綴ったこの本がバイブルになることは間違いない!次はあなたがHackにチャレンジする番です。

Page 9: Firefox Security Features
Page 10: Firefox Security Features
Page 11: Firefox Security Features
Page 12: Firefox Security Features

about:mozilla.com brain .org heart

Page 14: Firefox Security Features

about:Firefox Firefox の意義

オープンで適切な実装の提供 Firefox の目的

公共のリソースとしてのインターネットの発展を促進

Page 16: Firefox Security Features

.com brains - 会社組織 営利企業同様の開発スタイル

.org heart - 非営利組織 より良いインターネット環境へ 社員より遙かに多い貢献者

about:Mozilla

マニフェスト: http://www.mozilla.org/about/manifesto.ja.html

Page 18: Firefox Security Features

Mozilla Firefox セキュリティ&プライバシーが

開発における絶対条件 両者を両立している唯一の

モダンブラウザ IE はいずれか択一 Chrome はプライバシー弱い 噂のあのブラウザは…

Page 19: Firefox Security Features

Web のセキュリティポリシーといえば?

Page 20: Firefox Security Features

Same Origin Policy同一生成元ポリシー

JavaScript などから同一ドメインのコンテンツだけ読み込めるよう制限

Page 21: Firefox Security Features

それはもう古い!

Page 22: Firefox Security Features

CSPContent Security Policy

Page 23: Firefox Security Features

Content Security Policy 次世代セキュリティポリシー

XSS などの攻撃を防止 コンテンツ種別で読み込み制御

画像、CSS、JS など従来制限がなかったファイルも制御する

WebKit の開発もほぼできている Chrome では拡張機能にも

https://developer.mozilla.org/ja/Introducing_Content_Security_Policy

Page 24: Firefox Security Features

デフォルトセキュリティポリシー インライン JS/CSS 禁止

JS/CSS は外部ファイルに限る イベントハンドラなども不可

eval() などで文字列評価禁止 Function や setTimeout も同じ

data: URL 使用禁止インライン CSS の使用禁止については未実装

現在のところこれらを許可する方法は仕様草案にはあるが未実装

Page 25: Firefox Security Features

CSS, JavaScript は外部に<!-- インラインCSSは最新仕様では適用されない(未実装) --><style> body { font-size: 200%; } </style><p style="font-size: 200%;">I love lesser panda!</p><!-- インラインJavaScriptは実行されない(実装済み) --><script> alert("inline script"); </script><p onclick="alert('inline script')">Red panda!</p>

<!-- 外部 CSS, JavaScript はデフォルト許可 --><link rel="stylesheet" href="external.css"/><script src="external.js"></script>

https://developer.mozilla.org/en/Security/CSP/Using_Content_Security_Policy

Page 26: Firefox Security Features

文字列は評価されない/* これらを実行するとエラー(それ以降のコードも無視) */eval("alert('☺')");// call to eval("alert('☺')") blocked by CSPnew Function("alert('☺')");// call to Function() blocked by CSPsetTimeout("alert('☺')", 0);setInterval("alert('☺')", 0);// call to setTimeout/setInterval blocked by CSP

<!-- data: URL も無視される --><img id="dataimg" src="data:image/png;base64,AAAB ..."/>

Page 27: Firefox Security Features

CSP の使い方 X-Content-Security-Policy

HTTP レスポンスヘッダを送信 httpd.conf や .htacces など PHP なら header() 関数など

ポリシーファイルの MIME はtext/x-content-security-policy

Page 28: Firefox Security Features

Apache で CPS を設定// httpd.conf, .htaccess の Header ディレクティブを使うHeader always append X-Content-Security-Policy \ "default-src 'self'"// ポリシーファイルを使用する場合 AddType も忘れずにAddType "text/x-content-security-policy" .cspHeader always append X-Content-Security-Policy \ "policy-uri /csp/policy.csp"

以降ではこのように設定するHTTP ヘッダのみを書いて説明

Page 29: Firefox Security Features

CSP ヘッダ送信例// 全コンテンツを同一ドメインのみ (サブドメインも不可)X-Content-Security-Policy: default-src 'self'

// 自身と dynamis.jp のサブドメインのみ許可X-Content-Security-Policy: default-src 'self' *.dynamis.jp

// secure.mozilla.jp からの読み込みは HTTPS のみX-Content-Security-Policy: default-src https://secure.mozilla.jp/

https://developer.mozilla.org/en/Security/CSP/Using_Content_Security_Policy

Page 30: Firefox Security Features

CSP ヘッダ送信例

// 自身と *.mail.jp は全許可、他サイトは画像のみに制限// スクリプトなど指定していないものは default-src と同じX-Content-Security-Policy: defaut-src 'self' *.mail.jp; (実際は改行なし) img-src *

// 画像は任意サイト、メディアファイルと JS は指定サイトに限定X-Content-Security-Policy: default-src 'self'; img-src *; (実際は改行なし) media-src video.tld audio.tld; (実際は改行なし) script-src script.tld;

https://developer.mozilla.org/en/Security/CSP/Using_Content_Security_Policy

Page 31: Firefox Security Features

CSP 対応に移行する JS, CSS は外部ファイルに eval() などは使用しない

ライブラリ内のコードに注意 ポリシー違反レポートを監視 CSP ブックマークレットも使う

Page 32: Firefox Security Features

ポリシー違反レポート

// 違反レポートは送るが実行は実際にブロックしない場合// 既存サイトに必要なポリシーを調べるときに便利X-Content-Security-Policy-Report-Only: report-uri /csp/report

// ブラウザから違反レポートを受け取る URL を指定する// JSON 形式のレポートが届くのでサーバで処理するX-Content-Security-Policy: report-uri /csp/report

https://developer.mozilla.org/en/Security/CSP/Using_Content_Security_Policy

Page 33: Firefox Security Features

CSP ブックマークレット

https://github.com/bsterne/bsterne-tools/tree/master/csp-bookmarklet

Page 34: Firefox Security Features

Securitymore Secure Web...

Page 35: Firefox Security Features

HTTP Strict Transport Security HTTPS での接続を要求

HTTPS 認証ページなどで使う HTTP 接続禁止秒数を指定する

簡単なのですぐにでも採用を 非対応ブラウザへの副作用なし 古い Firefox は拡張機能で...

http://hacks.mozilla.org/2010/08/firefox-4-http-strict-transport-security-force-https/

Page 36: Firefox Security Features

HSTS ヘッダ送信例

http://code.google.com/intl/ja/apis/webfonts/docs/getting_started.html

注: HTTPS ページでのみ有効 HTTP ページで送信しても無効

// 86400 秒はこのサイトに HTTP での接続を禁止Strict-Transport-Security: max-age=86400

// 送信元サイトのサブドメインも HTTP 接続を禁止するStrict-Transport-Security: max-age=86400; includeSubdomains

Page 37: Firefox Security Features

X-Frame-Options <iframe> への埋め込み禁止 埋め込まれたくないページで

X-Frame-Options: ヘッダ出力 値は DENY, SAMEORIGIN

クリックジャッキング対策等に

Fx 3.6.9~ https://developer.mozilla.org/en/The_X-FRAME-OPTIONS_response_header

// Apache の設定でサイト全体に設定する場合:Header always append X-Frame-Options SAMEORIGIN

Page 38: Firefox Security Features

補: クリックジャッキング

http://blog.guya.net/2008/10/07/malicious-camera-spying-using-clickjacking/

Page 39: Firefox Security Features

Cross-Origin Resource Sharing 他ドメインからの読み込み許可

Cross-Site XMLHttpRequest

// dynamis.jp のページからはこのサイトの読み込み許可Access-Control-Allow-Origin: http://dynamis.jp

https://developer.mozilla.org/en/http_access_control

// 任意サイトからの読み込みを許可 (公開 API などに)Access-Control-Allow-Origin: *

Page 40: Firefox Security Features

Security 機能のまとめ HTTP Strict Transport Security

HTTPS に接続を限定 X-Frame-Options

クロスドメインフレーム禁止 Cross-Origin Resource Sharing

クロスサイト読み込みを許可 他にも機能あるけど今日は割愛

Page 41: Firefox Security Features

Privacymore Comfortable Web...

Page 42: Firefox Security Features

ユーザ追跡拒否ヘッダ Do-Not-Track (DNT:1) ヘッダ

ユーザ追跡拒否の意思表示 IE も Safari も対応 Chrome だけ非対応...

受け取ったらユーザ追跡禁止 navigator.doNotTrack も Fx9~

ユーザがオンにしてると "yes"https://developer.mozilla.org/en/The_Do_Not_Track_Field_Guide

Page 43: Firefox Security Features

latest topichow about Amazon Silk?

Page 44: Firefox Security Features

Amazon Silk @ Kindle Fire Amazon の Android タブレット

$199 (日本への発送不可)

独自のブラウザ Amazon Silk EC2 のクラウドと連携

Opera Mini/Turbo, Skyfire etc... EC2 との接続は SPDY 独自版

Page 48: Firefox Security Features

SSL Security!?

http://amazonsilk.wordpress.com/2011/09/28/introducing-amazon-silk/

Page 49: Firefox Security Features

What about handling secure (https) connections?We will establish a secure connection from the cloud to the site owner on your behalf for page requests of sites using SSL (e.g. https://example.com).

え? ブラウザじゃなくてクラウドから?SSL 通信の中身も Amazon に丸見え?プライバシーを確保するための暗号化が...

End to End でない暗号化は本質的にダメ

Amazon Silk の FAQ

Amazon Silk FAQ より: http://t.co/encBio73

Page 51: Firefox Security Features
Page 52: Firefox Security Features

Any Question ?