Slide 1

Slide 1 text

OWASP Top10を用いた 脆弱性対応 (株)オージス総研 安藤 崇周

Slide 2

Slide 2 text

自己紹介 •  ITアーキテクト – アプリ基盤/フレームワーク構築 – 開発プロセス策定/モデリング支援 – システム企画 – 技術調査/先端技術適用 •  PM •  Scrum Master(CSM&CSPO) •  プログラマ 2

Slide 3

Slide 3 text

本日の内容 •  OWASP Top10 とは •  セキュアコーディング •  コードレビュー •  脆弱性検査 •  セキュリティアーキテクチャ構築 •  セキュリティ要件定義 3

Slide 4

Slide 4 text

本日学べること •  OWASP Top10と関連ドキュメントやツール、ラ イブラリから脆弱性対応のための手法のあら ましを学びます •  OWASP Top10の日本語版原文を通じて OWASP Top10の読み方を学びます 4

Slide 5

Slide 5 text

OWASP TOP10とは 5

Slide 6

Slide 6 text

OWASP •  OWASP(Open Web ApplicaCon Security Project) •  ウェブアプリケーションのセ キュリティ向上を目的に2001年 に設立 •  安全なソフトウェアの設計・開 発・習得・運用と維持に関する 活動を支援する、非営利の団 体 6

Slide 7

Slide 7 text

OWASP Top10 •  主要な脆弱性10種を説明 – 攻撃により発生しうる影響 – 脆弱性有無の確認 – 実際の攻撃方法 – 攻撃シナリオの例 – 防止方法 – 参考資料 現時点(2017/09)では2013だが、 2017が年内にリリースされる予定 7 『OWASP Top10 -2013 日本語版 』 hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf

Slide 8

Slide 8 text

OWASP Top10を準用するガイドライン OWASP Top10 PCI DSS DISA MITRE FTC 8 『OWASP Top10 -2013 日本語版 』「About OWASP」より hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf

Slide 9

Slide 9 text

OWASP Top10 2013 A1 ΠϯδΣΫγϣϯ A2 ೝূͱηογϣϯ؅ཧͷෆඋ A3 ΫϩεαΠτεΫϦϓςΟϯά A4 ҆શͰͳ͍ΦϒδΣΫτࢀর A5 ηΩϡϦςΟઃఆͷϛε A6 ػີσʔλͷ࿐ग़ A7 ػೳϨϕϧΞΫηε੍ޚͷܽམ A8 ΫϩεαΠτϦΫΤετϑΥʔδΣ Ϧ A9 ط஌ͷ੬ऑੑΛ࣋ͭ ίϯϙʔωϯτͷ࢖༻ A10 ະݕূͷϦμΠϨΫτͱϑΥʔ ϫʔυ 9

Slide 10

Slide 10 text

OWASP Top10 ProacCve Controls •  OWASP Top 10で列挙し た10の重大な脆弱性を 作りこまないようにする 事前の対策 – 対策の概要 – 対策例 – リンク集 10 『OWASP Top10 ProacCve Controles 2016-Japanese』 hKps://www.owasp.org/images/a/a8/OWASPTop10ProacCveControls2016-Japanese.pdf

Slide 11

Slide 11 text

OWASP Top10 ProacCve Controls 2016 1 ૣظʹɺ܁Γฦ͠ηΩϡϦςΟΛݕ ূ͢Δ 2 ΫΤϦʔͷύϥϝʔλԽ 3 σʔλͷΤϯίʔσΟϯά 4 ͢΂ͯͷೖྗ஋Λݕূ͢Δ 5 ΞΠσϯςΟςΟͱೝূ؅ཧͷ࣮૷ 6 ద੾ͳΞΫηε੍ޚͷ࣮૷ 7 σʔλͷอޢ 8 ϩΪϯάͱ৵ೖݕ஌ͷ࣮૷ 9 ηΩϡϦςΟϑϨʔϜϫʔΫͱϥΠ ϒϥϦͷ׆༻ 10 Τϥʔॲཧͱྫ֎ॲཧ 11

Slide 12

Slide 12 text

OWASP Top10×ProacCve Controls ※ProacCveControlsの各項目に対応は書いてあります。「OWASP Top10との関連」も参照ください。 12

Slide 13

Slide 13 text

脆弱性とリスク •  脆弱性は「プログラムや設定上の問題に起因 するセキュリティ上の「弱点」」 IPA 「セキュア・プログラミング講座」 h,ps://www.ipa.go.jp/files/000059838.pdf •  セキュリティ上の「弱点」を「誰が」「どのよう に」突くのか。その結果、どのような「影響」が 発生するのかのリスクを把握する 13

Slide 14

Slide 14 text

アプリケーションのセキュリティリスク •  「脅威となる人」→「攻撃方法」→「セキュリティ上の弱点」→「セ キュリティ制御」→「技術的影響」→「ビジネスへの影響」という流 れは大切 •  OWASP Top10では「攻撃方法」と「弱点の普及度」「検出難易度」 「技術的影響」に一般的な情報を提供 •  「脅威となる人」と「ビジネスへの影響」は自分で評価 14 『OWASP Top10 -2013 日本語版』 「アプリケーションのセキュリティリスク」より hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf

Slide 15

Slide 15 text

脆弱性への対応方法 15 セキュリティ 要件定義 セキュリティ アーキテク チャ構築 セキュア コーディング コードレ ビュー 脆弱性検査 Feedback Feedback Feedback Feedback (1) (2) (3) (4) (5) この先ではA1 インジェクショ ンのSQLインジェクションを例 に対応方法を見ていきます OWASP Top10のメイン領域 拡張して考えるべき領域

Slide 16

Slide 16 text

セキュアコーディング 16

Slide 17

Slide 17 text

セキュアコーディング •  攻撃者の攻撃に耐えられる、堅牢なプログラムを 書くこと •  アプリケーション自体の防御力を上げる直接的な 方法 –  WAF(※)等のネットワークセキュリティだけで満足しな い •  ソフトウェアの脆弱性の多くはコーディングエ ラーが原因で作り込まれる 2004年の NaConal Vulnerability Database に登録されている2500 の脆弱性の64%は、プログラミングエラーが原因で作り込まれた [Heffley 2004] ※WAF: Web ApplicaCon Firewall 17

Slide 18

Slide 18 text

脆弱性の概要 18 「アプリケーションのセキュリティリスク」の流れで読む 『OWASP Top10 -2013 日本語版』 「A1 インジェクション」より hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf

Slide 19

Slide 19 text

脆弱性有無の確認(チェックポイント) 19 『OWASP Top10 -2013 日本語版』 「A1 インジェクション」より hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf

Slide 20

Slide 20 text

攻撃シナリオの例 20 『OWASP Top10 -2013 日本語版』 「A1 インジェクション」より hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf

Slide 21

Slide 21 text

防止方法 21 『OWASP Top10 -2013 日本語版』 「A1 インジェクション」より hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf

Slide 22

Slide 22 text

参考資料 22 『OWASP Top10 -2013 日本語版』 「A1 インジェクション」より hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf

Slide 23

Slide 23 text

ProacCve Controlsも見る 23 『OWASP Top10 ProacCve Controles 2016-Japanese』 P.5より hKps://www.owasp.org/images/a/a8/OWASPTop10ProacCveControls2016-Japanese.pdf

Slide 24

Slide 24 text

ProacCve Controlsも見る 24 『OWASP Top10 ProacCve Controles 2016-Japanese』 P.6より hKps://www.owasp.org/images/a/a8/OWASPTop10ProacCveControls2016-Japanese.pdf

Slide 25

Slide 25 text

脆弱性ありそうなコード OWASP WebGoat v8.0 hKps://www.owasp.org/index.php/Category:OWASP_WebGoat_Project 25

Slide 26

Slide 26 text

発行されるクエリー •  このコードで実行されるクエリー SELECT * FROM user_data WHERE last_name = ‘’; 問題はSQL が制御とデータを区別しないこと •  攻撃 Smith’ or ‘1’=‘1 •  実際に発行されるクエリー SELECT * FROM user_data WHERE last_name =‘Smith’ or ‘1’ =‘1’; 26 or ‘1’ =‘1’が加えられることでWHERE句が真になり、SELECT * FROM user_data;を発行すると同じ効果となる 参考:hKp://jvndb.jvn.jp/ja/cwe/CWE-89.html

Slide 27

Slide 27 text

仕掛けてみる 27 OWASP WebGoat v8.0 hKps://www.owasp.org/index.php/Category:OWASP_WebGoat_Project

Slide 28

Slide 28 text

きまった! 28 OWASP WebGoat v8.0 hKps://www.owasp.org/index.php/Category:OWASP_WebGoat_Project

Slide 29

Slide 29 text

修正してみる 29 OWASP WebGoat v8.0 hKps://www.owasp.org/index.php/Category:OWASP_WebGoat_Project

Slide 30

Slide 30 text

仕掛けても… 30 OWASP WebGoat v8.0 hKps://www.owasp.org/index.php/Category:OWASP_WebGoat_Project

Slide 31

Slide 31 text

コードレビュー 31

Slide 32

Slide 32 text

脆弱性有無の確認(コードレビュー) 32 『OWASP Top10 -2013 日本語版』 「A1 インジェクション」より hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf

Slide 33

Slide 33 text

コードレビュー •  目検でのレビューには限界がある –  ペアプログラミングを頑張っていればできるかもしれない が実際は??? •  ツールによるレビューは有効 –  「ソースコード静的解析」とも呼ばれる「ソースコード検査」 は、「コーディング規約違反等の検出を行う技術」、「脆弱 性(例:バッファオーバフロー)を検出する技術」に分類され るが、後者に分類 される技術を「ソースコードセキュリティ 検査」という 『IPA テクニカルウォッチ:「ソースコードセキュリティ検査」に関するレポート 』 hKps://www.ipa.go.jp/files/000024762.pdf –  ホワイトボックステスト 33

Slide 34

Slide 34 text

ソースコード静的解析での抽出 •  抽出できる脆弱性の例 –  バッファオーバーフロー –  フォーマットストリング –  整数オーバーフロー –  SQL インジェクション –  クロスサイト・スクリプティング •  抽出できない脆弱性の例 –  ウェブアプリケーションにおけるアクセス制御 –  認可制御に関する脆弱性 ⇒機能仕様に関する脆弱性は検出できない。 『IPA テクニカルウォッチ:「ソースコードセキュリティ検査」に関するレポート 』 hKps://www.ipa.go.jp/files/000024762.pdf 34

Slide 35

Slide 35 text

実際に使ってみる 35 画面はSynopsys社のCoverityを使用 hKp://www.coverity.com/

Slide 36

Slide 36 text

脆弱性検査 36

Slide 37

Slide 37 text

脆弱性有無の確認(脆弱性検査) 37 『OWASP Top10 -2013 日本語版』 「A1 インジェクション」より hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf

Slide 38

Slide 38 text

脆弱性検査 •  有償の脆弱性診断は有効 –  費用が掛かる、予算確保できるか? –  一発勝負になりがち •  無償の検査ツールを使う手も –  脆弱性の検知精度やサポート等では有償の脆弱性検査 ツー ルに劣るものの、近年、無償の脆弱性検査ツールが多数公開 されている。ウェブアプ リケーション開発者やウェブサイト管理 者が、設計及び実装の基本的なセキュリティ対策 が実施され ているかを検査するには、十分な効果を上げることが可能 『IPA テクニカルウォッチ 「ウェブサイトにおける脆弱性検査手法 (ウェブアプリケーション検査編)」 』 hKps://www.ipa.go.jp/files/000054737.pdf –  ブラックボックステスト 38

Slide 39

Slide 39 text

OWASP ZAP(Zed AKack Proxy) •  オープンソースのウェブアプリケーション脆弱 性診断ツール hKps://www.owasp.org/index.php/ OWASP_Zed_AKack_Proxy_Project •  初心者でも使いやすく検知精度が高く効率性 が非常に良い hKps://www.ipa.go.jp/about/technicalwatch/ 20131212.html 39

Slide 40

Slide 40 text

実際に使ってみる 40

Slide 41

Slide 41 text

セキュリティアーキテクチャ構築 41

Slide 42

Slide 42 text

実装・テストの対応だけで十分? •  開発者が個々にセキュリティ対策を実施? •  セキュアな認証の仕組みを自作することはで きるが効果は? 42 事前に対応策を設計し フレームワークやライブラリを活用したい

Slide 43

Slide 43 text

開発者向けの次ステップ 43 •  開発初期段階からセキュリティを設計に組み 込む •  標準的なセキュリティ制御セットで開発を簡単 化する 『OWASP Top10 -2013 日本語版』 「開発者向けの次ステップ」より hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf

Slide 44

Slide 44 text

ProacCve Controls 2016 9.セキュリティフレーム ワークやライブラリの活用 •  セキュ リティ機能をゼロ から開発していくのは 時間の無駄 •  セキュリティに関する設 計ミスを防ぐうえでも実 装ミスを防ぐうえでも助 けになる •  フレームワークに備 わっている セキュリ ティ機能を活用するこ とに情熱をささげる 『OWASP Top10 ProacCve Controles 2016-Japanese』 p.25 hKps://www.owasp.org/images/a/a8/OWASPTop10ProacCveControls2016-Japanese.pdf 44

Slide 45

Slide 45 text

Spring Frameworkの対応 OWASP Top10 フレームワーク対応 A1 ΠϯδΣΫγϣϯ Spring Data JPAなど A2 ೝূͱηογϣϯ؅ཧͷෆඋ Spring Security A3 ΫϩεαΠτεΫϦϓςΟϯά A4 ҆શͰͳ͍ΦϒδΣΫτࢀর Spring Security A5 ηΩϡϦςΟઃఆͷϛε A6 ػີσʔλͷ࿐ग़ Spring Security A7 ػೳϨϕϧΞΫηε੍ޚͷܽམ Spring Security A8 ΫϩεαΠτϦΫΤετϑΥʔ δΣϦ Spring Security A9 ط஌ͷ੬ऑੑΛ࣋ͭίϯϙʔωϯ τͷ࢖༻ A10 ະݕূͷϦμΠϨΫτͱϑΥʔ ϫʔυ 45 参考 Spring IO hKps://spring.io/

Slide 46

Slide 46 text

OWASP ESAPI(Enterprise Security API)の対応 OWASP Top10 ライブラリ対応 A1 ΠϯδΣΫγϣϯ Encoder, Validator A2 ೝূͱηογϣϯ؅ཧͷෆඋ AuthenCcator, User, HTTPUCls A3 ΫϩεαΠτεΫϦϓςΟϯά Encoder, Validator A4 ҆શͰͳ͍ΦϒδΣΫτࢀর AccessReferenceMap A5 ηΩϡϦςΟઃఆͷϛε - A6 ػີσʔλͷ࿐ग़ Encryptor A7 ػೳϨϕϧΞΫηε੍ޚͷܽམ AccessController A8 ΫϩεαΠτϦΫΤετϑΥʔ δΣϦ User(csrsoken) A9 ط஌ͷ੬ऑੑΛ࣋ͭίϯϙʔωϯ τͷ࢖༻ - A10 ະݕূͷϦμΠϨΫτͱϑΥʔ ϫʔυ AccessController 46 OWASP ESAPI  hKps://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API

Slide 47

Slide 47 text

実際に使ってみる Spring Boot Samples hKps://github.com/spring-projects/spring-boot/blob/master/spring-boot-samples/spring-boot-sample-data-jpa/src/main/java/sample/data/jpa/service/ HotelRepository.java 4b55144 on 20 Feb 2016 より 47 ※注意

Slide 48

Slide 48 text

セキュリティ要件定義 48

Slide 49

Slide 49 text

セキュリティ要件定義 •  セキュリティとしてどのような対応が必要? •  アジャイルだから機能要求だけ考えればよ い? 49 何をすべきか、 どれくらいかかるのかを明確にする

Slide 50

Slide 50 text

開発者向けの次ステップ 50 •  セキュアなWebアプリケーション開発のため に、各アプリケーションにおいてセキュアを定 義しなければいけません 『OWASP Top10 -2013 日本語版』 「開発者向けの次ステップ」より hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf

Slide 51

Slide 51 text

OWASP ApplicaCon Security VerificaCon Standard(ASVS) 51 •  アプリケーションのセ キュリティ要件また はセキュリティテスト の項目 •  セキュアなアプリ ケーションとは何か を定義することがで きる 『OWASPアプリケーションセキュリティ検証標準 3.0.1』 https://www.jpcert.or.jp/securecoding/materials-owaspasvs.html

Slide 52

Slide 52 text

ASVS v3.0.1 V1 ΞʔΩςΫνϟɺઃܭɺڴҖϞσϦ ϯά V2 ೝূ V3 ηογϣϯ؅ཧ V4 ΞΫηε੍ޚ V5 ѱੑೖྗͷॲཧ V7 ҉߸Խ V8 Τϥʔॲཧͱϩάͷอଘ V9 σʔλͷอޢ V10 ௨৴ V11 HTTPʹؔ͢ΔηΩϡϦςΟઃఆ 52 V13 ѱੑ׆ಈͷ؅ཧ V15 ϏδωεϩδοΫ V16 ϑΝΠϧͱϦιʔε V17 ϞόΠϧ V18 WebαʔϏε V19 ߏ੒

Slide 53

Slide 53 text

V1:アーキテクチャ、設計、モデリング  53 『OWASPアプリケーションセキュリティ検証標準 3.0.1』 p.24 https://www.jpcert.or.jp/securecoding/materials-owaspasvs.html

Slide 54

Slide 54 text

V3:セッション管理に関する検証要件 54 『OWASPアプリケーションセキュリティ検証標準 3.0.1』 p.29 https://www.jpcert.or.jp/securecoding/materials-owaspasvs.html

Slide 55

Slide 55 text

OWASP 「Webシステム/Webアプリケーション セキュリティ要件書 2.0」 •  安全なWebアプリケー ションの開発に必要なセ キュリティ要件書 『Webシステム/Webアプリケーションセキュリティ要件書 2.0』 https://github.com/ueno1000/secreq 55

Slide 56

Slide 56 text

非機能要求としてのセキュリティ •  セキュリティは基本的にはシステムの機能ではな くシステムが持つべき特性(非機能要求) •  非機能要求の検討項目 –  可用性 –  性能・拡張性 –  運用・保守性 –  移行性 –  セキュリティ –  システム環境・エコロジー IPA 『非機能要求グレード』 より hKp://www.ipa.go.jp/sec/soswareengineering/reports/20100416.html 56

Slide 57

Slide 57 text

セキュリティ検討項目 57 IPA 『非機能要求グレード』 より hKp://www.ipa.go.jp/sec/soswareengineering/reports/20100416.html 項目 概要 前提や制約 情報セキュリティに関するコンプライアンス。 特にセキュリティガイドラインや法令、社内 規定 セキュリティリスク 分析 システム開発を実施する中で、どの範囲で 対象システムの脅威を洗い出し、影響の分 析を実施するかの方針を確認 セキュリティ診断 セキュリティに特化した各種試験や検査の 実施の有無 セキュリティリスク 管理 セキュリティリスクの見直し、セキュリティリ スク対策の見直し、セキュリティパッチ適用

Slide 58

Slide 58 text

セキュリティ検討項目 58 IPA 『非機能要求グレード』 より hKp://www.ipa.go.jp/sec/soswareengineering/reports/20100416.html 項目 概要 アクセス・利用制 限 認証機能、利用制限、管理方法 データの秘匿 機密性のあるデータを、伝送時や蓄積時に 秘匿するための暗号化を実施するか 不正追跡・監視 不正監視、データ検証 ネットワーク対策 ネットワーク制御、不正検知、サービス停止 攻撃の回避

Slide 59

Slide 59 text

セキュリティ検討項目 59 IPA 『非機能要求グレード』 より hKp://www.ipa.go.jp/sec/soswareengineering/reports/20100416.html 項目 概要 マルウェア対策 マルウェアの感染を防止する、マルウェア対 策の実施範囲やチェックタイミングを確認 Web対策 セキュアコーディング、Webサーバの設定等 による対策の強化やWAF導入など 非機能要求全体の中でトレードオ フ含めて検討し何をどれだけ守る のかを明確にしてセキュリティリス クに対応する

Slide 60

Slide 60 text

まとめ •  OWASP Top10でセキュアコーディングとコード レビュー、脆弱性検査のスキルをつけましょう •  OWASP Top10の脆弱性に安全かつ効率的に 対応するために、セキュリティアーキテクチャ を構築しましょう •  OWASP Top10を踏まえた上で非機能要求定義 の一環としてセキュリティ要件定義をしましょ う 60

Slide 61

Slide 61 text

61 ご清聴ありがとうございました。