$30 off During Our Annual Pro Sale. View Details »

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を用いた
    脆弱性対応
    (株)オージス総研
    安藤 崇周

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. OWASP TOP10とは
    5

    View Slide

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

    6

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. セキュアコーディング
    16

    View Slide

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

    •  ソフトウェアの脆弱性の多くはコーディングエ
    ラーが原因で作り込まれる
    2004年の NaConal Vulnerability Database に登録されている2500
    の脆弱性の64%は、プログラミングエラーが原因で作り込まれた
    [Heffley 2004]
    ※WAF: Web ApplicaCon Firewall
    17

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  26. 発行されるクエリー
    •  このコードで実行されるクエリー
    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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  31. コードレビュー
    31

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  36. 脆弱性検査
    36

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  40. 実際に使ってみる
    40

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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/

    View Slide

  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

    View Slide

  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
    ※注意

    View Slide

  48. セキュリティ要件定義
    48

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  58. セキュリティ検討項目
    58
    IPA 『非機能要求グレード』 より
    hKp://www.ipa.go.jp/sec/soswareengineering/reports/20100416.html
    項目 概要
    アクセス・利用制

    認証機能、利用制限、管理方法
    データの秘匿 機密性のあるデータを、伝送時や蓄積時に
    秘匿するための暗号化を実施するか
    不正追跡・監視 不正監視、データ検証
    ネットワーク対策 ネットワーク制御、不正検知、サービス停止
    攻撃の回避

    View Slide

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

    View Slide

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

    60

    View Slide

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

    View Slide