SCA【Software Composition Analysis】ソフトウェア構成分析

現代のソフトウェア開発では、オープンソースとして公開されているライブラリやコンポーネント、モジュールなどを組み合わせることが一般的であり、自社で記述したコードよりも外部由来のコードが占める割合の方が大きいケースも珍しくない。
SCAはソースコードや実行ファイル、パッケージ管理ファイルなどを解析し、利用されているライブラリの種類やバージョンを特定する。その結果を「NVD」(National Vulnerability Database)や「CVE」(Common Vulnerabilities and Exposures)といった脆弱性データベースと照合することで、セキュリティ上の問題を含むコンポーネントを検出する。
分析の対象は、開発者が直接追加したライブラリだけでなく、そのライブラリがさらに別のライブラリに依存する「間接依存」(推移的依存)にも及ぶ。自分では組み込んでいないコンポーネントに脆弱性が見つかる場合もあり、依存関係を含めた管理が重要である。
ライセンスの確認もSCAが担う機能のひとつである。オープンソースソフトウェアにはGPLやMITライセンスなど様々なライセンスが存在し、商用利用や再配布の条件はそれぞれ異なる。SCAを用いることで、プロジェクト内に混在するライセンスを把握し、条件に抵触するコンポーネントを事前に洗い出すことができる。
SCAは「静的アプリケーションセキュリティテスト」(SAST)と混同されることがあるが、目的は異なる。SASTが自作ソースコードの記述を解析して不具合や脆弱性を検出するのに対し、SCAは利用している外部コンポーネントを調査する。両者は補完関係にあり、組み合わせて利用されることが多い。
SCAはCI/CDパイプラインに組み込まれることも多く、ライブラリの追加時や新たな脆弱性情報の公開時に自動でスキャンを実行し、問題が検出された場合にビルドや公開を停止する運用も行われている。近年では人気ライブラリの攻撃者による「乗っ取り」被害なども顕在化しており、SCAはソフトウェアのサプライチェーン全体の安全性を確保する取組みの一環として重視されている。