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

Trivy + Regoを用いたパッケージ脆弱性管理 /trivy-rego

Trivy + Regoを用いたパッケージ脆弱性管理 /trivy-rego

2021.12.14 (Tue) Ubie Tech Talk で発表した資料です

Masayoshi Mizutani

December 14, 2021
Tweet

More Decks by Masayoshi Mizutani

Other Decks in Technology

Transcript

  1. Trivy + Regoを用いたパッケージ脆弱性管理
    Ubie株式会社 水谷 正慶
    Ubie Tech Talk 2021.12.14 (Tue)

    View Slide

  2. Confidential
    2
    会社概要
    自己紹介
    水谷 正慶(@m_mizutani)
    Ubie Discovery セキュリティエンジニア
    略歴:
    2011/4~ 日本IBM(東京基礎研究所、SOC)
    2017/10~ Cookpad株式会社
    2021/09~ Ubie株式会社

    View Slide

  3. 医師を目指し、起業するまで
    外部パッケージの
    脆弱性管理

    View Slide

  4. Confidential
    4
    会社概要
    現代のWebサービス開発
    ● 3rd party(主にOSS)パッケージの多大な恩恵
    ○ サービスの機能やフレームワークとして利用
    ○ 開発用ツールとしての利用
    ● エコシステムの発展により依存関係が膨張
    ○ 1プロダクトあたり多いと数百〜数千パッケージへの依存
    ○ 利用パッケージがさらに別のパッケージに依存する

    View Slide

  5. Confidential
    5
    会社概要
    脆弱性の発見と対応
    ● パッケージ脆弱性の情報は取得しやすくなっている
    ○ メディアの発展による脆弱性情報の流通
    ○ 脆弱性を検査するためのツールが充実
    ○ Continuous Integratoin (CI) などの文化が広がりサー
    ビスも増えてきた
    ● それによって既知の脆弱性は駆逐されたか?
    ○ → 残念ながらそうでもない

    View Slide

  6. 医師を目指し、起業するまで
    なぜ既知の脆弱性を駆逐
    できないのか?

    View Slide

  7. Confidential
    7
    会社概要
    課題1) 修正版がリリースされない
    ● 外部パッケージなのでリリースタイミングをコントロールできな

    ○ 特にOSSの場合はコントリビュータの都合に依存する
    ○ PR含む要望をだすことはできるが、取り入れられるかは
    状況次第
    ● 依存関係の先のパッケージが脆弱な場合、依存元と依存先の
    すべてのパッケージが要対応

    View Slide

  8. Confidential
    8
    会社概要
    課題2) 更新によってプロダクトに破壊的変更が起きる(かも)
    ● 必ずしも起きるとは限らないが検証は必要
    ● 破壊的変更が発生する場合は修正も必要
    ● 直ちに影響がないと見られる脆弱性についてはどうしても優先
    順位が下がってしまう

    View Slide

  9. Confidential
    9
    会社概要
    課題3) パッケージ更新以外の方法で緩和されている
    ● 脆弱性によっては外的要因によってリスクを低減できる
    ○ 例) サーバ設定の変更
    ○ 例) WAFなどのフィルタリング
    ● 緩和した後、一定期間後に修正すべきなのか・長期的にその
    まま運用するのかという判断が必要
    ○ 判断の結果とツールの検査結果が紐付いて欲しい

    View Slide

  10. 医師を目指し、起業するまで
    ということで脆弱性の
    「管理」が必要

    View Slide

  11. Confidential
    11
    会社概要
    要件1) プロダクト・脆弱性ごとに状態を管理したい
    ● すぐに修正できない脆弱性の状態を管理
    ○ なぜ修正しない・できないか?
    ○ いつまで様子見するか?
    ● アップデートできないパッケージについて警告などをだしたくな

    ○ 無用な警告はノイズとなり、本来見るべき警告を見落とし
    てしまう

    View Slide

  12. Confidential
    12
    会社概要
    要件2) 組織全体で脆弱性の管理を統制したい
    ● 全体の状況を把握したい
    ○ どのような脆弱性があるか
    ○ 新しく検出された脆弱性があるか
    ● 独自の脆弱性の評価が必要
    ○ 外部で評価された深刻度(CVSSなど)はブレがある
    ○ 内部的にも脆弱性の特性を確認していく必要がある

    View Slide

  13. Confidential
    13
    会社概要
    要件3) 判定やCIの結果をカスタマイズしたい
    ● 脆弱性の扱いを単純なルールで表現するのは困難
    ○ 複数の条件の組み合わせや例外の設定
    ○ Pass/Failだけでなく緊急度の判定などもやりたい
    ● 脆弱性だけでなくプロダクト側の文脈も必要
    ○ 外部に公開しているプロダクトか?
    ○ インターネットから直接アクセスできるか?

    View Slide

  14. 医師を目指し、起業するまで
    ということで

    View Slide

  15. Confidential
    15
    会社概要
    Octovy
    https://github.com/m-mizutani/octovy

    View Slide

  16. Confidential
    16
    会社概要
    Octovy
    ● GitHub AppでソースコードをTrivyでスキャン
    ● 脆弱性を検出したパッケージごとに対応状況を管理
    ● リポジトリ・脆弱性に任意のラベルを付与可能
    ○ 例: m-mizutani/some-product → “外部公開”
    ○ 例: CVE-2021-0000 → “Critical”
    ● OPA/Regoを使うことで自由にCIの結果を制御
    https://github.com/m-mizutani/octovy

    View Slide

  17. Confidential
    17
    会社概要
    OPA/Regoについて
    ● OPA: ポリシーエンジン(サーバ or Go言語組み込み)
    ● Rego: ポリシー記述言語
    ● 「入力したJSONをポリシーに従って自由に判定・変換する」
    ● テスト可能かつ汎用的な判定エンジンとして利用可能

    View Slide

  18. Confidential
    18
    会社概要
    リポジトリごとの設定
    https://github.com/m-mizutani/octovy
    脆弱性の状態を
    個別に管理可能
    リポジトリの性質を
    管理可能

    View Slide

  19. Confidential
    19
    会社概要
    アーキテクチャ
    ・検出した脆弱性情報
    ・リポジトリ情報
    ・パッケージ一覧情報
    ・commitに関する情報

    View Slide

  20. Confidential
    20
    会社概要
    ポリシー管理 on GitHub

    View Slide

  21. Confidential
    21
    会社概要
    ポリシーの例
    CriticalならFail
    Highかつ外部公開
    ならFail
    msgを集計して
    conclusionを返す

    View Slide

  22. Confidential
    22
    会社概要
    Regoのテスト
    特に問題ないテストデータ
    Criticalを含むテスト
    データ
    High & publicを含
    むテストデータ
    High だけを含む
    テストデータ

    View Slide

  23. Confidential
    23
    会社概要
    Future Work
    社内の様々なポリシーを集約し
    コードベースかつテスト可能な
    管理にしていく

    View Slide

  24. Confidential
    24
    会社概要
    宣伝:OPA/Rego Advent Calender 2021
    https://adventar.org/calendars/6601
    ● OPA概論
    ● Policy as Codeとは
    ● Regoの基礎(概要編)
    ● Regoの基礎(PolicyとData)
    ● Regoの基礎(結果の出力編)
    ● Regoの基礎(イテレーション編)
    ● Regoの基礎(パッケージ編)
    ● Regoの基礎(Safety)

    以下、順次公開予定

    View Slide

  25. Confidential
    25
    会社概要
    まとめ
    ● 社内プロダクトで利用しているパッケージ情報を俯瞰すること
    でリスクの把握・コントロールを用意にする
    ● OPA/RegoによるPolicy as Codeによる恩恵
    ○ 柔軟で自由なルールを記述できる
    ○ テスト可能なので管理がしやすい
    ○ コード管理により複数人で知見の共有ができる

    View Slide

  26. Confidential
    26
    会社概要
    セキュリティエンジニア募集
    https://recruit.ubie.life/jd_dev/eng_productsec https://recruit.ubie.life/jd_dev/corp_sec
    コーポレートエンジニア
    (Security Administrator)
    ソフトウェアエンジニア
    (Product Security)
    Ubieで一緒にセキュリティをエンジニアリングしていく
    仲間を募集しています

    View Slide