SCA(ソフトウェアコンポジション解析) えすしーえー
オープンソース依存関係脆弱性スキャンSBOMライセンス管理DevSecOps
SCAについて教えて
簡単に言うとこんな感じ!
ソフトウェアって、自分で作ったコードだけじゃなく、外から借りてきた部品(ライブラリ)が山ほど入ってるんだ。SCAはその「借り物部品に危険な欠陥がないか・ライセンス違反がないか」を自動でチェックしてくれるツールや手法のことだよ!
SCAとは
SCA(Software Composition Analysis/ソフトウェアコンポジション解析)とは、ソフトウェアに含まれるオープンソースライブラリやサードパーティコンポーネントを洗い出し、既知の脆弱性・ライセンス違反・バージョン管理の問題を自動検出する手法・ツール群のことです。
現代のソフトウェア開発では、自社で一から書くコードよりも、npmやMavenなどのパッケージマネージャー経由で取り込む外部ライブラリが全体の7〜9割を占めるとも言われます。便利な反面、その部品のどれかに脆弱性が見つかると、そのソフトウェア全体が攻撃の標的になってしまいます。SCAはこの「借り物リスク」を可視化するための仕組みです。
近年、SBOM(Software Bill of Materials/ソフトウェア部品表)の整備が政府調達や規制の場面でも求められるようになり、SCAはセキュリティ担当だけでなく、システム発注者・調達担当者にとっても無視できないテーマになっています。
SCAが解決する3つの問題
| 問題 | 具体例 | SCAがやること |
|---|---|---|
| 既知脆弱性の混入 | Log4Shell(CVE-2021-44228)のような重大欠陥を含むライブラリを使い続ける | CVEデータベースと照合し、危険バージョンを即座に検出 |
| ライセンス違反リスク | GPLライブラリをコピーレフト義務を知らずに製品に組み込む | ライセンス種別を一覧化し、商用利用禁止・開示義務を警告 |
| 依存関係の不透明さ | 直接使っていないが間接依存(推移的依存)で入り込んでいるライブラリ | 依存ツリーを全階層スキャンしてすべて可視化 |
「直接依存」と「間接依存」の違い
自分のコードが axios を使っていても、axios 自体がさらに別のライブラリを使っています。この間接依存(推移的依存)まで含めると、実際に動くソフトウェアが抱えるライブラリ数は数百〜数千に達することも珍しくありません。SCAは依存ツリーの末端まで追いかけてスキャンします。
SCAの主なスキャン方式
| 方式 | 仕組み | 特徴 |
|---|---|---|
| マニフェスト解析 | package.json / pom.xml などを読む | 高速・ほぼ全言語対応 |
| バイナリ解析 | ビルド済みJARや.exeをスキャン | ソースがなくても検出可能 |
| コンテナイメージスキャン | Dockerイメージ内のパッケージを解析 | クラウドネイティブ環境向け |
歴史と背景
- 2000年代前半 — オープンソース利用が急拡大。ライセンス管理ツールとして初期SCA製品(Black Duckなど)が登場
- 2014年 — Heartbleed(OpenSSL脆弱性)が世界を震撼。「使っているOSSを把握していない」リスクが経営層に認知される
- 2017年 — Equifaxの大規模情報漏えい事故(Apache Struts 2の脆弱性が原因)。パッチ管理の遅れが招いた典型例として注目される
- 2020年代 — SolarWindsサプライチェーン攻撃を機にソフトウェアサプライチェーンセキュリティが最重要課題へ
- 2021年 — 米バイデン大統領が大統領令14028でSBOM提出を連邦調達の要件として明記
- 2021年末 — Log4Shell騒動で「自分の製品にLog4jが入っているか分からない」企業が続出。SCA導入が加速
- 2023年〜 — EU サイバーレジリエンス法(CRA)草案でSBOM・SCA対応が義務化の方向へ
SAST・DAST・SCVとの比較
セキュリティテストには似た略語が並ぶため、整理しておきます。
| 手法 | 正式名称 | 何を検査するか | タイミング |
|---|---|---|---|
| SCA | Software Composition Analysis | 外部ライブラリの脆弱性・ライセンス | ビルド前〜CI/CD |
| SAST | Static Application Security Testing | 自社コードの静的脆弱性(SQLインジェクション等) | ビルド前 |
| DAST | Dynamic Application Security Testing | 動作中アプリへの擬似攻撃テスト | テスト環境・ステージング |
| IAST | Interactive AST | 実行時の内部動作を計測 | テスト実行中 |
| SCV | Supply Chain Verification | ビルドパイプライン全体の改ざん検知 | CI/CDパイプライン |
主要SCAツール一覧
| ツール名 | 提供形態 | 特徴 |
|---|---|---|
| Dependabot | GitHub組み込み(無料) | PR自動作成でアップデート促進 |
| Snyk | SaaS / CLI | 開発者UXに優れ、修正提案まで表示 |
| Black Duck | エンタープライズ | ライセンス管理が特に強力 |
| OWASP Dependency-Check | OSS / 無料 | CIに組み込みやすい老舗OSSツール |
| Trivy | OSS / コンテナ特化 | Docker/Kubernetesスキャンに定評 |
関連する規格・RFC
| 規格・番号 | 内容 |
|---|---|
| NIST SP 800-161r1 | サプライチェーンリスク管理のフレームワーク(SCRM) |
| NTIA SBOM最小要素仕様 | SBOMに含めるべき最小限の情報を定義 |
| ISO/IEC 5230 | OpenChain:OSSライセンスコンプライアンスの国際標準 |