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

OWT2017JP - OWASP Top10

OWASP Japan
September 30, 2017

OWT2017JP - OWASP Top10

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

OWASP Japan

September 30, 2017
Tweet

More Decks by OWASP Japan

Other Decks in Technology

Transcript

  1. 本日の内容 •  OWASP Top10 とは •  セキュアコーディング •  コードレビュー • 

    脆弱性検査 •  セキュリティアーキテクチャ構築 •  セキュリティ要件定義 3
  2. OWASP •  OWASP(Open Web ApplicaCon Security Project) •  ウェブアプリケーションのセ キュリティ向上を目的に2001年

    に設立 •  安全なソフトウェアの設計・開 発・習得・運用と維持に関する 活動を支援する、非営利の団 体 6
  3. 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
  4. OWASP Top10 2013 A1 ΠϯδΣΫγϣϯ A2 ೝূͱηογϣϯ؅ཧͷෆඋ A3 ΫϩεαΠτεΫϦϓςΟϯά A4

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

    3 σʔλͷΤϯίʔσΟϯά 4 ͢΂ͯͷೖྗ஋Λݕূ͢Δ 5 ΞΠσϯςΟςΟͱೝূ؅ཧͷ࣮૷ 6 ద੾ͳΞΫηε੍ޚͷ࣮૷ 7 σʔλͷอޢ 8 ϩΪϯάͱ৵ೖݕ஌ͷ࣮૷ 9 ηΩϡϦςΟϑϨʔϜϫʔΫͱϥΠ ϒϥϦͷ׆༻ 10 Τϥʔॲཧͱྫ֎ॲཧ 11
  7. 脆弱性への対応方法 15 セキュリティ 要件定義 セキュリティ アーキテク チャ構築 セキュア コーディング コードレ

    ビュー 脆弱性検査 Feedback Feedback Feedback Feedback (1) (2) (3) (4) (5) この先ではA1 インジェクショ ンのSQLインジェクションを例 に対応方法を見ていきます OWASP Top10のメイン領域 拡張して考えるべき領域
  8. セキュアコーディング •  攻撃者の攻撃に耐えられる、堅牢なプログラムを 書くこと •  アプリケーション自体の防御力を上げる直接的な 方法 –  WAF(※)等のネットワークセキュリティだけで満足しな い

    •  ソフトウェアの脆弱性の多くはコーディングエ ラーが原因で作り込まれる 2004年の NaConal Vulnerability Database に登録されている2500 の脆弱性の64%は、プログラミングエラーが原因で作り込まれた [Heffley 2004] ※WAF: Web ApplicaCon Firewall 17
  9. 発行されるクエリー •  このコードで実行されるクエリー 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
  10. コードレビュー •  目検でのレビューには限界がある –  ペアプログラミングを頑張っていればできるかもしれない が実際は??? •  ツールによるレビューは有効 –  「ソースコード静的解析」とも呼ばれる「ソースコード検査」

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

    SQL インジェクション –  クロスサイト・スクリプティング •  抽出できない脆弱性の例 –  ウェブアプリケーションにおけるアクセス制御 –  認可制御に関する脆弱性 ⇒機能仕様に関する脆弱性は検出できない。 『IPA テクニカルウォッチ:「ソースコードセキュリティ検査」に関するレポート 』 hKps://www.ipa.go.jp/files/000024762.pdf 34
  12. 脆弱性検査 •  有償の脆弱性診断は有効 –  費用が掛かる、予算確保できるか? –  一発勝負になりがち •  無償の検査ツールを使う手も – 

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

    •  セキュリティに関する設 計ミスを防ぐうえでも実 装ミスを防ぐうえでも助 けになる •  フレームワークに備 わっている セキュリ ティ機能を活用するこ とに情熱をささげる 『OWASP Top10 ProacCve Controles 2016-Japanese』 p.25 hKps://www.owasp.org/images/a/a8/OWASPTop10ProacCveControls2016-Japanese.pdf 44
  15. 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/
  16. 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
  17. OWASP ApplicaCon Security VerificaCon Standard(ASVS) 51 •  アプリケーションのセ キュリティ要件また はセキュリティテスト

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

    ΞΫηε੍ޚ V5 ѱੑೖྗͷॲཧ V7 ҉߸Խ V8 Τϥʔॲཧͱϩάͷอଘ V9 σʔλͷอޢ V10 ௨৴ V11 HTTPʹؔ͢ΔηΩϡϦςΟઃఆ 52 V13 ѱੑ׆ಈͷ؅ཧ V15 ϏδωεϩδοΫ V16 ϑΝΠϧͱϦιʔε V17 ϞόΠϧ V18 WebαʔϏε V19 ߏ੒
  19. 非機能要求としてのセキュリティ •  セキュリティは基本的にはシステムの機能ではな くシステムが持つべき特性(非機能要求) •  非機能要求の検討項目 –  可用性 –  性能・拡張性

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

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

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

    Web対策 セキュアコーディング、Webサーバの設定等 による対策の強化やWAF導入など 非機能要求全体の中でトレードオ フ含めて検討し何をどれだけ守る のかを明確にしてセキュリティリス クに対応する