ソフトウェア構成分析 - 百科事典
ソフトウェア構成分析(SCA)は、情報技術やソフトウェア工学の分野で、カスタムビルドのソフトウェアアプリケーションを分析し、組み込まれたオープンソースソフトウェアを検出し、それが最新版でないか、セキュリティ上の脆弱性を含んでいるか、ライセンス要件があるかを検出する実践です。
背景
ソフトウェア開発において、異なるコンポーネントを使用してソフトウェアを開発することは一般的なソフトウェア工学の実践です。ソフトウェアコンポーネントを使用することで、より大きな要素の複雑さを小さなコードの一部に分割し、コンポーネントの再利用を容易にすることで柔軟性を高めます。この実践は、1990年代後半からオープンソースソフトウェア(OSS)の普及により、ソフトウェア開発プロセスを加速し、市場投入までの時間を短縮するために広く拡大しました。
しかし、オープンソースソフトウェアの使用は、開発中のソフトウェアアプリケーションに多くのリスクを引き起こします。これらのリスクは以下の5つのカテゴリに分類できます:
OSSバージョン管理:新しいバージョンで導入された変更によるリスク
セキュリティ:コンポーネントの脆弱性によるリスク - 一般的な脆弱性と暴露(CVE)
ライセンス:知的財産(IP)の法的要件によるリスク
開発:既存のコードベースとオープンソースソフトウェアの互換性によるリスク
サポート:ドキュメントの質が低いと、古いソフトウェアコンポーネントのリスク
1998年2月にオープンソースイニシアティブが設立された直後、OSSに関連するリスクが指摘され、組織はスプレッドシートやドキュメントを使用して、開発者が使用するすべてのオープンソースコンポーネントを追跡しようとしました。
オープンソースコンポーネントを広範に使用する組織にとって、オープンソースリスクの分析と管理を自動化する必要がありました。これにより、ソフトウェア構成分析(SCA)と呼ばれる新しいカテゴリのソフトウェア製品が登場し、組織がオープンソースリスクを管理するのに役立ちました。
SCAは、ソフトウェアアプリケーション内で使用されているすべての第3者コンポーネントを検出し、セキュリティ上の脆弱性、知的財産のライセンス要件、使用中のコンポーネントの廃棄を減らすリスクを削減するために努力します。
原則
SCA製品は一般的に以下のように動作します:
エンジンはソフトウェアソースコードと、ソフトウェアアプリケーションをコンパイルするために使用される関連するアートファクトをスキャンします。
エンジンはOSSコンポーネントとそのバージョンを識別し、通常、この情報をデータベースに保存して、スキャンされたアプリケーション内で使用されているOSSのカタログを作成します。
このカタログは、各コンポーネントの既知のセキュリティ脆弱性、コンポーネントの使用に関するライセンス要件、コンポーネントの過去のバージョンを参照するデータベースと比較されます。セキュリティ脆弱性の検出では、通常、国立脆弱性データベース(NVD)で追跡されている既知のセキュリティ脆弱性(CVE)に対して比較が行われます。一部の製品は、脆弱性の追加の特許独占データベースを使用します。知的財産/法的適合性に関しては、SCA製品はOSSコンポーネントの使用に関するライセンスの種類を抽出し、評価します。コンポーネントのバージョンは、GitHub、Maven、PyPi、NuGet、その他多くの人気のあるオープンソースリポジトリから抽出されます。
その結果は、異なるデジタルフォーマットでエンドユーザーに提供されます。内容とフォーマットはSCA製品によって異なり、リスクの評価と解釈に関するガイドラインや、特に強いまたは弱いコピーライセンスのようなオープンソースコンポーネントの法的要件に関する推奨事項が含まれることがあります。出力には、ソフトウェア材料明細書(SBOM)も含まれ、ソフトウェアアプリケーションで使用されているすべてのオープンソースコンポーネントと関連する属性が詳細に示されます。
使用
SCAは組織内の異なる機能に影響を与えるため、異なるチームがデータを使用する場合があります。組織の規模と構造に応じて、IT部門は通常、CIO、CTO、Chief Enterprise Architects(EA)などの一般的な関与者とともに、技術の実装と運用にSCAを使用します。セキュリティとライセンスデータは、CISOなどの役割によってセキュリティリスクや知的財産のリスク管理に使用されます。
SCA製品の機能に応じて、開発者が使用および統合するOSSコンポーネントを利用するための統合開発環境(IDE)内に直接実装されるか、ソフトウェア品質管理プロセスの専用ステップとして実装されることがあります。SCA製品、特にSBOMを生成する能力は、アメリカを含む一部の国では、供給業者がその機関に供給するソフトウェアのセキュリティを強化するために必要とされています。
SCAの別の一般的な用途は、テクノロジーのデューデリジェンスです。合併・買収(M&A)取引の前に、アドバイザリーファームはターゲット企業のソフトウェアに関連するリスクを評価します。
効力
SCA製品の主な強みは、自動化の性質です。開発者は、OSSコンポーネントを使用および統合する際に、手動で追加の作業を行う必要はありません。自動化は、コードやアートファクト内の他のOSSコンポーネントへの間接的な参照にも適用されます。
弱点
逆に、現在のSCA製品のいくつかの主要な欠点は以下のとおりです:
複雑で労力密集型のデプロイメントで、完全に運用可能になるまで数ヶ月を要することがあります
各製品は独自の特許独占データベースを使用し、サイズやカバー範囲において大幅に異なります
脆弱性データは、NVD(脆弱性が最初に発見された数ヶ月後)で公式に報告された脆弱性のみに限定されます
SCAレポートとデータに基づく行動に関する自動化ガイドラインの欠如
検出されたOSSライセンスの法的要件に関するガイドラインの欠如
参考情報
セキュリティテスト
オープンソースソフトウェア
一般的な脆弱性と暴露
オープンソースライセンス
ソフトウェアインテリジェンス