(Не)безопасная разработка: как выявить вредоносный Python-пакет в открытом ПО

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Открытое ПО сегодня привлекает повышенное внимание с разных сторон — разработки, бизнеса, технологий. Естественно, и его безопасность стоит отдельным вопросом, ведь злоумышленники также активно интересуются open source и создают угрозы для безопасной разработки. Доставка вредоносного кода через сторонние зависимости стала одним из опасных способов заражения. По нашим прогнозам, этот тренд будет только усиливаться.

Основные источники такого ВПО — репозитории с пакетами для разработки, в частности PyPI и npm. В них содержатся стилеры учетных записей, данных банковских карт и криптовалюты. В 2022 году, впервые в истории open source, киберпреступная группировка LofyGang использовала публичный npm-репозиторий для хранения своего ВПО. Исследователи обнаружили около 200 вредоносных npm-пакетов, с помощью которых злоумышленники похищали учетные и банковские данные, а затем продавали эту информацию в даркнете. Это первый, но наверняка не последний случай, когда именно организованная киберпреступная группировка использовала открытый код репозитория для хранения и распространения ВПО.

В сложившейся ситуации, ввиду развития тренда, уже недостаточно просто искать вредоносный код: его нужно анализировать и прорабатывать возможные интеграции с другим ВПО, связи между контрольными серверами и т. п. Соответственно, к этому нужно привлекать вирусных аналитиков и специалистов по threat intelligence. Именно поэтому наша команда заинтересовалась поиском угроз в публичных репозиториях и разработкой системы для оперативного выявления вредоносов. В нее мы вложили весь наш опыт исследования ВПО, атрибуции — всего, с чем мы сталкивались в процессе изучения APT-группировок. В итоге мы создали систему PT PyAnalysis, которую можно встроить в процесс безопасной разработки.

Поиск уязвимостей в коде занимает особое место в процессе безопасной разработки. В то же время выявлению вредоносного кода во внешних зависимостях должного внимания пока не уделяется. Сторонние пакеты из популярных репозиториев (GitHub, GitLab, PyPI, npm) используют большинство компаний как у себя внутри, так и при разработке продуктов для клиентов. Отсутствие процесса проверки наличия вредоносного кода во внешних зависимостях может привести к инцидентам информационной безопасности. В самом простом варианте у разработчика просто украдут личную информацию (аккаунты, пароли, данные карт и т. п.). При худшем сценарии может получиться, что вредоносный код уедет на прод и клиенты получат «приятное» обновление. Такой тип атак называется атаками на цепочку поставок.

К примеру, в марте 2022 года в npm-пакет node-ipc сам разработчик залил код с политическими лозунгами. А еще там был код вайпера, который удалял все файлы, если запускался на устройстве с российского или белорусского IP. Для нас этот случай стал отправной точкой в исследовании. Нас интересовал вопрос, какие угрозы могут скрываться в публичных репозиториях и как их можно обнаружить. Мы решили начать с репозитория PyPI, так как все инструменты и системы, которыми пользуемся сами в PT Expert Security Center, мы пишем на Python. Забегая вперед, скажем, что в ходе проведенного исследования мы обнаружили более 200 вредоносных пакетов, которые зарепортили админам, и большинство из них было удалено.

Результаты исследования репозитория PyPI

В течение 2022 года ежедневно появлялось около 3 тысяч Python-пакетов.

Суточная статистика новых пакетов в репозитории PyPI
Суточная статистика новых пакетов в репозитории PyPI

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

Среди способов (техник) компрометации можно выделить используемые и гипотетические:

  • тайпсквоттинг (использование опечаток и названий, похожих на легитимные пакеты);

  • заимствование названия ранее удаленного пакета;

  • фишинговые атаки на разработчиков;

  • starjacking — накрутка репутации проекта;

  • вредоносный пакет в зависимостях;

  • «левые» гайды по вредоносным пакетам (гипотетический).

Создать репозиторий с незанятым именем на pypi.org для хранения Python-пакетов сегодня может любой желающий. Здесь нет ограничений по корпоративной почте, наличию прокаченного аккаунта на GitHub или другим критериям добросовестного разработчика.

Стоит отметить, что у PyPI есть система выявления вредоносного кода Malware Checks, но ее правила детектирования лежат в исходном коде проекта, и обойти их достаточно просто. Сама система при этом не является блокирующей: сигналы приходят на почту администраторам, после чего они проверяют код пакета и принимают решение о блокировке.

В рамках нашего исследования за десять месяцев начиная с прошлого года мы обнаружили более 200 вредоносных пакетов, причем часть из них находилась там еще с 2018-го. Это в два с лишним раза больше, чем заявляли другие аналитики и компании, публикующие об этом отчеты. Для сравнения, компания Sonatype рассказывала только о цифра получена путем изучения новостей в блоге компании</p>" data-abbr="53 пакетах">53 пакетах.

В найденных нами пакетах были обнаружены различные типы и следы вредоносного ПО: стилеры (63%) и бэкдоры (20%), нежелательная для пользователя активность (8%), программы-загрузчики (6%), proof of concept вредоносного ПО без вредоносной активности, разрушительных действий или краж (2%) и программы-вымогатели (1%).

Результаты исследования Positive Technologies
Результаты исследования Positive Technologies

Мы также установили, что средняя продолжительность жизни вредоносного пакета до его удаления — 13 дней. Это достаточный срок для того, чтобы пользователь сервиса скачал и установил этот пакет и тем самым заразил свой компьютер.

Как выявить вредоносный Python-пакет

Проанализировав репозиторий PyPI, мы подумали — почему бы все разработанные под это дело инструменты не преобразовать в систему с веб- и API-интерфейсами? Полученный MVP мы представили нашим DevSecOps, и они встроили его в процесс безопасной разработки Positive Technologies.

Спустя несколько месяцев тестов и фиксов мы решили выпустить нашу систему в паблик. Сама система состоит из трех элементов: веб-интерфейса, API (реализован SDK) и документации по правилам.

Документация по правилам
Документация по правилам
Веб-интерфейс
Веб-интерфейс

В самом интерфейсе можно прогуляться по релизам проекта, посмотреть, что происходило внутри него (выпуск релиза, смена владельца, удаление) и посмотреть вердикты для различных компонентов.

Пример таймлайна проекта
Пример таймлайна проекта
Состав релиза и вердикты для компонентов
Состав релиза и вердикты для компонентов

Можно посмотреть и исходный код компонентов релиза.

Страница с данными компонента релиза
Страница с данными компонента релиза

Система отличается максимальной автоматизацией: пользователи могут отправить название Python-пакета на проверку через API и получить оценку его опасности: clean, suspicious, malicious. Наш инструмент не только выдает вердикт, но и объясняет, почему тот или иной пакет является вредоносным.

Пример API-запроса и ответа
Пример API-запроса и ответа

PT PyAnalysis работает по модели as a service: Python-разработчики и специалисты по безопасной разработке могут воспользоваться услугой бесплатно, чтобы протестировать ее в своем пайплайне и оценить качество инструмента. Регистрироваться лучше с корпоративной почты; в других случаях стоит указать, для чего нужен доступ.

Сейчас система находится в состоянии MVP, но мы активно ее дорабатываем. Замечания первых пользователей будут учтены, чтобы улучшить сервис и сделать его более удобным. Мы будем поддерживать и развивать систему, делиться новостями об интересных техниках и находках с комьюнити. Ближайший roadmap по разработке выглядит так:

В дальнейшем мы планируем добавить анализ npm и Docker Hub. 

Чтобы узнать больше о проблеме доставки вредоносного кода через сторонние зависимости и возможностях PT PyAnalysis, вы можете посмотреть наш вебинар.


Источник: https://habr.com/ru/company/pt/blog/715754/


Интересные статьи

Интересные статьи

На прошлой неделе эксперты «Лаборатории Касперского» опубликовали подробный отчет о вредоносной программе MoonBounce. MoonBounce является буткитом: код внедряется в прошивку UEFI и таким образом может...
Привет, Хабр! Меня зовут Андрей Демин, я CEO проекта Tada.team. Сегодня я хотел бы поговорить о нюансах нашей работы над собственной платформой. Она представляет собой гибрид мессенджера и таск-трекер...
Всем привет! Продолжаем дайджесты новостей и других материалов о свободном и открытом ПО и немного о железе. Всё самое главное про пингвинов и не только, в России и мире. Главные темы нового выпус...
Итак, вы делаете свою игру, добавляете новые функции и тестируете их. Да, получается совсем неплохо. Но чего-то не хватает — игра слишком тихая. Вам нужна музыка. Разумеется, можно найти и скач...
Бизнес-смыслы появились в Битриксе в начале 2016 года, но мало кто понимает, как их правильно использовать для удобной настройки интернет-магазинов.