MaSCA. Анализ уязвимостей и НДВ в библиотеках с открытым исходным кодом
Отечественное решение по анализу уязвимостей в компонентах с открытым исходным кодом (Software composition analysis - SCA)
Разновидности решений SCA
SCA – предназначено для обнаружения известных уязвимостей и НДВ в программном
обеспечении с открытым исходным кодом (open source).
Доля использования open source компонент в разрабатываемых проектах
составляет в среднем 70% общей кодовой базы, иногда более.
Существуют бесплатные SCA решения и проприетарные.
Бесплатные решения используют национальную базу данных
уязвимостей США (NVD) и др открытые базы данных.
Проприетарные решения (Whitesource, Sonatype, Snyk и пр.) кроме NVD,
имеют собственные команды анализа уязвимостей и собственные БД
уязвимостей. Платные БД доступны при покупке их решений. Скорость добавления
уязвимостей в бесплатные продукты и в проприетарные разная, что и
обеспечивает существование рынка платных решений.
В России существует аналог NVD – БДУ ФСТЭК. Из проприетарных
решений, SCA есть в продуктах Positive Technologies для безопасности
приложений, которое в свою очередь также опираются на бесплатные утилиты
с информацией из американской БД.
Последние события показали, что в настоящий момент в open source
компоненты могут добавляться недокументированные возможности (НДВ) и
вредоносное программное обеспечение по политическим и иным
соображениям (на основе IP-адреса машины и прочих метаданных).
Полагаться, что такие проблемы будут оперативно оповещаться в NVD из
США точно не стоит, поэтому необходимо решение, которое будет
фиксировать факты НДВ. Также скорость добавления уязвимостей в
бесплатные утилиты не позволяет оперативно исправлять возникающие
уязвимости.
Решение проблемы
Решением может стать отечественный SCA, который будет
минимизировать такие политические риски в open source компонентах.
Предлагается следующая стратегия:
1. Определить основные используемые в российском государственном и
бизнес сегменте библиотеки с открытым исходным кодом.
2. Выбрать основные языки программирования, которые первостепенно
важны для поиска уязвимостей и НДВ. На первом этапе это могут быть:
Java, Python, JavaScript, C++, S#.
3. Поиск уязвимостей первоначально опирается на информацию из
открытых баз данных уязвимостей (NVD, БДУ, OSS и пр.).
4. Для выбранных критичных библиотек проводится анализ новых версий
библиотеки на предмет добавления НДВ и вредоносного кода (ручной
анализ, анализ антивирусным ПО).
5. Утилита доступна локально по отношению к папке с исходными кодами
проверяемого приложения.
6. Доступна интеграция в сборочный конвейер CI/CD для автоматизации
процесса проверки.
7. Веб интерфейс для отображения результатов сканирования и
менеджмента уязвимостей и НДВ.
Следующие этапы развития продукта
На следующих этапах развития решения необходимо приобретение
компетенций по собственным командам аналитиков по поиску уязвимостей,
что позволит решению конкурировать с платными вендорами на доступных
внешних рынках. Также в процессе приобретения компетенций и
автоматизации процессов следует расширять число доступных библиотек для
анализа и языков программирования (Golang, Kotlin, Swift пр.)
