SCA (Software Composition Analysis) — это процесс анализа используемых в проекте сторонних компонентов (библиотек, фреймворков, пакетов) на предмет:
известных уязвимостей (по CVE, NVD и др.),
лицензий (чтобы не нарушать юридические ограничения),
устаревших или неподдерживаемых зависимостей.
Иными словами, SCA помогает понять, что именно вы “собрали” из чужих пакетов, и не вносите ли вы в своё приложение известные уязвимости через них.
Как работает SCA:
Сканирование кода или файлов зависимостей (например, package.json
, requirements.txt
, pom.xml
) — чтобы определить все используемые библиотеки и их версии.
Сопоставление найденных библиотек с базами известных уязвимостей (например, NVD, OSS Index, GitHub Advisory Database).
Генерация отчёта с выявленными уязвимостями, их CVE, уровнями критичности (CVSS) и рекомендациями по обновлению.
Проверка соответствия лицензий библиотек корпоративным или юридическим требованиям.
(Иногда) автоматизация обновлений зависимостей или блокировка сборки при обнаружении критических проблем.
Инструменты для SCA:
Коммерческие: Snyk, Black Duck, WhiteSource, Veracode SCA, Sonatype Nexus Lifecycle.
Опенсорс/бесплатные: OWASP Dependency-Check, osv-scanner, GitHub Dependabot (частично выполняет SCA-функции).
Зачем нужно SCA?
Большинство современных приложений на 60–90% состоит из стороннего кода.
Уязвимости в этих библиотеках могут стать точкой входа для атак, даже если ваш собственный код безошибочен.
SCA помогает не только поддерживать безопасность, но и соблюдать лицензионные соглашения.