SCA の運用上の留意点
A 社は,多数の OSS ライブラリを利用する業務システムを開発している。ビルドのたびにソフトウェア構成分析(SCA)ツールで利用コンポーネントを検査し,既知の脆弱性が検出されないことをリリースの条件としている。この運用に関する記述として,適切なものはどれか。
- アSCA ツールで既知の脆弱性が検出されなければ,自社で作成したコードに含まれる認可処理の不備などの脆弱性もないとみなすことができる。
- イリリース時に既知の脆弱性が検出されなかったコンポーネントでも,後から新たな脆弱性が公表されることがあるので,リリース後もコードの変更の有無にかかわらず継続的に照合する必要がある。
- ウSCA ツールは,ツールのデータベースに登録されていないライブラリについても,ソースコードの記述から脆弱性の有無を判定できる。
- エ推移的に依存するライブラリは開発者が直接選定したものではないので,SCA ツールの検査対象から除外して検査時間を短縮するのがよい。
正解と解説を見る
正解 イ
この問題の基礎知識
- SCA(ソフトウェア構成分析)は,ソフトウェアに含まれる OSS などの外部コンポーネントを特定し,既知の脆弱性のデータベースなどと照合する手法である。
- 自社で作成したコードの脆弱性は,ソースコードを解析する静的解析(SAST),動作中のアプリケーションを検査する動的解析(DAST),レビューなどで検出する。
- 既知の脆弱性の情報は随時追加されるので,リリース時に問題がなかったコンポーネントでも後から脆弱性が判明し得る。推移的に依存するライブラリもソフトウェアに取り込まれて実行され得る。
アSCA ツールで既知の脆弱性が検出されなければ,自社で作成したコードに含まれる認可処理の不備などの脆弱性もないとみなすことができる。
SCA は,ソフトウェアに含まれる外部のコンポーネントを特定し,報告済みの脆弱性と照合するものである。自社で作成したコードの脆弱性の検出には,静的解析や動的解析,レビューなどの別の検証が必要である。
イリリース時に既知の脆弱性が検出されなかったコンポーネントでも,後から新たな脆弱性が公表されることがあるので,リリース後もコードの変更の有無にかかわらず継続的に照合する必要がある。正解
既存のコードの新たな脆弱性はいつでも報告され得るので,コンポーネントは既知の脆弱性のデータベースと継続的に照合する必要がある。リリース時の検査だけでは,公開後に判明した脆弱性を見逃す。
ウSCA ツールは,ツールのデータベースに登録されていないライブラリについても,ソースコードの記述から脆弱性の有無を判定できる。
SCA ツールはライブラリをツールのデータベースと照合して特定するので,データベースにないライブラリは特定できない。コードから未知の脆弱性を探す静的解析とは仕組みが異なる。
エ推移的に依存するライブラリは開発者が直接選定したものではないので,SCA ツールの検査対象から除外して検査時間を短縮するのがよい。
直接選定していなくても,推移的に依存するライブラリはソフトウェアに取り込まれて実行され得る。実際に取り込まれているコードを把握することが SCA の目的であり,除外すると脆弱なコンポーネントを見逃す。
検証用の出典出典照合済み
NIST IR 8397 Guidelines on Minimum Standards for Developer Verification of Software / NIST SP 800-218 Secure Software Development Framework (SSDF) Version 1.1 PW.4.4, RV.1.1照合の根拠(4 件)
- イ(正解): 既存のコードの新たな脆弱性はいつでも報告され得るので,コンポーネントは継続的に照合する必要がある
The components of the software must be continually monitored against databases of known vulnerabilities; a new vulnerability in existing code may be reported at any time.
NIST IR 8397 · 2.11 Check Included Software Components(新しいタブで開きます) - ア(誤り): SCA は取り込まれたコードを特定し報告済みの脆弱性を照合するもので,自社コードの認可処理の不備などは検出対象ではない
Software Composition Analysis (SCA) and Origin Analyzer (OA) tools scan a code base to identify what code is included. They also check for any vulnerabilities that have been reported for the included code
NIST IR 8397 · 3.10 Supplemental: Checking Included Software for Known Vulnerabilities(新しいタブで開きます) - ウ(誤り): データベースにないライブラリは特定できない
Since libraries are matched against a tool’s database, they will not identify libraries missing from the database.
NIST IR 8397 · 3.10 Supplemental: Checking Included Software for Known Vulnerabilities(新しいタブで開きます) - エ(誤り): 実際に取り込まれているソフトウェアを把握するのが SCA の役割であり,推移的な依存を除外するとそれができない
These tools can aid in determining what software is really imported, identifying reused software (including open-source software), and noting software that is out of date or has known vulnerabilities (see Sec. 3.10).
NIST IR 8397 · 2.11 Check Included Software Components(新しいタブで開きます)