PS/SLの佐々木です。
今回はSBOMツールの一つであるDependency-Trackについて説明します。
SBOMとはなんぞやという方はこちらの記事を参考にしてみてください。
Dependency-Trackとは
インテリジェントなコンポーネント分析プラットフォームであり、ソフトウェアサプライチェーンにおけるリスクを特定し、低減することを可能にします。Dependency-Trackは、ソフトウェア部品表(SBOM)の機能を活用することで、ユニークで非常に有益なアプローチを取ります。このアプローチは、従来のソフトウェア構成分析(SCA)ソリューションでは実現できなかった機能を提供します。
Dependency-Trackの機能
正確で完全なフルスタックのインベントリ
Dependency-Trackポートフォリオ内のすべてのプロジェクトにわたって、ライブラリやフレームワーク、アプリケーション、コンテナ、オペレーティングシステム、ファームウェア、ハードウェア、サービスの使用状況を追跡します。クラウド、エンタープライズ、スマートデバイス、IoTのフルスタックのトレーサビリティを実現します。
脆弱なコンポーネントの特定と修復
National Vulnerability Database (NVD)、Sonatype OSS Index、GitHub Advisories、Snyk、OSV、Risk Based SecurityのVulnDBなど、複数の脆弱性情報ソースをサポートすることで、脆弱なコンポーネントを発見することができます。
ポリシー遵守の測定と実施
セキュリティ、運用、ライセンスの各ポリシーにより、開発チーム、サプライヤー、サプライチェーンのパートナー全体で、関連するリスクが迅速に特定されます。
Dependency-Trackの特徴
Dependency-Trackの特徴を以下に記載します。
脆弱性の検出 NVD、OSS Index、GitHub、Snyk、OSV、VulnDBとの統合により、サードパーティ製コンポーネントの既知の脆弱性を特定
ポリシー評価 個々のプロジェクトまたはポートフォリオ全体のセキュリティ、運用、およびライセンスポリシーのコンプライアンスを測定し、実施
影響分析 脆弱なコンポーネントから影響を受けるプロジェクトについて、特定された脆弱性に迅速に対応するための分析を行う
エクスプロイト予測 Exploit Prediction Scoring System (EPSS)の統合サポートを活用した緩和策の優先順位付け
監査ワークフロー 発見事項とポリシー違反を迅速にトリアージし、監査証跡にコメントと分析決定を記録します。
古いバージョンの検出 プロジェクトの健全性とリスクに間接的な影響を与える、最新版でないコンポーネントを特定します。
フルスタックインベントリ ライブラリ、フレームワーク、アプリケーション、コンテナ、オペレーティング・システム、ファームウェア、ハードウェア、サービスの使用状況を追跡します。
部品表(BOM) CycloneDX 形式のソフトウェア BOM を受け入れ(Consumes)、解析(Analyzes)、および生成(Produces)する能力を持っています
脆弱性の集約 複数のアプリケーションリスクプラットフォームとのネイティブな統合により、優先順位付けされた調査結果の統合ビューを組織に提供
NIST VDR NIST SP 800-161で定義された要件を上回るCycloneDX脆弱性開示レポート(VDR)を作成します。
CISA VEX CISAの推奨を上回るCycloneDX脆弱性エクスプロイタビリティ・エクスチェンジ(VEX)の生成とCISA VEX形式のデータを他のソースから受け取り、処理できる
通知 Slack、Microsoft Teams、Mattermost、Cisco WebEx、アウトバウンドWebhooks、電子メールへの通知を自動化します。
エンタープライズ対応 OpenID Connect (OIDC) 経由のシングルサインオン (SSO) をサポートし、Active Directory および LDAP 認証をサポートします。
APIと統合 十分に文書化されたAPIファーストの設計により、他のシステムと簡単に統合でき、無限の可能性を提供します。
時系列メトリクス ポートフォリオ内のすべてのプロジェクトとコンポーネントについて、継承されたリスクとポリシー違反のトレンド詳細を提供します。
オープンソース Apache 2.0ライセンスで配布されるコミュニティ主導のプロジェクト 貢献者と採用者の大規模で活発なコミュニティ。
Dependency-Trackの導入方法
Dockerコンテナを取得してデプロイするのみ
Dependency-Trackのセットアップ
curl -LO <https://dependencytrack.org/docker-compose.yml>
docker compose up -d
localhost:8080
↑
ここにアクセスするとローカルで検証可能
デフォルトでuser nameとpasswordは両方ともadmin
になってます。
また初回アクセス後パスワードの変更を求められるため対応します。
サーバーで運用する際の注意点としての詳細な情報はこちらにまとまっているので、個別でカスタマイズして使用することができます。今回はローカルで動作確認を行うのでこのままいきます。
Dependency-Trackを動かしてみる
事前準備
githubのPersonal Access Tokenを取得する
OSS IndexのAPI Tokenを取得する
こちら二つをDependency-TrackのAdministration > Analyzers > Sonatype OSS IndexとAdministration > Vulnerability Sources > Github Advisoriesに登録します。
SBOMの取り込み
今回はTomcatのSBOM(規格はCyclone DX)を取り込んでみます。
まずプロジェクトを作成します。こちらはそれぞれプロジェクトにあった入力をしてください。
作成したプロジェクトでComponentsタブを選択し、Upload BOMを選択し、TomcatのSBOMファイルを選択すると以下のようになります。
解析された結果特に設定しなくても今回はVersionで警告が出ています。
またそれぞれのProjectごとにPolicyを登録することもできます。
様々な条件を設定して警告を出すこともできます。
そのほかにも新たに脆弱性が発見された場合にSlackやメールに通知する機能やdependency-track は結果を DefectDojo に自動的に公開し、セキュリティ中心のコードの検出結果と脆弱なコンポーネントの検出結果の統合ビューを提供したりもしています。
終わりに
今回はDependency-Trackの解説と実際にSBOMを取り込んで実践してみました。
以下dependency-trackの公式ドキュメントになりますので、詳細はこちらを確認してみてください。