バージョンアップ情報
Dependency-Track情報
- Dependency-Trackとは
- 主な特徴
- コンポーネントが所属するエコシステム
- メリット・デメリット
- 類似プロダクト
- ユースケース
- 動作環境
- Dependency-Trackのライセンス
- 参考情報
- オープンソース年間サポートサービス
Dependency-Trackとは
Dependency-TrackはOWASP(Open Worldwide Application Security Project)により開発されたオープンソースのコンポーネント分析プラットフォームです。ソフトウェアを構成するライブラリ等のコンポーネントの依存関係をリスト化したSBOM(Software Bill of Materials)をもとに脆弱性を管理し、セキュリティリスクの軽減を図ります。
SBOM(Software Bill of Materials)とは
SBOMはソフトウェアに使用されている部品の依存関係をリスト化したもので、脆弱性を迅速に発見することに役立ちます。SBOMは2018年7月にNTIA(米国商務省電気通信情報局)により実証が行われ、2021年5月にバイデン大統領が大統領令に署名したことにより、現在世界的に普及しつつあります。日本でも経済産業省により「ソフトウェア管理に向けたSBOM(Software Bill of Materials)の導入に関する手引き」が2023年7月28日に策定されています。SBOMにはSPDX、CycloneDX、SWIDタグなどのフォーマットがありますが、Dependency-Trackで扱えるのはOWASPで策定されたCycloneDXです。
主な特徴
Dependency-Track には以下のような特徴があります。
依存関係の管理
Dependency-Trackはソフトウェア内のコンポーネントの依存関係をチェックし、構成管理を容易にします。
- ソフトウェアのコンポーネントの使用状況を追跡します。
- 何がどこで影響を受けているかを素早く特定できます。
- 以下のようなコンポーネントをサポートします。
- アプリケーション
- ライブラリ
- オペレーティングシステム
- コンテナ
- ファームウェア
- ファイル
- ハードウェア
- サービス
脆弱性スキャン
ソフトウェアと依存関係にあるコンポーネントが脆弱性を持っていないかを確認するため、脆弱性情報を提供するデータベース(例:NVD)と連携し、脆弱性の有無をチェックします。もし脆弱性が発見されると通知やレポートが生成されます。
レポートで特定できるリスクとして以下のようなものがあります。
- 既知の脆弱性を持つコンポーネント
- 古くなったコンポーネント
- 変更されたコンポーネント
- ライセンスリスク
リスク管理
各コンポーネントで発見されたコンポーネントがソフトウェアにとってどの程度危険であるかを評価できます。これによりセキュリティ対応の優先順位を決め、適切な対策を講じることが可能です。
- エクスプロイト予測スコアリングシステム(EPSS)のサポートを組み込むことで、緩和策の優先順位付けに役立てられます
-
コンポーネントのプライベート脆弱性データベースの維持に役立ちます
- グローバルおよびプロジェクトごとのポリシーをサポートする堅牢なポリシーエンジンが、以下のようなリスクを回避するのに役立ちます
-
セキュリティリスクとポリシー違反
- ライセンスのリスクとポリシー違反
- 運用リスクとポリシー違反
- 以下のようなコンポーネント毎に組み込まれたリポジトリに対応します
- Cargo (Rust)
- Composer (PHP)
- Gems (Ruby)
- Hex (Erlang/Elixir)
- Maven (Java)
- NPM (JavaScript)
- NuGet (.NET)
- PyPI (Python)
- 標準化されたSPDXライセンスIDをサポートし、コンポーネントごとのライセンスの使用状況を追跡します
- 分析結果をトリアージするための包括的な監査ワークフローが含まれています
自動化と統合
他のシステムと統合することで開発の各ステージにおいて、依存関係のチェックを自動化できます。これにより、依存関係に関する問題を早期に発見し、対応できるようになります。
-
Slack、Microsoft Teams、Mattermost、Webhooks、メール、Jiraをサポートする設定可能な通知
- APIファースト設計で構築されており、OpenAPI v3により他システムとの統合が容易
- Kenna Security、Fortify SSC、ThreadFix、DefectDojo のネイティブサポート
トリアージ
Dependency-Trackには監査履歴を追跡できるエンタープライズクラスの監査ワークフローエンジンが組み込まれており、脆弱性に対するトリアージ(優先順位付け)を助けます。
分析結果ステータス
サポートされる分析結果ステータスは以下です。
- EXPLOITABLE
悪用可能(または悪用される可能性が高い)です。
- IN_TRIAGE
影響を与えるかどうかを判断するための調査が進行中です。
- FALSE_POSITIVE
誤ったロジックまたはデータによって特定されました。
- NOT_AFFECTED
特定された脆弱性の影響は受けません。
- NOT_SET
分析が開始されていません。
- Dependency-Trackのデータソース
Dependency-Trackのデータソースには以下のようなものがあります。
脆弱性データベース
- NVD
NVD(National Vulnerability Database)は、米国国立標準技術研究所(NIST)が公開している脆弱性データベースです。Dependency-Trackにはミラーリング機能があります。
- GitHub Advisories
CVEとGitHubを含むセキュリティ脆弱性データベースです。
- Open Source Vulnerabilities
オープンソースプロジェクトの脆弱性データベースとトリアージインフラストラクチャです。
- VulnDB
Risk Based Securityが提供するサブスクリプションサービス。包括的かつ継続的に更新される脆弱性インテリジェンス ソースを提供します。
脆弱性スキャンツール
- Sonatype OSS Index
有効なパッケージURLを持つコンポーネントに対して、透過的で正確な結果を提供します。
- Snyk
オープンソースの依存関係、コンテナイメージ、Infrastructure as Code (IaC)構成のセキュリティ脆弱性をスキャンし、優先順位を付け、修正できるプラットフォームです。
- Trivy
Aqua Securityによる包括的で多用途のセキュリティスキャナーであり、最も人気のあるプログラミング言語、オペレーティングシステム、プラットフォームをサポートしています。
コンポーネントが所属するエコシステム
JavaのMaven CentralやNodeのNPMリポジトリのように各コンポーネントが所属するエコシステムの複数のリポジトリから情報を収集できます。
- リポジトリ
Dependency-Trackがサポートするリポジトリは以下です。
エコシステム |
リポジトリ |
---|---|
cargo |
Crates.io |
composer |
Packagist |
gem |
RubyGems |
github |
github.com |
go modules |
proxy.golang.org |
hex |
Hex |
maven |
Maven Central |
maven |
Atlassian Public |
maven |
JBoss Releases |
maven |
Clojars |
maven |
Google Android |
npm |
NPM |
nuget |
NuGet |
pypi |
PyPI |
Cpan |
CPAN |
内部データソース
- Internal Components
内部で開発されたコンポーネントを表す名前空間や名前を指定できます。
- Private Vulnerability Repository
内部で管理される脆弱性の独自のリポジトリです。
メリット・デメリット
メリット・必要性
- アプリケーションが使用するコンポーネントを常に最新の状態に保つことでセキュリティリスクを軽減させることができます
- オープンソースであるため無料ですぐに多くの機能が利用できます
デメリット・注意点・課題
-
脆弱性の分析は外部のデータベースに頼ることになるため、外部データベースの状況やデータ内容によっては正しい分析ができない可能性があります
- セキュリティが厳しくインターネットへの接続が難しい場合は機能が制限されます
類似プロダクト
Dependency-Trackに似た機能を持つ製品としてはSBOM Tool、SW360、Trivy、Dependency-Check等があります。
ユースケース
Dependency-Trackは、ソフトウェア開発者やセキュリティチームがプロジェクト内で使っている外部ライブラリやコンポーネントに含まれる既知の脆弱性を追跡し、対応策を講じるために使用します。プロジェクトの依存関係に関するレポートを生成し、プロジェクトのセキュリティやコンプライアンスを管理することができます。
動作環境
- 3つのディストリビューション
Dependency-Trackには3つのディストリビューションがあります。
- API Server
組み込み Jettyサーバーと全てのサーバー側機能が含まれていますが、フロントエンドユーザインターフェイスは含まれていません。
- Frontend
Webブラウザでアクセスするユーザインターフェイスです。
- 実行可能な war形式
API ServerとFrontendを組み合わせたものです。現在は非推奨であり将来のリリースでは廃止される予定です。
- デプロイ方法
Dependency-Trackは以下の3つの方法でデプロイできます。
- Docker
最も簡単なデプロイ方法です。
API Serverコンテナ:
最小構成:2CPUコア、4.5GB RAM
推奨構成:4CPUコア、16GB RAM
Frontendコンテナ:
最小構成:1CPUコア、512MB RAM
推奨構成:2CPUコア、1GB RAM
- Kubernetes
KubernetesのデプロイにはHelmを利用することができ、ヘルムチャートはリポジト
リ(https://github.com/DependencyTrack/helm-charts)に用意されています。
- 実行可能なWar形式
API ServerとFrontendが含まれたBundledがあり、Warを実行することですぐに利用できます。Java17以上がインストールされている必要があります。
最小構成:Java17以上、2CPUコア、4GB RAM
推奨構成:Java17以上、4CPUコア、16GB RAM
※現在は非推奨であり将来のリリースでは廃止される予定のためDockerまたはKubernetesへの移行が推奨されています。
Dependency-Trackのライセンス
Dependency-TrackApache License version 2に基づいて公開され、営利、非営利を問わず、誰でも自由かつ無償で利用・改変・再配布できるようになっています。
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。