SCAとは?

重要なポイント

  • オープンソースのコンポーネントは、アプリケーションにリスクをもたらします。
    • このリスクは、プログラミングの見落としや悪意のあるコード、オープンソースのパッケージが依存する他のパッケージから発生します。
  • ソフトウェア構成分析(SCA)ツールは、アプリケーションに含まれるオープンソースパッケージを検査し、潜在的なリスクを特定します。
    • バイナリスキャンは、アプリケーションに存在するファイルを検査し、依存関係を特定します。
    • マニフェストスキャンは、依存関係を識別するためにビルドファイルを検査します。この方法は通常、バイナリスキャンよりも精度が低くなります。
  • SCAツールを使用すると、自動検出とポリシー適用によって大規模なリスク管理が可能となります。

オープンソースコンポーネントと危険性

近頃、ソフトウェアをゼロから構築することは滅多にありません。開発チームは、サードパーティやオープンソースのコンポーネントを利用し、車輪の再発明をせずにコードを出荷し、より速く革新的な製品を開発しています。このようにオープンソースソフトウェアに依存することで、アプリケーションにおけるファーストパーティコード、つまり開発チームが書いたコードの量は劇的に変化しています。米Sonatype社が発表した「State of the Software Supply Chain Report」によると、アプリケーションのコードの90%はオープンソースソフトウェアであることが一般的だそうです。これらのコンポーネントは依存関係と呼ばれ、それぞれの依存関係はセキュリティの脆弱性、ライセンスの問題、または品質の問題といった形で潜在的なリスクを引き起こします。

多くの依存関係は、他のオープンソースコンポーネントに依存しています。つまり推移的な依存関係であるため、本来のリスクの原因を特定することが困難になっています。このようなサードパーティコンポーネントをアプリケーションで使用することにより、組織は、自分たちのチームが書いていないコードに対する責任を負うことになります。オープンソースソフトウェアによるプロジェクトへのリスクは、ソフトウェア・コンポジション解析(SCA)によって管理および予防することができます。

ソフトウェアコンポジション解析とは?

ソフトウェアコンポジション解析(SCA)とは、アプリケーションを構成する特定のオープンソースソフトウェアコンポーネントと、それらのコンポーネントに関連する脆弱性を発見するプロセスです。

つまり、SCAとは、プロジェクトに含まれるすべてのコンポーネントを調べ、それらのコンポーネントから潜在的なリスクを判断することです。ソフトウェアコンポジション解析は、アプリケーションの脆弱性を発見し、特定するためのツールを用いて行われます。これらのツールは自動化することができ、ソフトウェア開発ライフサイクル(SDLC)全体にわたってコンポーネントを監視することができます。

SCAツールはどのように機能するのか?

ソフトウェアコンポジション解析ツールは、アプリケーションを取得し、そのアプリケーション内のコンポーネントを特定し、それらのコンポーネントに関する問題やリスクを特定します。ここでは、SCAツールがどのようにこのプロセスを実現するかについて、大まかな概要を説明します。

  1. アプリケーションをSCAツールに送信し、解析します。
  2. SCAツールは、アプリケーション内のすべての依存関係とサードパーティコンポーネントを特定し、ソフトウェア部品表(SBOM)を作成します。これは、3つの方法のうちのいずれかで行われます。
    • マニフェストスキャン – SCAツールは、JavaScriptプロジェクト用のpackage-lock.json など、アプリケーションでビルドしたマニフェストファイルを使用して依存関係のリストを生成します。これは、最終的なビルド成果物がないアプリケーションをスキャンする場合や、ソース管理(SCM)システムからスキャンする場合に最もよく使用されます。
    • バイナリスキャン – SCA ツールは、ビルドの成果物を調査し、バイナリのフィンガープリントを使用してオープンソースのコンポーネントを識別します。これは、アプリケーションの最終ビルドに含まれるパッケージのみを識別するため、誤検出を減らし、アプリケーションに追加されたサードパーティソフトウェアを非標準的な方法でキャッチします。すべてのソフトウェアコンポジション解析ツールがバイナリスキャンに対応しているわけではありません。バイナリスキャンは、実稼働環境にリリースされた実際の成果物を評価するため、マニフェストスキャンよりも優れています。
    • 複合アプローチ – Nexus Lifecycleのような一部のツールでは、より正確な結果を得るためにバイナリスキャンとマニフェストスキャンを組み合わせて使用します。
  3. そして、SBOMは、セキュリティの脆弱性、ライセンス情報、その他の潜在的なリスク源について、公共および民間のさまざまなデータベースと照合されます。SCAツールによって提供されるデータは平等ではありません。大半の商用SCAツールでは、専有データや脆弱性調査へのアクセスが大きな価値となっています。これは、多くの脆弱性が一般公開されておらず、CVEスコアが割り当てられていないためです。品質問題やライセンス情報など、その他の構成要素についても、一般に追跡できない場合があります。
  4. SCAツールは、脆弱性のリスト、ライセンス情報、およびその他のコンポーネントのメタデータを返します。このデータを組織のガバナンスポリシーと比較し、各ポリシーに割り当てられた脅威スコアによって優先順位をつけたポリシー違反のリストを作成します。理想的なのは、このツールで改善情報とソフトウェアの部品表も提供することです。

SCAツールのメリット

自動化されたSCAツールにより、チームはより質の高いコードを迅速に出荷し、リスク管理への積極的なアプローチを取ることができます。ソフトウェア開発ライフサイクル全体のリスクを特定することで、ソフトウェアコンポジション解析ツールは、組織が「方向転換」したり、開発プロセスの早い段階でセキュリティへの配慮を行うのに役立ちます。開発者は、ソフトウェアコンポジション解析ツールから得られる情報を利用して、開発プロセスの早い段階でより安全なコンポーネントを選択し、より安全なコードを作成することが可能となります。これにより、セキュリティレビュー時のやり直しを防止し、開発期間を短縮することができます。開発チームが既知のリスク要素を持つコンポーネントを使用する必要がある場合、これらの欠陥はコンポーネントが導入された時点で判明します。したがって、企業はアプリケーションのリスクを把握し、安全な方法でコンポーネントを使用していることを確認することができます。

 

SON_Partner_Portal_Page_Gold_partner_badge@2x

デフサムライは、Sonatypeのゴールドパートナーとして日本国内で同社製品を販売し、インストール、設定、テクニカルサーポートなどの導入支援サービスを提供しています。


お問い合わせボタン1

前の投稿
Nexusファイアウォール
次の投稿
Sonatypeパートナーサミット
メニュー