SCA (Software Composition Analysis) — это анализ компонентного состава приложения. Такой анализ позволяет обнаруживать уязвимые компоненты, дефекты безопасности или проблемы с условиями лицензирования.
Компании все чаще используют компоненты с открытым исходным кодом для ускорения процесса разработки, но это может привести к проблемам безопасности. При наличии в приложении уязвимого компонента оно может стать уязвимым к атакам злоумышленников.
SCA-решения автоматически анализируют приложение для поиска компонентов с открытым исходным кодом. Эти инструменты выявляют уязвимые версии компонентов и могут в некоторых случаях обеспечить автоматическое исправление или предложить обновить компонент до безопасной версии. SCA-решения также могут предоставить информацию о лицензионных требованиях и ограничениях, а также уведомить об устаревших зависимостях.
Компонент может не содержать уязвимостей, но его зависимости могут. Для предотвращения подобного сценария SCA инструменты также анализируют транзитивные зависимости (к примеру, зависимости библиотек, использующихся в приложении).
SCA-решения могут выявить уязвимости на ранних стадиях процесса разработки и на более поздних, но чем раньше произойдет внедрение, тем меньше риск столкнуться с репутационными и финансовыми проблемами. Для более эффективной борьбы с уязвимостями и дефектами безопасности некоторые инструменты предоставляют одновременно функциональность SCA и функциональность SAST. Например, SCA в анализаторе PVS-Studio для C#.
В тестовом веб-проекте используется RestSharp — клиент для работы с REST API. Приложение принимает данные в JSON-формате, обработчик получает строку даты и разбирает её при помощи метода расширения из RestSharp:
[HttpPost]
public IActionResult Index(string jsonDate)
{
DateTime dateTime = jsonDate.ParseJsonDate(CultureInfo.InvariantCulture);
// do something
return View();
}
Дефект заключается в использовании функции ParseJsonDate, которая использует уязвимое регулярное выражение, если версия библиотеки RestSharp меньше 106.11.7. Из-за этого всё приложение становится уязвимым к ReDoS атакам. Более подробно данный пример разобран в статье "Чем опасны уязвимые зависимости в проекте и как с этим помогает SCA?".
SCA-решения анализируют компонентный состав приложения и внутренние зависимости компонентов. Эти инструменты основаны на базах известных уязвимостей, находящихся в открытом доступе: CVE, NVD и другие. Поэтому они могут идентифицировать конкретную версию используемого компонента и дефекты безопасности, связанные с ней.
Это происходит в несколько этапов:
После нахождения уязвимого компонента, его можно обновить до безопасной версии, заменить на другой или добавить в код необходимые проверки. Подробнее эта тема разобрана в документации к правилу V5625, которое является реализацией функционала SCA в анализаторе PVS-Studio.
0