この内容は、FOSSA社のブログ記事を元に日本語に翻訳・再構成した内容となっております。
はじめに
ソフトウェアコンポジション解析(SCA:Software Composition Analysis)がオープンソースソフトウェア(OSS)の脆弱性管理にどのように役立つのかを具体的に説明する前に、現代のアプリケーション開発の世界でOSSがどれだけ普及しているかを理解することが重要です。
目を見張るようないくつかのデータがそれを物語っています。
このような背景から、OSSの脆弱性を管理するためにSCAツールを導入する企業が増えているのは当然のことといえます。SCAによって、組織はコードベースのOSSコンポーネントのリスク(ライセンスコンプライアンス、セキュリティ、品質)を特定、分析、管理することができます。本記事では、リスクの1つである「セキュリティ」と、SCAツールがOSSの脆弱性管理にどのように役立つのかを解説します。
OSSの依存関係一覧の作成
OSSの脆弱性を管理する方法は、依存関係を包括的かつ正確に一覧化することから始まります。結局のところ、組織はコードベースに含まれるすべてのコンポーネントを理解せずに脆弱性に対処することはできません。しかし最近のアプリケーションではOSSが大量に使用されているため、これを実行するのは容易ではありません。
SCAは、コードベースをスキャンし、包括的なソフトウェア部品表(SBOM:Software Bill of Materials)を作成することで、コードベースに含まれる直接的および推移的(間接的)な依存関係やライセンスなどの一覧を提供します。
OSSの脆弱性の特定と分析
コードベースの依存関係をスキャンした後、各コンポーネントを最新の脆弱性データベースと照合し、潜在的な脆弱性を発見します。SCAツールが問題を検出した場合には、以下のような重要な関連情報が提供されます。
- 脆弱性の説明
- 影響を受けるライブラリのバージョン
- CVSSスコアと深刻度
- CVEおよびCWEの識別情報
- リレーションシップパス(エクスプロイトがコードにどのように導入されたか)
OSSの脆弱性の修正
SCAは、脆弱性を特定するだけではなく、修正作業を支援するためのさまざまなガイダンスを提供します。組織が緩和策に集中できるように、CVSSスコアと深刻度のランクを割り当てることで優先順位付けを行えるようにします。また(具体的な内容はSCAツールによって異なりますが、)修正のガイダンスには脆弱なOSSコンポーネントをどのようにアップグレードするのが最適かという情報も含まれています。下のスクリーンショット(FOSSA社のSCAツールからの引用)は、SCAソリューションから得られる可能性のある修正ガイダンスの一例です。
脆弱性管理の効率化
近年、サイバーセキュリティ人材が不足していると言われています。攻撃対象がますます拡大し、サイバー犯罪者が大胆になっている現状において、これは大きな問題です。セキュリティチームは可能な限り時間を節約できるプロセスを導入することが重要になっています。SCAは、いくつかの方法でこれを実現します。
- リスク対策のシフトレフトを可能にする。
- OSSの脆弱性管理ポリシーを大規模に適用することを可能にする。
リスク対策のシフトレフト
脆弱性の発見がソフトウェア開発の後半になるほど、その対処には時間がかかり困難になります。SCAツールの中には、CI/CDパイプラインに統合できるものがあります。これによってチームはコードを継続的に監視し、脆弱性が本番環境にリリースされるのを未然に防ぐことができます。また、SCAはIDE環境に統合することもできるため、より迅速な脆弱性の特定と修正を可能にします。
規模に応じたポリシー適用
OSSの脆弱性を管理する際のポリシーはチームによって異なります。特定バージョンのパッケージをデフォルトで禁止したい場合もあれば、単にフラグを立てて詳細確認を促したい場合もあるでしょう。また、依存関係や脆弱性のリストを手作業で確認して判断を下すのは多くの時間がかかります。SCAは、これらの重要なプロセスを自動化することで、関係者が特定の脆弱性やパッケージに対して、フィルタリング、承認(または禁止)、フラグ付けをできるようにし、最適なリスク管理体制を大規模に実施できるようにします。
まとめ
近年、OSSの使用は急増しており、OSSのライセンス遵守、コード品質、セキュリティリスクを管理することの重要性が高まっています。SCAは、依存関係を特定・分析し、問題点の修正をサポートすることで、これらの懸念に対処することができます。
また、OSSの脆弱性がもたらすリスクを軽減するために、SCAは潜在的な脅威を効率的かつ効果的に理解し、対処するための強力なソリューションを提供します。