ソフトウェアコンポジション解析(SCA)とは?機能やおすすめツールを紹介
現在のソフトウェアは、様々なオープンソースソフトウェア(以下、OSS)やライブラリ、パッケージなどを組み合わせて開発されており、バグや脆弱性の管理が複雑化しています。
そこでセキュリティ対策として注目されているのが、ソフトウェアに含まれるOSSやライブラリを特定できる「ソフトウェアコンポジション解析」(以下、SCA)です。
今回はSCAが重要な理由や導入のメリット、おすすめツールなどをわかりやすくまとめました。SCAの基本を理解しセキュリティ対策にお役立てください。
ソフトウェアコンポジション解析(SCA)とは?
ここでは、ソフトウェアコンポジション解析(SCA)について解説します。
ソフトウェア開発が複雑化している一方、企業はスピーディーな開発が求められる今日では、SCAはセキュリティ対策にとって欠かせない存在です。
- SCAの定義
- SCAとSASTの違い
それぞれ詳しく見ていきましょう。
SCAの定義
「ソフトウェア構成分析(Software Composition Analysis : SCA)」とは、自社が使用しているアプリケーションのコードベースを自動でスキャンし、OSSやライブラリを特定解析するツールや手法のことです。
特定したOSSやライブラリのコードの品質を評価したり、ライセンス・コンプライアンス・データ、セキュリティ上の脆弱性を検出したりします。
SCAには、オープンソースの脆弱性を修正するために、優先順位付けや自動修復の機能が備わったものもあります。
SCAとSASTの違い
SCAと似た言葉にSASTがあります。
SASTもSCAと同じく脆弱性を管理するためのものですが、運用方法や対象となる脆弱性が
異なります。
SCAは、コードベースに含まれるすべてのオープンソース・コンポーネントを検出したり
追跡したりします。一方、SASTは非公開のプロプライエタリコードにおける脆弱性の検出に特化していることが大きな違いです。
SCAの歴史と進化
企業はオープンソースのライセンス・コンプライアンスに対応する必要があります。この対応をするため、2000年代の初頭に登場したのがオープンソースの手動スキャナーです。手動による作業は、大変手間がかかります。実装したコードに潜む脆弱性も見落とされがちです。
そこで、コードのセキュリティと品質の解析を自動化するソリューションとして誕生したのがSCAです。2010年代には、リポジトリや、パッケージマネージャ、CIサーバ、ビルドツールなどのソフトウェア開発ツールと統合され、セキュリティ脆弱性の優先順位付け機能や自動修復機能などもリリースされました。
近年では、シフトレフトを実現するためにSCAが注目されています。シフトレフトとは、ソフトウェアの開発サイクルで、早期に品質保証のためのテスト工程を行うプロセスです。通常よりもセキュリティ対策を前倒しするシフトレフトは、開発と運用を組み合わせたDevSecOpsを実現するのに役立ちます。
品質を損なわずに開発サイクルを短縮させるには、高速なセキュリティ対策が欠かせません。そこでSCAを初期工程から導入し、早期にセキュリティの課題を発見して、スピーディに修正できるようになります。
SCAツールの機能
SCAツールで何ができるのか、具体的な機能を紹介します。SCAツールの機能は大きく分けると以下の通りです。
- OSSの依存関係の一覧化
- セキュリティ対策(脆弱性の特定)
- バージョン・ライセンス管理
それぞれについて見ていきましょう。
OSSの依存関係の一覧化
SCAツールにより、OSSの複雑な依存関係を一覧化、もしくはグラフ化することが可能です。
OSSは、誰もが自由に利用・改良できるソフトウェアのソースコードです。OSSは依存し合っており、依存関係が把握されていない未知のものも少なくありません。
SCAツールで対象のコードベースをスキャンし、コードで使用されるライブラリとの依存関係を特定します。スキャンしたメタデータに基づきSBOMを生成できます。SBOMとは、自社のアプリケーションで使用されるオープンソースコードをすべて一覧化したソフトウェア部品表です。
関連記事:SBOMとは?導入メリットやSPDX・CycloneDXの違いをわかりやすく解説
セキュリティ対策(脆弱性の特定)
OSSには、悪意のあるコードや脆弱性が含まれている可能性があります。その脆弱性を特定できるのが、SCAツールです。
SCAツールによりソースコードを一覧化した後、各コンポーネントを脆弱性データベースと照合し、脆弱性を特定します。問題が検出された場合、以下のような情報の取得が可能です。
- 脆弱性の具体的な内容
- 脆弱性の深刻度・CVSS(Common Vulnerability Scoring System)スコア
- 影響を受けるライブラリのバージョン
- CVE・CWEの識別情報
- 脆弱性に対する対応方法の提示
- 攻撃リスクを加味したトリアージ
バージョン・ライセンス管理
コードベースのスキャンデータにより、ソフトウェアのバージョンやライセンス情報、アプリケーションでの使用状況などが確認できます。
また、ライセンスが自社のポリシーに適合しているかどうかの確認も可能です。
SCAが重要な理由
SCAが重要な理由を解説します。
- OSS利用の増加
- ソフトウェアサプライチェーン攻撃の増加
OSS利用の増加
昨今ではOSSの採用率が高くなっています。あるマーケットガイドでは、約9割の組織がアプリケーションでOSSを使用していると推定されています。
しかし、企業内ですべてのOSSの利用状況を把握し、管理することは困難です。とりわけ膨大な量のデータからOSSの脆弱性やライセンス違反の把握を手動で行っていると、抜け漏れが生じやすくなります。知らないうちに自社でリスクを抱え込んでいる可能性もあるでしょう。
自動化されたSCAツールを使えば、これらの脆弱性やライセンス違反の問題を手間なく特定できます。
ソフトウェアサプライチェーン攻撃の増加
オープンソース利用の増加に伴い、セキュリティリスクも増大します。実際に、ソフトウェアサプライチェーン攻撃も増加しているのが実情です。
このような背景から、企業はセキュリティ対策の一環として、適切にソフトウェアの管理をすることが求められるようになっています。
そこで、自社が使用しているOSSやライブラリを特定解析し、コードの品質評価やセキュリティの脆弱性を検出できるSCAが注目されているのです。このような背景から、SCAツールは組織のセキュリティ対策の一環として、欠かせない存在となっています。
SCAツールを導入する2つのメリット
SCAツールを導入するメリットを紹介します。SCAの導入メリットは以下の2つです。
- 脆弱性を早期発見できる
- 膨大な量の解析を自動化できる
各項目を詳しく解説します。
1.脆弱性を早期発見できる
1つ目のメリットは、脆弱性を早期発見できることです。
ソフトウェアの変更を常にテストする「CI/CD」のパイプラインにSCAツールを統合すれば、コードの監視を自動化できます。脆弱性の早期発見により、リスクを最小限に抑えられます。
また、SCAツールによっては、アプリケーション開発に必要な機能をまとめた「IDE環境」に統合できるものもあります。これにより、迅速な脆弱性の特定・修正が可能です。
2.膨大な量の解析を自動化できる
2つ目のメリットは、膨大な量のOSSの解析を自動化できることです。
複雑化したOSSのデータを解析するには、手動での追跡は難しいでしょう。SCAでは一連の解析を自動化できます。自動化の仕組みさえつくれば、断続的な監視が可能です。
ヒューマンエラーも起こらず、スピーディかつ正確な解析が可能です。
SCAのユースケース
SCAのユースケースを紹介します。
SCAの特徴は計画から開発、テスト、運用までの各開発フェーズで、OSSのリスク管理をサポートすることです。
具体的には、計画ではデータベースの検索、開発やテストでは統合開発環境 (IDE) 連携やSBOMファイルのアップロード、CI/CD連携、クライアント環境でのスキャンを行います。スキャンの対象はOSSのコンポーネント、コードスニペット、ソースファイル、依存関係、コンテナなどです。運用では、リリースした後の継続的な監視や、バージョンアップの対応により管理します。
SCAは、あらゆる段階でのリスク検出・管理をサポートしますが、ここでは情報漏洩やセキュリティ事故を引き起こす可能性のある3つのリスクを取り上げます。
- 脆弱性管理
- ライセンス管理
- サプライチェーン攻撃の防止
脆弱性管理
事例として挙げられるのが、アプリケーションのソースコードに含まれた脆弱性により、情報漏洩事故が発生したケースです。このような事故が起きた原因として、動的アプリケーション・セキュリティ・テスト (DAST) のみを実施していたことが挙げられます。
動的アプリケーション・セキュリティ・テストは、脆弱性があるコードを特定できず、スキャンに時間を要するのがデメリットです。脆弱性のチェックを網羅的にできなかったことで、脆弱性ソースコードの脆弱性を狙った事故が起きました。
SCAツールを導入すれば、アプリケーションが利用するライブラリ、コンポーネントに対し、脆弱性が報告されていないかをチェックし、修正プロセスを適切に管理できるようになります。これにより、必要なタイミングで更新やセキュリティパッチの管理が可能です。
また、昨今のDevOpsもしくはDevSecOps環境では、SCAによりシフトレフトが起きています。SCAを上流工程から継続的に行うことで、開発担当者と運用担当者は品質とセキュリティを損なうことなく、スピーディーな開発を進め、生産性の向上を図れるようになります。
ライセンス管理
ライセンス管理を怠った結果、ライセンス違反につながるケースはよく見られます。ライセンス違反とは、提供元が定めたライセンスに準拠せず、その範囲を超えてソフトウェアを使用することです。
ライセンス違反をすることでソフトウェア販売の差し止め、民事訴訟による損害賠償の支払いなど、大きな影響を受けた事例があります。
影響を受けるライセンスを漏れなく特定するのは簡単ではありません。そこで、こういったライセンス違反のリスクを回避するのに活用できるのがSCAです。
SCAツールにより、使用中のオープンソースコンポーネントのライセンスを追跡し、ライセンス違反のリスクを回避することもできます。
以下のような状況ではSCAツールを導入するメリットは大きいでしょう。
潜在的なライセンス違反のリスクが多岐にわたっている
アプリケーションで使用中のOSSのライセンスルールを遵守できていない
代表的なライセンスには、GNU一般公衆利用許諾書(GNU General Public License)や、GNU劣等一般公衆利用許諾書(GNU Lesser General Public License)、Apache License(Apacheソフトウェア財団 によるソフトウェア向けライセンス規定)などがあります。
SCAツールでは、一般的なライセンスの内容はもちろん、各ライセンスの属性や義務などの情報も網羅的に管理可能です。
サプライチェーン攻撃の防止
昨今では、OSSプロジェクトに脆弱性や悪意のあるコードを送り込むサプライチェーン攻撃の手口が増加しています。
先述の通り、SCAツールで脆弱性を特定したり、ハッカーによって作成もしくは侵害された悪意あるライブラリを検出したりできます。これにより、外部からの侵入を未然に防ぐことで、サプライチェーン攻撃の防止に役立ちます。この点の詳細は「ソフトウェアサプライチェーンセキュリティとSCA」で後述します。
SCAツールの選び方
SCAツールはさまざまな種類があります。以下に、SCAツールの選び方のポイントをまとめたので、参考にしてみてください。
- OSSに含まれる脆弱性やライセンスを正確に検出できるか
- 使用中のコア言語に対応しているか
- 開発者が使いこなせるツールであるか
- サポート体制が充実しているか(日本語対応を含む)
- 自動で適切に優先順位付けができるか
- セキュリティやコンプライアンス基準が自社のポリシーに適合しているか
- カスタマイズや拡張が可能か
会社によってセキュリティ対策への予算や優先順位は異なるため、上記を踏まえて自社に合ったツールを選ぶことが重要です。
1.OSSに含まれる脆弱性やライセンスを正確に検出できるか
検出性能は重要視すべきポイントです。検出漏れや誤検出がゼロ、もしくは限りなく少ないSCAツールを選ぶようにしましょう。また、データベースへの脆弱性の反映が早いツールを選ぶことも重要です。
2.使用中のコア言語に対応しているか
自社で使用中のコア言語に対応しているツールを選びましょう。開発環境に適した機能がなければ、ツールを導入しても効率的に活用できません。なお、SCAではサービスを以下のような多様な言語で記述することが可能です。
- Java
- C
- C#
- C++
- Objective-C
- BPEL
- JavaScript
- PHP
- Ruby
- Groovy
- SQL
- Python
- HTML
- Scala
- Swift
- Go
- Swift
- T-SQL
- .NET Framework
- .NET Core
- ABAP/BSP
- ActionScript
- Apex
- ASP.NETほか多数
対応する言語やバージョン、フレームワークの詳細は、各SCAツールの案内でご確認ください。
3.開発者が使いこなせるツールであるか
開発者が使いこなせるツールであることも重要です。せっかくSCAツールを導入しても、開発者が使いこなせなければ適切に管理できません。
使いづらいものや複雑な仕様のものは避けるようにして、管理しやすいツールを選びましょう。
4.サポート体制が充実しているか(日本語対応を含む)
サポート体制が充実しているツールであれば、万が一運用で不具合が生じた場合も安心です。導入前に、ツールのトラブルに関する問い合わせやサポートを受け付けているか確認しておきましょう。
また、SCAツールには海外製品も多くあります。日本語で問い合わせが可能か、マニュアルがあるかなど、日本語への対応もチェックしておくとよいでしょう。
5.自動で適切に優先順位付けができるか
自動で適切に優先順位付けができるかどうかも確認しましょう。規模が大きい場合、手動での優先順位付けは非効率です。適切なポリシーに基づき、優先順位付けを自動化できるSCAツールを選ぶとよいでしょう。
6.セキュリティやコンプライアンス基準が自社のポリシーに適合しているか
SCAツールのセキュリティやコンプライアンス基準も確認しましょう。適切なセキュリティ対策のためには、自社の定めるガイドラインやポリシーの基準を満たしているツールの活用が欠かせません。
7.カスタマイズや拡張が可能か
ソフトウェアの規模が大きくなれば、セキュリティチェックを手動で行うことは難しくなります。既存の環境やツールと連携できることはもちろん、カスタマイズ性や拡張性もチェックしましょう。
SCAの課題
SCAは、セキュリティリスク管理のために必要なツールですが、一方で以下のような課題も抱えています。
ここでは、SCAの課題を解説します。
- 新たな脆弱性への対処
- 依存関係の識別
- 完全な可視化は難しい
新たな脆弱性への対処
脆弱性は常に新しいものが発見されています。もちろん、SCAツールで使用しているデータベースも更新されているものの、最新の脆弱性は検出できない可能性があります。
依存関係の識別
使用しているエコシステムやプログラミング言語が異なれば、依存関係に対する処理方法も異なります。SCAツールを使用する必要があります。
完全な可視化は難しい
SCAツールにより依存関係の可視化が可能ですが、アプリケーションの依存関係が複雑に重層化している場合、完全な可視化が難しい場合があります。
ソフトウェアサプライチェーンセキュリティとSCA
SCAは、ソフトウェアサプライチェーンセキュリティにも活用できます。ここでは、ソフトウェアサプライチェーンセキュリティとSCAについて解説します。
- ソフトウェアサプライチェーンセキュリティとは
- ソフトウェアサプライチェーンのリスク
- SCAによるソフトウェアサプライチェーンリスクへの対処
それぞれ見ていきましょう。
ソフトウェアサプライチェーンセキュリティとは
ソフトウェアサプライチェーンセキュリティとは、ソフトウェア開発プロセスで、そのプロセス全体が抱えているセキュリティリスクを検知・是正し、安全性や完全性を確保することです。
ソフトウェアの作り出しから提供した先のパートナーやサプライヤーに至るまで関わる人や物すべて、あるいはその一連の流れ・供給網をサプライチェーンと呼びます。ソフトウェアサプライチェーン全体で、セキュリティを守るための措置を講じます。
ソフトウェア全体の安全性を担保するためにも、ソフトウェアサプライチェーンセキュリティの適切な管理が重要です。
ソフトウェアサプライチェーンのリスク
ソフトウェアの作成やデプロイ、維持、配布の各プロセスで、ソフトウェアサプライチェーンは脆弱性やセキュリティリスクを抱えています。
サプライチェーンリスクは、経済的損失や風評被害など、企業やビジネスへ重大な被害をもたらす可能性があります。そのため、適切に対策しなければなりません。
SCAによるソフトウェアサプライチェーンリスクへの対処
SCAにより、ソフトウェアサプライチェーンリスクに対して以下のような対処が可能です。
- スキャンの自動化
- 脆弱性の特定
- ライセンス準拠
- 脆弱なオープンソースコンポーネントの検出
- リポジトリ統合
- コンポーネント制御
SCAにより、ソフトウェアアプリケーションの構成要素となるコンポーネントを自動でスキャン・識別します。これにより、OSSのライブラリやフレームワークなどの特定に役立ちます。
また、自社で使用中のアプリケーションに用いられているコンポーネントの脆弱性を特定したり、危険なオープンソースコンポーネントを検出したりすることも可能です。
企業のリポジトリシステムと統合すれば、リポジトリに追加されたコードを自動スキャンできるようになります。潜在的なセキュリティリスクや脆弱性の特定により、不審なコンポーネントの使用を制御・防止できます。
おすすめのSCAツール「yamory」
手軽かつ継続的なセキュリティのシフトレフトを実現するなら、SCAツール「yamory(ヤモリー)」がおすすめです。
yamoryは、オールインワンの脆弱性管理クラウドです。アプリケーションはもちろん、ホスト・コンテナ・クラウド・ネットワーク機器など、全レイヤーの脆弱性管理を組織全体で実現できます。日本語対応のUI・ドキュメントで使いやすく、安全性の確保と開発・運用の効率化がかないます。
- 手間をかけずスピーディーに脆弱性を確認したい
- 日本語で使える日本製のツールを利用したい
- ITシステムの脆弱性対策を一元管理したい
- セキュリティ担当者だけでなくアプリケーション開発者も使えるツールがいい
このような場合は、ぜひyamoryをご検討ください。
OSSの脆弱性管理にSCAを活用する
本記事では、SCAの基本を説明しました。SCAツールの機能や重要性、導入のメリットも解説しました。
OSSの依存関係を一覧化し、ライセンス違反や脆弱性を早期検出できるのがSCAツールです。OSSやライブラリ、パッケージなどが複雑化する昨今では、セキュリティ対策の一環として欠かせない存在となっています。
SCAツールをお探しなら、オールインワン脆弱性対策クラウド「yamory(ヤモリー)」がおすすめです。yamoryならITシステムの脆弱性を自動で検知し、組織の脆弱性対策を一元管理できます。
ITシステムの脆弱性を断続的に監視することで、セキュリティ対策にかかる工数を削減しましょう。
「SCAツールで使いやすいものはないか」「継続的なセキュリティ・シフトレフトを実現したい」とお考えの場合は、ぜひご検討ください。