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

DevSecOps スキームにおいて脆弱性逓減を可能にするOSS ベースの環境調査

DevSecOps スキームにおいて脆弱性逓減を可能にするOSS ベースの環境調査

修士課題研究

SeaOtter (Kentaro Mori)

August 07, 2023
Tweet

More Decks by SeaOtter (Kentaro Mori)

Other Decks in Research

Transcript

  1. DevSecOps スキームにおいて脆弱性逓減を
    可能にするOSS ベースの環境調査
    2130022 森 健太郎

    View full-size slide

  2. 目次
    1. 研究の背景
    2. 脆弱性の逓減手法
    3. 検証環境の構築
    4. 検証結果への考察
    5. 本調査の貢献

    View full-size slide

  3. 研究の背景

    View full-size slide

  4. 1.研究の背景 (1)
    ・近年、ソフトウェア開発において、 DevOps という開発手法が注目されている
    ・DevOps とは、開発(Development)と運用(Operations)のチームを融合させ、
     迅速な実装と運用を実現する開発手法
    ・DevOps 開発では、セキュリティ対策が十分に行われていないという問題が指摘されている
    開発 運用
     図1: What is DevOps ?

    View full-size slide

  5. 1.研究の背景 (2)
    ・DevOps にセキュリティ(Security)を組み込んだDevSecOps 開発手法の広がり
    ・アプリケーションのライフサイクル全体に渡ってセキュリティを確保することを目指す
    ・DevSecOps 開発 では、開発者や運用者だけでなくセキュリティ担当者も開発に参加し、
     ソースコード / インフラのセキュリティチェックや脆弱性診断を自動化して実施する
     図2: What is DevSecOps ?
    運用
    開発
    セキュリティ

    View full-size slide

  6. 1.研究の背景 (3)
    ・本調査研究では、DevOps にセキュリティ対応を含めたDevSecOps スキームの元、
    OSS ベースの開発環境を構築することで脆弱性の逓減が可能になるか調査を実施し
    調査結果に対して考察を行った 

    View full-size slide

  7. 脆弱性の逓減手法

    View full-size slide

  8. 2.脆弱性の逓減手法 (1)
    ・脆弱性とは、アプリケーションやシステムに存在するセキュリティ上の
    欠陥や弱点のことで、攻撃者によって悪用される可能性がある
    ・DevSecOps での脆弱性管理は継続的かつ自動化されたプロセスとして実施される
    計画
    開発
    ビルド
    リリース
    運用
    脆弱性
    管理
      図3: DevSecOps lifecycle stages

    View full-size slide

  9. 2.脆弱性の逓減手法 (2)
    ・脅威分析 ・・ アプリケーションやシステムに存在する潜在的な脅威や
    リスクを特定し、評価し、対策するプロセス
    ・ソースコードキャン・・ソースコードに含まれるクレデンシャル情報や脆弱性を検出
    ・脆弱性スキャン ・・既知の脆弱性を検出するために行うスキャニング
    ・ポリシーチェック ・・満たすべきセキュリティ要件や基準に対して行う、チェックや検証
    ・セキュリティテスト・・脆弱性を検出するために行うペネトレーションテスト

    View full-size slide

  10. 検証環境の構築

    View full-size slide

  11. 3.検証環境の構築 - (1)
    パブリッククラウドサービス Azure 上にOSS 製品を用いてDevSecOps の検証環境を構築し、
    サンプルアプリに対し5段階のセキュリティチェックを実施し脆弱性の発生数と種類を確認
    <サンプルアプリ>
    言語: Python v3.9.6, Node.js v14.17.3, .NET v5.0.8
    DB: Redis v6.2.4, Postgres v13.3
    コンテナ: Docker v20.10.7
    <セキュリティチェック>
    ① ソースコードスキャン
    ② コンテナイメージスキャン
    ③ Kubernetes クラスタースキャン
    ④ ポリシーチェック
    ⑤ ペネトレーションテスト
    図4: example-voting-app

    View full-size slide

  12. 3.検証環境の構築 - (1-)

    ②コンテナイメージ 
    スキャン
    ③Kubernetes クラスター
    スキャン
    ④ポリシーチェック
    ⑤ペネトレーションテスト
    ソースコードス
    キャン

    View full-size slide

  13. 3.検証環境の構築 - (2)
    テスト結果
    ・GitHub Advanced Security の依存関係診断でNode.js パッケージの脆弱性が指摘
    ・Trivy のイメージスキャンからはホストイメージへのセキュリティパッチが
    未対応なものや、使用している言語のセキュリティアップデート問題が検出
    ・Kube-hunter の診断ではPod の露出やContainer の露出などの脆弱性が検出
    ・OWASP ZAP の脆弱性診断ではセッション管理の問題やセキュリティヘッダーの問題など検出

    View full-size slide

  14. 検証結果への考察

    View full-size slide

  15. 4.検証結果への考察- (1) 構築結果への考察
    ・〇 従来セキュリティテストで判明する脆弱性を開発の初期段階で検出することができる 
    ・△ DevSecOps 環境を構築してもアプリケーションの脆弱性を完全に無くすことはできない
       そのため、SIEM を利用した対策の実施や、セキュリティトリアージの実施が必要になる (後述)
    ・△ DevSecOps は環境構築自体に時間を要する
      本調査では、DevOps 開発経験がある場合でも、今回の検証環境の構築に 40 時間ほどかかる

    View full-size slide

  16. 4.検証結果への考察- (2) セキュリティ対策への考察
    < テスト結果から >
    ・SIEM の導入により、リアルタイムにセキュリティイベントを監視し、異常なパターンを検出する
    ・脆弱性に対して緊急度や重要度などの指標から優先度を付けてセキュリティトリアージを実施する
    < ネットワーク周り >
    ・開発環境をイントラネット内に構築し、インターネットとの境界に L7 レベルでは
     WAF を、L4 レベルではFW を設置することで、外部からの攻撃を防ぐことが可能
    ・Hub&Spoke のネットワークを構成することでネットワークレベルのセグメンテーションを実施
    < スキームの有効な利用 >
    ・脅威分析の導入により、計画段階からシステムのセキュリティを考慮するチーム体制が必要

    View full-size slide

  17. 本調査の貢献

    View full-size slide

  18. 5.本調査の貢献
    ・OSS ベースのDevSecOps 環境の構築により、システムの脆弱性逓減が可能であることを提示
    ・OSS を活用したDevSecOps スキームのコスト面、工数面でのメリット、デメリットを明確にした
    ・開発、運用フェーズ全体を俯瞰したセキュリティ対策手法を示した
    ・脅威分析を基にしたチーム内のセキュリティスキルを向上させる手法を示した

    View full-size slide

  19. 画像参照
    図1: What is DevOps ?
    https://www.dynatrace.com/news/blog/what-is-devops/
    図2: What is DevSecOps ?
    https://www.dynatrace.com/news/blog/what-is-devsecops/
    図3: DevSecOps lifecycle stages
    https://learn.microsoft.com/en-us/azure/architecture/guide/devsecops/devsecops-on-aks#devsecops-lifecy
    cle-stages
    図4: example-voting-app
    https://github.com/dockersamples/example-voting-app#architecture

    View full-size slide