Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
SCA (Software Composition Analysis)

SCA (Software Composition Analysis)

15 Сен 2023

SCA (Software Composition Analysis) — это анализ компонентного состава приложения. Такой анализ позволяет обнаруживать уязвимые компоненты, дефекты безопасности или проблемы с условиями лицензирования.

Зачем нужен SCA

Компании все чаще используют компоненты с открытым исходным кодом для ускорения процесса разработки, но это может привести к проблемам безопасности. При наличии в приложении уязвимого компонента оно может стать уязвимым к атакам злоумышленников.

SCA-решения автоматически анализируют приложение для поиска компонентов с открытым исходным кодом. Эти инструменты выявляют уязвимые версии компонентов и могут в некоторых случаях обеспечить автоматическое исправление или предложить обновить компонент до безопасной версии. SCA-решения также могут предоставить информацию о лицензионных требованиях и ограничениях, а также уведомить об устаревших зависимостях.

Компонент может не содержать уязвимостей, но его зависимости могут. Для предотвращения подобного сценария SCA инструменты также анализируют транзитивные зависимости (к примеру, зависимости библиотек, использующихся в приложении).

SCA-решения могут выявить уязвимости на ранних стадиях процесса разработки и на более поздних, но чем раньше произойдет внедрение, тем меньше риск столкнуться с репутационными и финансовыми проблемами. Для более эффективной борьбы с уязвимостями и дефектами безопасности некоторые инструменты предоставляют одновременно функциональность SCA и функциональность SAST. Например, SCA в анализаторе PVS-Studio для C#.

Пример работы SCA

В тестовом веб-проекте используется 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

SCA-решения анализируют компонентный состав приложения и внутренние зависимости компонентов. Эти инструменты основаны на базах известных уязвимостей, находящихся в открытом доступе: CVE, NVD и другие. Поэтому они могут идентифицировать конкретную версию используемого компонента и дефекты безопасности, связанные с ней.

Это происходит в несколько этапов:

  • Пользователь запускает анализ приложения с помощью SCA-решения.
  • SCA-решение собирает информацию о зависимостях, компонентах и транзитивных зависимостях. Составляется Bill of Materials (BOM) – список используемых сторонних компонентов приложения.
  • Для всех компонентов BOM производится поиск соответствий по базе уязвимостей. При обнаружении в базе информации о дефекте в используемой версии компонента SCA получает всю необходимую информацию об уязвимости и генерирует соответствующее сообщение. Аналогично производится проверка на соблюдение лицензий и ограничений.
  • SCA-решение выводит информацию о найденных уязвимостях, устаревших компонентах или проблемах с лицензированием. Может быть выдано описание дефекта, затронутая версия компонента, идентификаторы CVE и CWE, оценка и серьезность CVSS. Также могут быть предложены способы исправления (например, обновление уязвимого компонента).

После нахождения уязвимого компонента, его можно обновить до безопасной версии, заменить на другой или добавить в код необходимые проверки. Подробнее эта тема разобрана в документации к правилу V5625, которое является реализацией функционала SCA в анализаторе PVS-Studio.

Популярные статьи по теме


Комментарии (0)

Следующие комментарии next comments
close comment form
close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

Шаг 2
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности
close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Бесплатная лицензия PVS‑Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок:

  • Промоакции
  • Оповещения
  • Спам