ソフトウェア構成分析(SCA)
OWASP Dependency-Check、Snyk、GitHub Dependabotを使って依存関係をスキャンし、既知のCVEを検出します。
「ソフトウェア構成分析(SCA)」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
SCAとは
Software Composition Analysis(SCA)は、プロジェクト内のオープンソース依存関係を特定し、脆弱性データベース(NVD、CVE、GitHub Advisory)と照合します。また、ライセンスコンプライアンスの問題も検出します。
サードパーティ依存関係が危険な理由
現在のアプリケーションでは、何百ものオープンソースライブラリを使用します。1つの脆弱なライブラリによって、アプリケーション全体が危険にさらされる可能性があります。2021年のLog4Shell脆弱性(CVE-2021-44228)は、広く使用されていた1つのロギングライブラリが原因で、数百万のJavaアプリケーションに影響を与えました。
SCAツール
代表的なSCAツール:
# npm audit (Node.js):
npm audit
npm audit fix
# pip-audit (Python):
pip-audit
# OWASP Dependency-Check:
dependency-check.sh --project myapp --scan ./
# Snyk:
snyk test
snyk monitorDependabotとRenovate
依存関係を自動更新するツール:
- Dependabot(GitHub)— 脆弱な依存関係を更新するPRを自動的に作成します
- Renovate— より柔軟に設定でき、より多くのレジストリをサポートします
これらをすべてのリポジトリで有効にしてください。依存関係の更新を追跡する手作業の負担を軽減できます。
CVEの深刻度を理解する
依存関係にあるすべての脆弱性が、あなたの環境で悪用可能とは限りません。以下を評価してください。
- 脆弱なコードパスは、使用方法において到達可能ですか。
- アプリケーションは、その機能を外部に公開していますか。
- WAFまたはその他の対策によって緩和されていますか。
CVSSスコアは出発点にすぎず、実際のリスクはコンテキストによって決まります。
推移的依存関係
直接依存するライブラリにも、独自の依存関係(推移的依存関係)があります。聞いたことのないライブラリの脆弱性でも、影響を受ける可能性があります。SCAツールは依存関係ツリー全体をマッピングします。npm lsまたはpip show -r requirements.txtを実行して、ツリーを確認してください。
npm ls --all | grep "vulnerable-pkg"
pip show requests | grep Requiresソフトウェア部品表(SBOM)
SBOMは、ソフトウェア製品に含まれるすべてのコンポーネントを正式に一覧化したものです。大統領令14028(米国)では、米国政府に販売するソフトウェアにSBOMを義務付けています。形式:SPDX、CycloneDX。
# Generate SBOM with syft:
syft . -o cyclonedx-json > sbom.json
# Scan SBOM for vulnerabilities:
grype sbom:./sbom.jsonライセンスコンプライアンス
SCAはライセンスも確認します。商用ソフトウェアでGPLライセンスの依存関係を使用すると、コードをオープンソース化する必要が生じる場合があります。LGPL、MIT、Apache 2.0は、一般的に制約の少ないライセンスです。法務チームは依存関係のライセンスを把握する必要があり、SCAによってこれを自動的に確認できます。
サプライチェーン攻撃
攻撃者は、人気のあるオープンソースパッケージに悪意のあるコードを挿入します。
- タイポスクワッティング:
requestsの代わりにreqeustsを使用させる - メンテナーアカウントの侵害(SolarWinds型)
- 依存関係の混乱:非公開パッケージ名が公開レジストリに漏洩する
整合性検証(チェックサム、ロックファイル)を伴うSCAにより、このリスクを軽減できます。
ロックファイル
ロックファイル(package-lock.json、Pipfile.lock)は、正確なバージョンを固定し、チェックサムを検証します。ロックファイルをソース管理にコミットしてください。本番ビルドでロックファイルのチェックを回避するために、npm install --legacy-peer-depsを決して使用しないでください。
CI/CDパイプラインでのSCA
SCAを必須のCIゲートとして統合してください。
# GitHub Actions example:
- name: Run npm audit
run: npm audit --audit-level=high
# Fail build on HIGH/CRITICAL findings
# Use --audit-level=moderate for stricter postureクイックチェック:SCA
Software Composition Analysis(SCA)の主な目的は何ですか。
レッスンのまとめ
SCAは、既知のCVE、ライセンスの問題、サプライチェーンのリスクについてプロジェクトの依存関係をスキャンします。ライブラリのさらに依存するライブラリにある脆弱性でも影響を受けるため、推移的依存関係への対応は重要です。自動更新のためにDependabotまたはRenovateを有効にしてください。サプライチェーンを可視化するためにSBOM(SPDX/CycloneDX)を生成してください。ロックファイルはバージョンを固定し、チェックサムを検証します。深刻度のしきい値を設定して、CIゲートとして統合してください。
よくある質問
「ソフトウェア構成分析(SCA)」レッスンは無料ですか?
はい。「ソフトウェア構成分析(SCA)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「ソフトウェア構成分析(SCA)」で何を学びますか?
OWASP Dependency-Check、Snyk、GitHub Dependabotを使って依存関係をスキャンし、既知のCVEを検出します。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「ソフトウェア構成分析(SCA)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。