Руководитель
направления безопасности Open Source в ГК Swordfish Security
По данным «Лаборатории Касперского», на сегодняшний день существует более 20 тысяч потенциально опасных пакетов с открытым исходным кодом. Примерно 42 тысячи уязвимостей содержатся в библиотеках, фреймворках и приложениях, размещенных в популярных репозиториях. Многие из этих компонентов и вовсе являются вредоносными и несут в себе серьезную угрозу как для разработчиков, которые могут случайно загрузить и установить их на свою машину, так и для компании, в периметре которой ведется разработка, сборка и эксплуатация с их использованием. В данной статье, поговорим о том, как защититься от опасностей такого рода и не стать жертвой злоумышленников.
ПО с открытым исходным кодом широко используется в разработке в том числе и коммерческих проектов. Это позволяет сократить одну из важных характеристик любого бизнеса – Time-To-Market. При этом разработчики имеют возможность адаптации таких программ и компонентов под свои нужды, внесения изменений и включения их в состав собственных приложения без ограничений (конечно, с учетом политики лицензирования).
При этом открытый код компонентов доступен и злоумышленникам, что несет в себе риски информационной безопасности, с которыми предстоит столкнуться разработчикам. Вредоносное ПО в репозиториях с открытым исходным кодом почти всегда наносит ущерб продукту и пользователям. Например, в 2023 году злоумышленники замаскировали 27 пакетов под популярные библиотеки Python с помощью тайпсквоттинга (регистрация пакета с именем, содержащим опечатку) и в течение 6 месяцев размещали их в хранилище каталога PyPI. Таким образом преступники заражали машины разработчиков вредоносным ПО, что позволяло им получить конфиденциальные данные и доступ к криптовалютным кошелькам жертв, среди которых были пользователи из России.
Посредством встроенного в ПО с открытым кодом вредоносного содержимого (malware) можно не только похищать финансовые средства, но и выполнять мошеннические действия благодаря украденной информации. Как итог – не только потерянные средства и данные, но и доверие клиентов, а также внушительный ущерб репутации.
Российские компании на фоне ухода зарубежных вендоров и геополитической обстановки атакуются сегодня особенно часто. Поэтому необходимо быть крайне внимательными, используя ПО с открытым исходным кодом.
Обычно разработчики (и все остальные) могут получить информацию о новых уязвимостях из новостных рассылок, специализированных инструментов или даже некоторых инструментов разработки (к примеру, сборщик npm может подсветить факт наличия уязвимого пакета сборки). Однако часто проблемам безопасности не уделяется должного внимания, разработчики заняты реализацией нового функционала, а не тщательным выбором компонентов для разработки и проверкой их на безопасность. К тому же есть не только прямые зависимости (компоненты, которые использует сам разработчик), а ещё и транзитивные (компоненты, от которых зависят прямые), счет которых в среднем проекте может доходить до нескольких тысяч. Отслеживать это в ручном режиме становится невозможным и, к тому моменту, когда обнаруживается опасность, уязвимые компоненты может уже попасть в контур разработки или состав разрабатываемых приложений и нанести ущерб.
Существующие неспециализированные решения слабо защищают разработчиков от вредоносного ПО, встраиваемое в библиотеки с открытым исходным кодом. А потому им стоит предпринимать дополнительные шаги для обеспечения безопасности продуктов.
Сегодня мы находимся в условиях, когда атаки на цепочку поставок ПО (Supply-Chain), в том числе и через использование компонентов с открытым исходным кодом, стали одним из наиболее популярных векторов атаки для злоумышленников. В связи с этим сканирование свободно распространяемых библиотек и приложений становится обязательным. Чтобы разработчики были защищены от атак в цепочке поставок программного обеспечения, важно следовать современным практикам безопасности.
Один
из способов решения проблемы – внимательное изучение скачиваемого пакета и
выявление характеристик, которые свойственны вредоносному ПО. Так, перед каждым
новым релизом разработчики должны проверить:
Конечно, если подозрительным выглядит один из пунктов, это еще не свидетельствует о наличии проблем. Например, надежный проект может быть выпущен вне своего обычного графика. Но если сразу несколько пунктов выглядят подозрительными, это повод задуматься и сделать вывод о том, что пакет, вероятно, небезопасен или вредоносен.
Этот вид анализа можно сравнить с тем, как ищут мошенников в банке. Изучая особенности покупок клиента, можно составить его поведенческий профиль. Платежный сервис отслеживает его и реагирует на отклонения от стандартных действий. Например, банк может посчитать подозрительным использование кредитной карты в отдаленной части страны, которую клиент никогда не посещал, или массовую скупку дорогостоящих вещей, не свойственную для владельца карты.
По такой аналогии можно анализировать и вредоносное ПО. В этом случае необходимо составить поведенческий профиль разрабатываемого приложения. И контролировать его изменение во время добавления новых зависимостей, проведения автотестов или непосредственной работы приложения. Изменение поведения может сигнализировать о наличии вредоносной активности, как автоматической, запускаемой без непосредственного участия злоумышленника, так и о происходящей атаке в режиме реального времени. Если мониторить активность приложения на ранних этапах разработки ПО, то можно отследить и пресечь появления нежелательных компонентов в его составе до того, как оно попадет в рабочую среду.
Многие организации используют процесс ручного одобрения всех используемых в разработке компонентов с помощью их анализа командой безопасности. Это надежный механизм, однако команда безопасности в таком случае становится бутылочным горлышком и испытывает трудности с масштабированием усилий по предотвращению появления вредоносного ПО в связи с огромным количеством доступных компонентов. Это приводит к необходимости использования автоматизированных инструментов класса OSA/SCA (Open Source Analysis и Software Composition Analysis) для контроля наличия уязвимостей и вредоносного содержимого внутри используемых компонентов и ПО. Например, сервис AppSec.Track проводит не только глубокий анализ Open Source-компонентов на наличие проблем безопасности, но и предоставляет полную информацию об уровне угрозы и рекомендации по устранению.
Защита разработчиков от вредоносного ПО является важной задачей для компаний и организаций любого размера. Это требует комплексного подхода, включающего технические, организационные и образовательные меры. Только через постоянные обновления и соблюдение необходимых мер безопасности можно добиться эффективной защиты специалистов и их рабочих процессов от вредоносного ПО. Это позволит выпускать качественное программное обеспечение и делать это в установленные сроки.
Нажимая на кнопку, я даю Согласие на обработку персональных данных в соответствии с Политикой обработки.
Зарегистрироваться