HTML5 Web アプリケーションのセキュリティ

91
HTML5 Web アアアアアアアアア アアアアアア Murachi Akira CPS Corporation This material provided by CC BY-NC-ND 4.0. See http://creativecommons.org/licenses/by-nc-nd/4.0/

Transcript of HTML5 Web アプリケーションのセキュリティ

Page 1: HTML5 Web アプリケーションのセキュリティ

HTML5 Web アプリケーションのセキュリティMurachi Akira ( CPS Corporation )

This material provided by CC BY-NC-ND 4.0. See http://creativecommons.org/licenses/by-nc-nd/4.0/

Page 2: HTML5 Web アプリケーションのセキュリティ

About me 村地 彰 aka hebikuzure

株式会社シーピーエス 代表取締役 Microsoft MVP (Most Valuable Professional)

2011 年 4 月 ~ 受賞分野 Visual Studio and Development

Technologies(Front End Web Dev)

2 ©Murachi Akira | This material provided by CC BY-NC-ND 2017/2/25

Page 3: HTML5 Web アプリケーションのセキュリティ

宣伝

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 3

トレーニング、講習を承ります プログラミング系 (JavaScript 、 PHP 、 Java 、 VB 、

C#) IT スキル (Office 、ネットワークなど ) 系 情報セキュリティ系 情報処理技術者試験対策 (IT パスポート、初級、中級、

情報セキュリティマネジメント ) 情報セキュリティ マネジメント、個人情報保護の

コンサルティングと技術支援を承ります コミュニティ「ネットワーク パケットを読む会

(仮)」をやってます http://pa.hebikuzure.com/

Page 4: HTML5 Web アプリケーションのセキュリティ

Agenda HTML5 Web アプリケーションのセキュリティ

について理解する守るべきものは何か何が脅威なのか

発生する脆弱性について理解する発生する脆弱性を防ぐ方法を理解する

脅威からどのように守るのかどのように脅威を正しく評価するの

か©Murachi Akira | This material provided by CC BY-NC-ND 4 2017/2/25

Page 5: HTML5 Web アプリケーションのセキュリティ

目次 はじめに セキュリティのおさらい 守るべき「情報資産」・資産に対する「脅威」 脅威への対応 脆弱性を作りこまない インシデントへの対処 まとめ

©Murachi Akira | This material provided by CC BY-NC-ND 5 2017/2/25

Page 6: HTML5 Web アプリケーションのセキュリティ

はじめに

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 6

Page 7: HTML5 Web アプリケーションのセキュリティ

ありがちなシステム開発

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 7

システム開発頼むよ~

要件定義は?

ざっくりこんな感じ~

が、がんばります……

追加であれとこれとそれも~

が、がんばります……

できましたヽ (^o^) 丿

欲しかったシステムじゃない (-_-;)

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

Page 8: HTML5 Web アプリケーションのセキュリティ

ありがちなセキュリティ

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 8

セキュリティ対策頼むよ~

セキュリティ ポリシーは?

ざっくりこんな感じ~

が、がんばります……

追加であれとこれとそれも~

が、がんばります……

できましたヽ (^o^) 丿

欲しかったセキュリティじゃない (-_-;)

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

Page 9: HTML5 Web アプリケーションのセキュリティ

2017/2/259

どうしてこうなった?

開発者・運用者にセキュリティの当事者意識が欠けていた©Murachi Akira | This material provided by CC BY-NC-ND

Page 10: HTML5 Web アプリケーションのセキュリティ

開発者・運用者にとってのセキュリティ

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 10

セキュリティの当事者として守るべき情報資産脆弱性の存在あり得べき攻撃

セキュリティは「怖い」けれど「正しく怖がる」ことが必要 過大評価も過小評価も禁物

を知る

Page 11: HTML5 Web アプリケーションのセキュリティ

セキュリティのおさらい

2017/2/2511 ©Murachi Akira | This material provided by CC BY-NC-ND

Page 12: HTML5 Web アプリケーションのセキュリティ

セキュリティって何?

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 12

一般的な意味としては安全確保・安全保障被害の防止

英語で有価証券を "securities" と言うのは、証券化=出資の分散化により事業(貿易航海など)のリスクを分散化してきた歴史があるため

Page 13: HTML5 Web アプリケーションのセキュリティ

リスク、脅威、脆弱性

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 13

リスク

脆弱性

脅威

リスク:資産に対して損失や障害が生じる事態・状況が発現する可能性

脆弱性:資産に内在する、リスクを実際に発生させる要因

脅威:脆弱性を通じてリスクを発生させる手段や状況

資   産

Page 14: HTML5 Web アプリケーションのセキュリティ

情報セキュリティって何?

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 14

情報資産を対象としたセキュリティ 情報の機密性、完全性、可用性を維持すること

機密性 (confidentiality) :秘密を守る 完全性 (integrity) :改竄、破壊、消失しない 可用性 (availability) :必要な時に利用できる

+ α (拡張された定義) 真正性 (authenticity) 責任追跡性 (accountability) 否認防止 (non-repudiation) 信頼性 (reliability) ※ JIS Q 27002 (ISO/IEC 27002) による定義

C

AI

Page 15: HTML5 Web アプリケーションのセキュリティ

情報セキュリティにおける脅威

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 15

意図的な攻撃製品不具合(バグ)による障害発生人為的失敗(ミス)による障害発生災害(自然災害・人災)による

障害発生

Page 16: HTML5 Web アプリケーションのセキュリティ

インシデント

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 16

脅威によりリスクが具現化した事象侵入 / 改竄の検知 情報漏洩 /流出の検知 DoS の検知ウイルス / マルウエア感染の検知 物理的 /論理的障害の検知

脆弱性の発見 /検知(リスクが具現化する可能性が高いため)

Page 17: HTML5 Web アプリケーションのセキュリティ

Web アプリケーションをとりまく脅威Web アプリケーション / フロント エンドWeb アプリケーション / サーバー サイドアプリケーション フレームワーク

サーバー コンポーネントネットワーク / プロトコル

©Murachi Akira | This material provided by CC BY-NC-ND 17 2017/2/25

Page 18: HTML5 Web アプリケーションのセキュリティ

Web アプリケーションへの攻撃 サーバー上の情報の窃取・漏洩 サーバー上のシステム / データの改竄 利用者データのクライアントからの窃取

( ex. XSS ) なりすまし( ex. CSRF )他所への攻撃の踏み台( ex. オープン リダイレクタ)

DoS ( Denial of Service ) ランサムウェア

©Murachi Akira | This material provided by CC BY-NC-ND 18 2017/2/25

Page 19: HTML5 Web アプリケーションのセキュリティ

どんな脅威があるのか(1)2010 2013

A1 – インジェクション A1 – インジェクション

A2 – クロスサイトスクリプティング (XSS) A2 – 認証とセッション管理の不備

A3 – 認証とセッション管理の不備 A3 – クロスサイトスクリプティング (XSS) A4 – 安全でないオブジェクト直接参照 A4 – 安全でないオブジェクト直接参照

A5 – クロスサイトリクエストフォージェリ (CSRF) A5 – セキュリティ設定のミス

A6 – セキュリティ設定のミス A6 – 機密データの露出 A7 – 安全でない暗号化データ保管 A7 – 機能レベルアクセス制御の欠落 A8 – URL アクセス制限の失敗 A8 – クロスサイトリクエストフォージェリ

(CSRF) A9 – 不十分なトランスポート層保護 A9 – 既知の脆弱性を持つコンポーネントの使用

A10 – 未検証のリダイレクトとフォーワード A10 – 未検証のリダイレクトとフォーワード

OWASP Top 10

https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Projecthttps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf©Murachi Akira | This material provided by CC BY-NC-ND 19 2017/2/25

Page 20: HTML5 Web アプリケーションのセキュリティ

どんな脅威があるのか(2)

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 20

IPA 情報セキュリティ 10 大脅威 2017昨年順位 個人 順位 組織 昨年

順位

1位 インターネットバンキングや クレジットカード情報の不正利用

1位 標的型攻撃による情報流出 1位

2位 ランサムウェアによる被害 2位 ランサムウェアによる被害 7位

3位 スマートフォンやスマートフォンアプリを狙った攻撃

3位 ウェブサービスからの個人情報の窃取 3位

5位 ウェブサービスへの不正ログイン 4位 サービス妨害攻撃によるサービスの停止 4位

4位 ワンクリック請求などの不当請求 5位 内部不正による情報漏えいとそれに伴う 業務停止

2位

7位 ウェブサービスからの個人情報の窃取 6位 ウェブサイトの改ざん 5位

6位 匿名によるネット上の誹謗・中傷 7位 ウェブサービスへの不正ログイン 9位

8位 情報モラル不足に伴う犯罪の低年齢化 8位 IoT 機器の脆弱性の顕在化 ランク外

10位 インターネット上のサービスを悪用した攻撃 9位 攻撃のビジネス化 (アンダーグラウンドサービス)

ランク外

ランク外 IoT 機器の不適切管理 10位 インターネットバンキングや

クレジットカード情報の不正利用 8位

https://www.ipa.go.jp/security/vuln/10threats2017.html

Page 21: HTML5 Web アプリケーションのセキュリティ

守るべき「情報資産」資産に対する「脅威」

2017/2/2521 ©Murachi Akira | This material provided by CC BY-NC-ND

Page 22: HTML5 Web アプリケーションのセキュリティ

HTML5 Web アプリの「情報資産」

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 22

サービスの継続性 アプリケーション提供の継続性 アプリケーション レスポンスの品位維持 SLA

アプリケーションそのもの サーバー サイドのソースコード サーバー サイドのデーターベース その他のアセット

ユーザーから預かる情報 ユーザー個人情報 パスワード ハッシュ

Page 23: HTML5 Web アプリケーションのセキュリティ

サービスの継続性

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 23

アプリケーション提供の継続性 アプリケーションのサービスが停止・中断し

てはいけない アプリケーション レスポンスの品位維持

ユーザーが苦痛を感じないレスポンスの品位を保たなければならない

SLA (Service Level Agreement)ユーザーとの契約は守らなければいけない

Page 24: HTML5 Web アプリケーションのセキュリティ

サービスの継続性への脅威

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 24

サーバーの破壊(侵入 / 物理攻撃) アプリケーションの停止 / パフォーマンス低下

サーバーの改竄 /不正利用(侵入 / インジェクション / 脆弱性経由) アプリケーションの乗っ取り(ページ改竄)踏み台として利用される

DoS (DDoS) アプリケーションの停止 / パフォーマンス低下

Page 25: HTML5 Web アプリケーションのセキュリティ

アプリケーションそのもの

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 25

サーバー サイドのソースコードビジネス ロジック =営業秘密 プレゼンテーションロジック =ノウハウの塊 改竄 = アプリケーションの乗っ取り

サーバー サイドのデーターベース製品情報 /販売情報 / 価格情報

=文字通りの営業秘密 その他のアセット

表示用のテキスト /画像など

Page 26: HTML5 Web アプリケーションのセキュリティ

アプリケーションそのものへの脅威

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 26

コードの漏洩(侵入 / 脆弱性経由)営業秘密 /ノウハウの流出

コード / アッセトの改竄(侵入 / インジェクション / 脆弱性経由) アプリケーションの乗っ取り = スニッフィング、攻撃者サイトへの誘導

データベースへの攻撃(インジェクション / 脆弱性経由)営業秘密 /ユーザー情報の流出・損失

Page 27: HTML5 Web アプリケーションのセキュリティ

ユーザーから預かる情報

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 27

ユーザー個人情報ユーザー登録情報(氏名、住所、メールアド

レス、カード番号…… etc. )ユーザー入力フロントエンドの脆弱性に注意する所

パスワード ハッシュ 「パスワードそのもの」の保管は論外単純なハッシュはレインボー テーブルで解析可能

Salt + ハッシュ ストレッチングは必須

Page 28: HTML5 Web アプリケーションのセキュリティ

ユーザーから預かる情報への脅威

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 28

個人情報データーベースへの攻撃 SQL インジェクション侵入 / 脆弱性経由

パスワード ハッシュ データベースへの攻撃 SQL インジェクション侵入 / 脆弱性経由

XSS によるユーザ情報の暴露 /漏洩 CSRF によるユーザ情報の暴露 /漏洩

Page 29: HTML5 Web アプリケーションのセキュリティ

脅威への対応

2017/2/2529 ©Murachi Akira | This material provided by CC BY-NC-ND

Page 30: HTML5 Web アプリケーションのセキュリティ

脅威への対処

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 30

脅威について知る ここまでの話

脆弱性を作りこまないインシデントに正しく対処する

Page 31: HTML5 Web アプリケーションのセキュリティ

脆弱性を作りこまない

2017/2/2531 ©Murachi Akira | This material provided by CC BY-NC-ND

Page 32: HTML5 Web アプリケーションのセキュリティ

「脆弱性を作りこまない」

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 32

HTML5 Web アプリでありがちなフロントエンドの脆弱性 クロスサイトスクリプティング (XSS)

 ⇒ DOM based XSS既知の脆弱性を持つコンポーネントの使用

未検証のリダイレクトとフォーワード

Page 33: HTML5 Web アプリケーションのセキュリティ

XSS (DOM based XSS)

33 2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND

Page 34: HTML5 Web アプリケーションのセキュリティ

クロスサイト スクリプティング外部入力を元にしたコンテンツの動的生成により実行可能なスクリプトが生成されWeb アプリケーションのセキュリ

ティ コンテキストで実行される セキュリティ コンテキスト

= SOP (Same Origin Policy)= ユーザーの信頼

©Murachi Akira | This material provided by CC BY-NC-ND 34 2017/2/25

Page 35: HTML5 Web アプリケーションのセキュリティ

一般的な XSS のパターン攻撃ページの作成

ページ内のリンクをクリックサーバーに不正なユーザー入力を送信

攻撃者のスクリプトを含むページを送信

スクリプト実行©Murachi Akira | This material provided by CC BY-NC-ND 35 2017/2/25

Page 36: HTML5 Web アプリケーションのセキュリティ

XSS の攻撃コード例

<script>alert(‘hacked’)</script>

この部分がサーバーサイドでページにそのまま埋め込まれて返される

©Murachi Akira | This material provided by CC BY-NC-ND 36 2017/2/25

Page 37: HTML5 Web アプリケーションのセキュリティ

DOM based XSS

攻撃ページの作成

ページ内のリンクをクリック

スクリプト実行

不正な入力値の提供

DOM 生成

©Murachi Akira | This material provided by CC BY-NC-ND 37 2017/2/25

Page 38: HTML5 Web アプリケーションのセキュリティ

DOM based XSS のコード例

https://www.owasp.org/index.php/DOM_Based_XSS より引用

©Murachi Akira | This material provided by CC BY-NC-ND 38 2017/2/25

Page 39: HTML5 Web アプリケーションのセキュリティ

DOM based XSS の発現…/page.html?

default=<script>alert(document.cookie)</script>"

document.location.href.indexOf("default=")+8)

取得される文字列 "<script>alert(document.cookie)</script>"

document.write("<script>alert(document.cookie)</script>“)

©Murachi Akira | This material provided by CC BY-NC-ND 39 2017/2/25

Page 40: HTML5 Web アプリケーションのセキュリティ

ブラウザーの XSS フィルターリクエストとレスポンスを比較して XSS を検出するとコード実効を抑止する機能

一般的な XSS : 〇 検知・抑止できる場合が少なくない

DOM based XSS : × 検知・抑止できない場合が多い

©Murachi Akira | This material provided by CC BY-NC-ND 40 2017/2/25

Page 41: HTML5 Web アプリケーションのセキュリティ

DOM based XSS の実例( 1 )

に誘導参考 https://www.ipa.go.jp/files/000024729.pdf

©Murachi Akira | This material provided by CC BY-NC-ND 41 2017/2/25

Page 42: HTML5 Web アプリケーションのセキュリティ

DOM based XSS の実例( 2 )

参考 https://www.ipa.go.jp/files/000024729.pdf

©Murachi Akira | This material provided by CC BY-NC-ND 42 2017/2/25

Page 43: HTML5 Web アプリケーションのセキュリティ

DOM based XSS の実例( 3 )

http://utf-8.jp/public/20140908/owasp-hasegawa.pdf より引用

ハッシュ (# の後ろ ) はサーバーに送信されないので、サーバーでの検知ができないパターン

©Murachi Akira | This material provided by CC BY-NC-ND 43 2017/2/25

Page 44: HTML5 Web アプリケーションのセキュリティ

XSS - ソースとシンクソース (sources)DOM based XSS の攻撃コードが注入される場所

シンク  (sinks)DOM based XSS の攻撃コードが JavaScript コードとして発現する場所

©Murachi Akira | This material provided by CC BY-NC-ND 44 2017/2/25

Page 45: HTML5 Web アプリケーションのセキュリティ

XSS - ソースからシンクへ

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 45

ユーザー入力ソースにセット

ソースから取得シンクに値を出力

XSS 発現

Page 46: HTML5 Web アプリケーションのセキュリティ

XSS - ソース (sources) location.hash location.search location.hrefdocument.cookiedocument.referrerwindow.nameWeb Storage IndexedDB

外部から操作可能なデータの源泉

©Murachi Akira | This material provided by CC BY-NC-ND 46 2017/2/25

Page 47: HTML5 Web アプリケーションのセキュリティ

XSS - シンク  (sinks)innerHTMLlocation.hrefdocument.writeevalsetTimeout, setIntervalFunctionjQuery(), $(), $.html()

テキストの出力

コードの生成

実行

©Murachi Akira | This material provided by CC BY-NC-ND 47 2017/2/25

Page 48: HTML5 Web アプリケーションのセキュリティ

XSS - Mutation-based XSS (mXSS)DOM based XSS の変種

HTML element String HTML

elementinnerHTMLで取得

innerHTMLで書き出し

元の HTML と書きだした HTML が同一にならない

©Murachi Akira | This material provided by CC BY-NC-ND 48 2017/2/25

Page 49: HTML5 Web アプリケーションのセキュリティ

XSS - mXSS innerHTML / outerHTML を参照す

ると本来の DOM構造とは異なる文字列が取得される場合がある

取得した文字列をそのまま innerHTML / outerHTML などで出力すると、実行可能な JavaScript コードが生成される

©Murachi Akira | This material provided by CC BY-NC-ND 49 2017/2/25

Page 50: HTML5 Web アプリケーションのセキュリティ

XSS - Mutation-based XSS の例

http://utf-8.jp/public/20140908/owasp-hasegawa.pdf より引用

©Murachi Akira | This material provided by CC BY-NC-ND 50 2017/2/25

Page 51: HTML5 Web アプリケーションのセキュリティ

DOM based XSS の対策

51 2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND

Page 52: HTML5 Web アプリケーションのセキュリティ

XSS - DOM based XSS の対策 HTML 生成時にエスケープ

JavaScript Escape / HTML Escape / URL Escape

DOM 操作メソッド / プロパティの利用 URL 生成のスキームの限定 CSP ( Content Security Policy )の利

用 Iframe sandbox の利用 ライブラリの更新

(ライブラリに脆弱性があることも)©Murachi Akira | This material provided by CC BY-NC-ND 52 2017/2/25

Page 53: HTML5 Web アプリケーションのセキュリティ

XSS - DOM 操作メソッド / プロパティの利用createElement( )createTextElement( ) createTextNode( ) appendChild( ) insertBefor( )setAttribute( )

©Murachi Akira | This material provided by CC BY-NC-ND 53 2017/2/25

Page 54: HTML5 Web アプリケーションのセキュリティ

XSS - 逆に利用を避けるべき innerHTMLouterHTMLdocument.write( )document.writeln( )

String リテラルを組み立ててそのまま HTML として出力しないのが基本

©Murachi Akira | This material provided by CC BY-NC-ND 54 2017/2/25

Page 55: HTML5 Web アプリケーションのセキュリティ

XSS - URL 生成のスキームを限定するリンク( URL )の動的生成も危険 javascript: スキームなど任意の

スキームの URL を生成しないHTTP (HTTPS) の URL のみ生成す

©Murachi Akira | This material provided by CC BY-NC-ND 55 2017/2/25

Page 56: HTML5 Web アプリケーションのセキュリティ

XSS - CSP ( Content Security Policy )ポリシー ベースでスクリプトのロードと実行に強い制約を課す仕組み

©Murachi Akira | This material provided by CC BY-NC-ND 56 2017/2/25

Page 57: HTML5 Web アプリケーションのセキュリティ

XSS - CSP ( Content Security Policy )の利用サーバー ヘッダーContent-Security-Policyでポリシーを構成

Firefox, Chrome, Safari, Edge で利用可能 IE は IE10 以降で X-Content-Security-

Policy で部分的サポート

©Murachi Akira | This material provided by CC BY-NC-ND 57 2017/2/25

Page 58: HTML5 Web アプリケーションのセキュリティ

XSS - Content Security Policy の効果 コンテンツを読み込むドメイン / プロトコルを制限できる コード インジェクションによる外部コンテンツの読み込みを防ぐ

インライン JavaScript を無効にする XSS / DOM base XSS の無効化

インライン イベント ハンドラーを無効にする 必要があれば外部スクリプトから

addEventListener() でハンドラーを設定する eval() も無効にする

©Murachi Akira | This material provided by CC BY-NC-ND 58 2017/2/25

Page 59: HTML5 Web アプリケーションのセキュリティ

XSS - Content Security Policy の設定例 Content-Security-Policy: default-src ‘self’

すべてのコンテンツをサイト自身のドメイン ( サブドメインを除く ) から読み込む

Content-Security-Policy: script-src ‘self’ スクリプトの読み込みをサイト自身のドメイン ( サブドメイン

を除く ) に制限する Content-Security-Policy: default-src ‘self’

*.mydomain.com サイト自身のドメインおよび、信頼されたドメインとそのすべ

てのサブドメインからのコンテンツを許可(それ以外は制限) Content-Security-Policy: default-src https://banking.

bank.com banking. bank.com サイトのすべてのコンテンツを SSL を使

用して読み込む©Murachi Akira | This material provided by CC BY-NC-ND 59 2017/2/25

Page 60: HTML5 Web アプリケーションのセキュリティ

XSS - Content Security Policy の利用は計画的に Content Security Policy は強力な分、副作用も強い

既存のアプリケーションに適用するのはハードルが高い

まずはContent-Security-Policy-Report-Onlyから

©Murachi Akira | This material provided by CC BY-NC-ND 60 2017/2/25

Page 61: HTML5 Web アプリケーションのセキュリティ

Content-Security-Policy-Report-Only

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 61

例Content-Security-Policy-Report-Only: ⏎default-src 'self'; ⏎report-uri http://example.com/csp-report

CSP違反レポートだけ report-uri で指定するサーバーに送信される(ブラウザーでのレンダリング、 JS 実行には影響を与えない)

違反レポートは簡単な JSON なので、サーバーは受信した JSON をデータベースに貯めるだけで OK

レポートを見て、直せるところから直す

(実際は 1行)

Page 62: HTML5 Web アプリケーションのセキュリティ

iframe sandbox の利用 動的に生成する要素を iframe に封じ込める iframe に sandbox 要素を指定してフレーム内コンテンツに制限を掛ける

コンテンツを動的に生成

<iframe sandbox id="foo">

制限されたコンテンツ

©Murachi Akira | This material provided by CC BY-NC-ND 62 2017/2/25

Page 63: HTML5 Web アプリケーションのセキュリティ

XSS - iframe sandbox の設定例 <iframe sandbox src="frame1.html">

すべての制限を有効にする

<iframe sandbox="allow-forms" src="frame1.html"> フォームの動作を許可する

<iframe sandbox="allow-same-origin" src="frame1.html"> フレーム内コンテンツを親と同じオリジンと見做す

©Murachi Akira | This material provided by CC BY-NC-ND 63 2017/2/25

Page 64: HTML5 Web アプリケーションのセキュリティ

XSS - iframe sandbox の効果許可の指定をしない限り強い制限フォームの動作不可 スクリプト実行不可 ポップ アップの作成不可親コンテンツとは別のオリジンになる

(SOP の制限適用 )親レベルのコンテンツの読み込み・操作不

©Murachi Akira | This material provided by CC BY-NC-ND 64 2017/2/25

Page 65: HTML5 Web アプリケーションのセキュリティ

既知の脆弱性を持つコンポーネントの使用

65 2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND

Page 66: HTML5 Web アプリケーションのセキュリティ

既知の脆弱性を持つコンポーネントの使用最終的に信頼できるのは自分だけ

自分で書いたコンポーネント ( ライブラリ )だけ使う?

生産性でも信頼性でも現実的ではない

外部のコンポーネントには「脆弱性」があるかも

©Murachi Akira | This material provided by CC BY-NC-ND 66 2017/2/25

Page 67: HTML5 Web アプリケーションのセキュリティ

脆弱なコンポーネント – 必要以上に外部ライブラリに依存しないHTML5 で強化された機能を積極的

に利用することで外部ライブラリ依存は減らせる

単純な操作であればライブラリよりネイティブに書いた方が速い

©Murachi Akira | This material provided by CC BY-NC-ND 67 2017/2/25

Page 68: HTML5 Web アプリケーションのセキュリティ

脆弱なコンポーネント –最新のライブラリを使用 / 更新する作成時の「最新」 ⇒✖稼働時は「常に最新」 ⇒〇

©Murachi Akira | This material provided by CC BY-NC-ND 68 2017/2/25

Page 69: HTML5 Web アプリケーションのセキュリティ

脆弱性情報へのアンテナを張る 最新のセキュリティ情報を把握する 公開脆弱性データベース

JVN (Japan Vulnerability Notes) CVE (Common Vulnerabilities and Exposures) NVD (National Vulnerability Database)

ライブラリのプロジェクトのメーリングリスト セキュリティ関連のメーリングリスト セキュリティ系勉強会

©Murachi Akira | This material provided by CC BY-NC-ND 69 2017/2/25

Page 70: HTML5 Web アプリケーションのセキュリティ

セキュリティテストを実施する気づいていない脆弱性もテストで発見できる(かもしれない)

©Murachi Akira | This material provided by CC BY-NC-ND 70 2017/2/25

Page 71: HTML5 Web アプリケーションのセキュリティ

未検証のリダイレクトとフォーワード

71 2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND

Page 72: HTML5 Web アプリケーションのセキュリティ

未検証のリダイレクトとフォーワードオープン リダイレクターを作りこま

ない任意の場所へ遷移可能なフォーワーダーを作りこまない

©Murachi Akira | This material provided by CC BY-NC-ND 72 2017/2/25

Page 73: HTML5 Web アプリケーションのセキュリティ

リダイレクトとフォーワードの対策 リダイレクトやフォーワードの使用を

できるかぎり避ける本当に必要ですか?

ユーザ パラメータで遷移先を決定しない遷移先パラメータが必要な場合、提供さ

れた値の検証をおこなう遷移先を限定する

遷移先ドメインのリスト化

©Murachi Akira | This material provided by CC BY-NC-ND 73 2017/2/25

Page 74: HTML5 Web アプリケーションのセキュリティ

インシデントへの対処

2017/2/2574 ©Murachi Akira | This material provided by CC BY-NC-ND

Page 75: HTML5 Web アプリケーションのセキュリティ

インシデントが起きる理由

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 75

プログラム上の脆弱性組織マネジメントの脆弱性個人マネジメントの脆弱性

Page 76: HTML5 Web アプリケーションのセキュリティ

インシデント - 脆弱性の発見・報告

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 76

自社プログラム / サービスの脆弱性の発見・報告 自社内で発見 ユーザーや研究者から直接 IPA などの公的機関経由 ネット上などで暴露

利用しているプラットフォームの脆弱性発見 フレームワークの脆弱性 データベースの脆弱性 OS / クラウドの脆弱性

Page 77: HTML5 Web アプリケーションのセキュリティ

インシデント - インシデントの発生

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 77

自社内で発生を発見外部からの報告

ユーザーや研究者から直接 IPA などの公的機関経由 ネット上などで暴露

Page 78: HTML5 Web アプリケーションのセキュリティ

インシデント - 優先課題を切り分ける

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 78

優先するのは何? 脆弱性の改修?ユーザーへの告知?

サービスを止める? / 止めない?

判断基準は?

Page 79: HTML5 Web アプリケーションのセキュリティ

問題の深刻度を計測する

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 79

脆弱性の深刻度評価共通脆弱性評価システム CVSS概説

http://www.ipa.go.jp/security/vuln/CVSS.html CVSS 計算ツール

http://jvndb.jvn.jp/cvss/ScoreCalc2.swf?lang=ja 評価の着目点

攻撃の行いやすさ /成功しやすさ 機密性・完全性・可用性への影響の大きさ 発生する被害の大きさ

Page 80: HTML5 Web アプリケーションのセキュリティ

深刻度の評価は難しい

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 80

脆弱性の技術的詳細を理解しないと評価しにくい場合が少なくない しかし難解な場合も多い

公開されている CVSS が自組織に適合するとは限らない自組織固有の状況を考慮しなければならない

ユーザーに影響する場合、技術的な評価だけで判断できないユーザー心理に配慮しなければならない

Page 81: HTML5 Web アプリケーションのセキュリティ

評価の精度を上げるには

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 81

守るべき物=自分(自社)のアプリケーション / システムの全体像を良く知る

脆弱性情報に親しむ インシデント対応に慣れる

Page 82: HTML5 Web アプリケーションのセキュリティ

守るべきものの全体像を知る

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 82

利用しているテクノロジーを確認 システムのインフラ

(サーバー OS/ ネットワーク /etc. ) ミドルウエア

(データベース /フレームワーク /etc. )外部コンポーネント / ライブラリ

Page 83: HTML5 Web アプリケーションのセキュリティ

脆弱性情報へのアンテナを張る 最新のセキュリティ情報を把握する 公開脆弱性データベース

JVN (Japan Vulnerability Notes) CVE (Common Vulnerabilities and Exposures) NVD (National Vulnerability Database)

ライブラリのプロジェクトのメーリングリスト セキュリティ関連のメーリングリスト セキュリティ系勉強会

©Murachi Akira | This material provided by CC BY-NC-ND 83 2017/2/25

Page 84: HTML5 Web アプリケーションのセキュリティ

セキュリティ診断を実施するセキュリティ診断結果の評価は本番

インシデント評価に役立つ

©Murachi Akira | This material provided by CC BY-NC-ND 84 2017/2/25

Page 85: HTML5 Web アプリケーションのセキュリティ

予行演習を実施する

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 85

インシデント対応の予行演習を定期的に実施する

セキュリティの「防災訓練」

Page 86: HTML5 Web アプリケーションのセキュリティ

まとめ

86 2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND

Page 87: HTML5 Web アプリケーションのセキュリティ

本日の Agenda

©Murachi Akira | This material provided by CC BY-NC-ND 87 2017/2/25

HTML5 Web アプリケーションのセキュリティについて理解する守るべきものは何か何が脅威なのか脅威からどのように守るのかどのように脅威を正しく評価するのか

Page 88: HTML5 Web アプリケーションのセキュリティ

Call to Action IPA (情報処理推進機構)サイトのウオッチ

情報セキュリティhttps://www.ipa.go.jp/security/index.html

セキュア・プログラミング講座http://www.ipa.go.jp/security/awareness/vendor/

programming/ OWASP (Open Web Application Security Project ) を知

る Welcome to OWASP https://www.owasp.org/ OWASP Japan

https://www.owasp.org/index.php/Japan セキュア プログラミングの実践 セキュリティ勉強会への参加

©Murachi Akira | This material provided by CC BY-NC-ND 88 2017/2/25

Page 89: HTML5 Web アプリケーションのセキュリティ

Web アプリ セキュリティの参考図書・資料

2017/2/25©Murachi Akira | This material provided by CC BY-NC-ND 89

体系的に学ぶ 安全な Web アプリケーションの作り方 脆弱性が生まれる原理と対策の実践 https://www.amazon.co.jp/dp/4797361190

徳丸浩の Web セキュリティ教室 https://www.amazon.co.jp/gp/product/

4822279987/ ブラウザハック

https://www.amazon.co.jp/dp/479814343X UTF-8.jp

http://utf-8.jp/ 安全なウェブサイトの作り方

https://www.ipa.go.jp/security/vuln/websecurity.html

Page 90: HTML5 Web アプリケーションのセキュリティ

勉強会情報 OWASP Night / OWASP Day

https://owasp.doorkeeper.jp/ 江戸前セキュリティ勉強会

https://sites.google.com/site/edomaesec/ Shibuya.XSS

http://shibuyaxss.connpass.com/ 脆弱性診断研究会

https://security-testing.doorkeeper.jp/

©Murachi Akira | This material provided by CC BY-NC-ND 90 2017/2/25

Page 91: HTML5 Web アプリケーションのセキュリティ

2017/2/2591 ©Murachi Akira | This material provided by CC BY-NC-ND