Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OWT2017JP - OWASP Top10

D2c0774c30304e4970b502118aa791fe?s=47 OWASP Japan
September 30, 2017

OWT2017JP - OWASP Top10

#OWT2017JP
OWASP Top 10 Session by 安藤崇周, オージス総研

D2c0774c30304e4970b502118aa791fe?s=128

OWASP Japan

September 30, 2017
Tweet

More Decks by OWASP Japan

Other Decks in Technology

Transcript

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

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

    Scrum Master(CSM&CSPO) •  プログラマ 2
  3. 本日の内容 •  OWASP Top10 とは •  セキュアコーディング •  コードレビュー • 

    脆弱性検査 •  セキュリティアーキテクチャ構築 •  セキュリティ要件定義 3
  4. 本日学べること •  OWASP Top10と関連ドキュメントやツール、ラ イブラリから脆弱性対応のための手法のあら ましを学びます •  OWASP Top10の日本語版原文を通じて OWASP

    Top10の読み方を学びます 4
  5. OWASP TOP10とは 5

  6. OWASP •  OWASP(Open Web ApplicaCon Security Project) •  ウェブアプリケーションのセ キュリティ向上を目的に2001年

    に設立 •  安全なソフトウェアの設計・開 発・習得・運用と維持に関する 活動を支援する、非営利の団 体 6
  7. OWASP Top10 •  主要な脆弱性10種を説明 – 攻撃により発生しうる影響 – 脆弱性有無の確認 – 実際の攻撃方法 – 攻撃シナリオの例 – 防止方法 – 参考資料 現時点(2017/09)では2013だが、

    2017が年内にリリースされる予定 7 『OWASP Top10 -2013 日本語版 』 hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf
  8. 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
  9. OWASP Top10 2013 A1 ΠϯδΣΫγϣϯ A2 ೝূͱηογϣϯ؅ཧͷෆඋ A3 ΫϩεαΠτεΫϦϓςΟϯά A4

    ҆શͰͳ͍ΦϒδΣΫτࢀর A5 ηΩϡϦςΟઃఆͷϛε A6 ػີσʔλͷ࿐ग़ A7 ػೳϨϕϧΞΫηε੍ޚͷܽམ A8 ΫϩεαΠτϦΫΤετϑΥʔδΣ Ϧ A9 ط஌ͷ੬ऑੑΛ࣋ͭ ίϯϙʔωϯτͷ࢖༻ A10 ະݕূͷϦμΠϨΫτͱϑΥʔ ϫʔυ 9
  10. 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
  11. OWASP Top10 ProacCve Controls 2016 1 ૣظʹɺ܁Γฦ͠ηΩϡϦςΟΛݕ ূ͢Δ 2 ΫΤϦʔͷύϥϝʔλԽ

    3 σʔλͷΤϯίʔσΟϯά 4 ͢΂ͯͷೖྗ஋Λݕূ͢Δ 5 ΞΠσϯςΟςΟͱೝূ؅ཧͷ࣮૷ 6 ద੾ͳΞΫηε੍ޚͷ࣮૷ 7 σʔλͷอޢ 8 ϩΪϯάͱ৵ೖݕ஌ͷ࣮૷ 9 ηΩϡϦςΟϑϨʔϜϫʔΫͱϥΠ ϒϥϦͷ׆༻ 10 Τϥʔॲཧͱྫ֎ॲཧ 11
  12. OWASP Top10×ProacCve Controls ※ProacCveControlsの各項目に対応は書いてあります。「OWASP Top10との関連」も参照ください。 12

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

    発生するのかのリスクを把握する 13
  14. アプリケーションのセキュリティリスク •  「脅威となる人」→「攻撃方法」→「セキュリティ上の弱点」→「セ キュリティ制御」→「技術的影響」→「ビジネスへの影響」という流 れは大切 •  OWASP Top10では「攻撃方法」と「弱点の普及度」「検出難易度」 「技術的影響」に一般的な情報を提供 • 

    「脅威となる人」と「ビジネスへの影響」は自分で評価 14 『OWASP Top10 -2013 日本語版』 「アプリケーションのセキュリティリスク」より hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf
  15. 脆弱性への対応方法 15 セキュリティ 要件定義 セキュリティ アーキテク チャ構築 セキュア コーディング コードレ

    ビュー 脆弱性検査 Feedback Feedback Feedback Feedback (1) (2) (3) (4) (5) この先ではA1 インジェクショ ンのSQLインジェクションを例 に対応方法を見ていきます OWASP Top10のメイン領域 拡張して考えるべき領域
  16. セキュアコーディング 16

  17. セキュアコーディング •  攻撃者の攻撃に耐えられる、堅牢なプログラムを 書くこと •  アプリケーション自体の防御力を上げる直接的な 方法 –  WAF(※)等のネットワークセキュリティだけで満足しな い

    •  ソフトウェアの脆弱性の多くはコーディングエ ラーが原因で作り込まれる 2004年の NaConal Vulnerability Database に登録されている2500 の脆弱性の64%は、プログラミングエラーが原因で作り込まれた [Heffley 2004] ※WAF: Web ApplicaCon Firewall 17
  18. 脆弱性の概要 18 「アプリケーションのセキュリティリスク」の流れで読む 『OWASP Top10 -2013 日本語版』 「A1 インジェクション」より hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf

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

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

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

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

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

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

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

  26. 発行されるクエリー •  このコードで実行されるクエリー SELECT * FROM user_data WHERE last_name =

    ‘<accountName>’; 問題は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
  27. 仕掛けてみる 27 OWASP WebGoat v8.0 hKps://www.owasp.org/index.php/Category:OWASP_WebGoat_Project

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

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

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

  31. コードレビュー 31

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

  33. コードレビュー •  目検でのレビューには限界がある –  ペアプログラミングを頑張っていればできるかもしれない が実際は??? •  ツールによるレビューは有効 –  「ソースコード静的解析」とも呼ばれる「ソースコード検査」

    は、「コーディング規約違反等の検出を行う技術」、「脆弱 性(例:バッファオーバフロー)を検出する技術」に分類され るが、後者に分類 される技術を「ソースコードセキュリティ 検査」という 『IPA テクニカルウォッチ:「ソースコードセキュリティ検査」に関するレポート 』 hKps://www.ipa.go.jp/files/000024762.pdf –  ホワイトボックステスト 33
  34. ソースコード静的解析での抽出 •  抽出できる脆弱性の例 –  バッファオーバーフロー –  フォーマットストリング –  整数オーバーフロー – 

    SQL インジェクション –  クロスサイト・スクリプティング •  抽出できない脆弱性の例 –  ウェブアプリケーションにおけるアクセス制御 –  認可制御に関する脆弱性 ⇒機能仕様に関する脆弱性は検出できない。 『IPA テクニカルウォッチ:「ソースコードセキュリティ検査」に関するレポート 』 hKps://www.ipa.go.jp/files/000024762.pdf 34
  35. 実際に使ってみる 35 画面はSynopsys社のCoverityを使用 hKp://www.coverity.com/

  36. 脆弱性検査 36

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

  38. 脆弱性検査 •  有償の脆弱性診断は有効 –  費用が掛かる、予算確保できるか? –  一発勝負になりがち •  無償の検査ツールを使う手も – 

    脆弱性の検知精度やサポート等では有償の脆弱性検査 ツー ルに劣るものの、近年、無償の脆弱性検査ツールが多数公開 されている。ウェブアプ リケーション開発者やウェブサイト管理 者が、設計及び実装の基本的なセキュリティ対策 が実施され ているかを検査するには、十分な効果を上げることが可能 『IPA テクニカルウォッチ 「ウェブサイトにおける脆弱性検査手法 (ウェブアプリケーション検査編)」 』 hKps://www.ipa.go.jp/files/000054737.pdf –  ブラックボックステスト 38
  39. 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
  40. 実際に使ってみる 40

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

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

  43. 開発者向けの次ステップ 43 •  開発初期段階からセキュリティを設計に組み 込む •  標準的なセキュリティ制御セットで開発を簡単 化する 『OWASP Top10

    -2013 日本語版』 「開発者向けの次ステップ」より hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf
  44. ProacCve Controls 2016 9.セキュリティフレーム ワークやライブラリの活用 •  セキュ リティ機能をゼロ から開発していくのは 時間の無駄

    •  セキュリティに関する設 計ミスを防ぐうえでも実 装ミスを防ぐうえでも助 けになる •  フレームワークに備 わっている セキュリ ティ機能を活用するこ とに情熱をささげる 『OWASP Top10 ProacCve Controles 2016-Japanese』 p.25 hKps://www.owasp.org/images/a/a8/OWASPTop10ProacCveControls2016-Japanese.pdf 44
  45. 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/
  46. 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
  47. 実際に使ってみる 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 ※注意
  48. セキュリティ要件定義 48

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

  50. 開発者向けの次ステップ 50 •  セキュアなWebアプリケーション開発のため に、各アプリケーションにおいてセキュアを定 義しなければいけません 『OWASP Top10 -2013 日本語版』

    「開発者向けの次ステップ」より hKps://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf
  51. OWASP ApplicaCon Security VerificaCon Standard(ASVS) 51 •  アプリケーションのセ キュリティ要件また はセキュリティテスト

    の項目 •  セキュアなアプリ ケーションとは何か を定義することがで きる 『OWASPアプリケーションセキュリティ検証標準 3.0.1』 https://www.jpcert.or.jp/securecoding/materials-owaspasvs.html
  52. ASVS v3.0.1 V1 ΞʔΩςΫνϟɺઃܭɺڴҖϞσϦ ϯά V2 ೝূ V3 ηογϣϯ؅ཧ V4

    ΞΫηε੍ޚ V5 ѱੑೖྗͷॲཧ V7 ҉߸Խ V8 Τϥʔॲཧͱϩάͷอଘ V9 σʔλͷอޢ V10 ௨৴ V11 HTTPʹؔ͢ΔηΩϡϦςΟઃఆ 52 V13 ѱੑ׆ಈͷ؅ཧ V15 ϏδωεϩδοΫ V16 ϑΝΠϧͱϦιʔε V17 ϞόΠϧ V18 WebαʔϏε V19 ߏ੒
  53. V1:アーキテクチャ、設計、モデリング  53 『OWASPアプリケーションセキュリティ検証標準 3.0.1』 p.24 https://www.jpcert.or.jp/securecoding/materials-owaspasvs.html

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

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

    https://github.com/ueno1000/secreq 55
  56. 非機能要求としてのセキュリティ •  セキュリティは基本的にはシステムの機能ではな くシステムが持つべき特性(非機能要求) •  非機能要求の検討項目 –  可用性 –  性能・拡張性

    –  運用・保守性 –  移行性 –  セキュリティ –  システム環境・エコロジー IPA 『非機能要求グレード』 より hKp://www.ipa.go.jp/sec/soswareengineering/reports/20100416.html 56
  57. セキュリティ検討項目 57 IPA 『非機能要求グレード』 より hKp://www.ipa.go.jp/sec/soswareengineering/reports/20100416.html 項目 概要 前提や制約 情報セキュリティに関するコンプライアンス。 特にセキュリティガイドラインや法令、社内

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

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

    Web対策 セキュアコーディング、Webサーバの設定等 による対策の強化やWAF導入など 非機能要求全体の中でトレードオ フ含めて検討し何をどれだけ守る のかを明確にしてセキュリティリス クに対応する
  60. まとめ •  OWASP Top10でセキュアコーディングとコード レビュー、脆弱性検査のスキルをつけましょう •  OWASP Top10の脆弱性に安全かつ効率的に 対応するために、セキュリティアーキテクチャ を構築しましょう

    •  OWASP Top10を踏まえた上で非機能要求定義 の一環としてセキュリティ要件定義をしましょ う 60
  61. 61 ご清聴ありがとうございました。