В последний год злоумышленники стали активно интересоваться открытым ПО1. Доставка вредоносного кода через сторонние зависимости стала одним из способов заражения.
Positive Technologies создала инструмент PT PyAnalysis для выявления подозрительных и вредоносных Python-пакетов2 и открывает сбор заявок на ранний доступ к новому сервису. Поскольку Python-пакеты используются большинством разработчиков, им придется внимательно изучать внешние зависимости и встраивать механизм их анализа в процесс разработки. Кроме того, в ходе исследования репозитория PyPI, которое длилось восемь месяцев, эксперты компании обнаружили 175 вредоносных пакетов, причем часть из них находилась там с 2018 года.
Эксперты PT обнаружили в найденных пакетах различные типы или следы вредоносного ПО:
- стилеры (stealer) — вредоносное программное обеспечение для кражи паролей пользователей (63%);
- бэкдоры (backdoor) — ПО, с помощью которого злоумышленники могут незаметно дистанционно управлять устройством жертвы (20%);
- программы-загрузчики (downloader) — используются для загрузки вредоносного ПО на компьютер жертвы (6%);
- нежелательную для пользователя активность, например назойливые уведомления или удаление учетной записи Telegram (8%);
- proof of concept вредоносного ПО без вредоносной активности, разрушительных действий или краж (2%);
- программы-вымогатели (1%).
Разработчики загружают пакеты в свое программное обеспечение, что позволяет злоумышленнику атаковать пользователей этого ПО. Исследование также выявило, что средняя продолжительность жизни вредоносного пакета до его удаления — 13 дней. Это достаточный срок для заражения компьютера пользователя. Чаще всего пакеты маскируются под легитимные и используются для кражи данных.
Сегодня создать репозиторий с незанятым именем на pypi.org для хранения Python-пакетов может любой желающий. У администраторов есть система Malware Checks, но ее правила обнаружения лежат в исходном коде проекта, и обойти их достаточно просто. Сама система при этом не является блокирующей: сигналы приходят на почту администраторам, после чего происходит проверка кода пакета и принимается решение о блокировке.
Злоумышленники используют различные техники, связанные с компрометацией разработчиков, имитацией легитимных пакетов и обфускацией3 . Со временем их действия становятся все более эффективными и незаметными. Чтобы построить полноценную систему защиты от таких угроз, требуется привлечь специалистов по анализу вредоносного кода.
Новая система PyAnalysis компании Positive Technologies отличается максимальной автоматизацией, и в этом ее уникальность: через API пользователи могут отправить название Python-пакета на проверку и получить оценку его опасности (clean, suspicious, malicious). Экспертиза в области анализа вредоносного кода не требуется. Система не только выдает ясный вердикт, но и объясняет, почему тот или иной пакет является вредоносным.
«Когда разработчик загружает пакет в свое программное обеспечение, то не подозревает, что он заражен и злоумышленник получает возможность атаковать пользователей этого ПО. Именно поэтому наша система проверки Python-пакетов из репозитория PyPI работает по модели as a service: каждый может протестировать ее в своем процессе безопасной разработки. На этапе тестирования использование этой системы будет бесплатным. Мы ожидаем, что Python-разработчики и специалисты по безопасной разработке оценят PT PyAnalysis и поделятся с нами своими замечаниями, чтобы мы смогли улучшить этот сервис и сделать его удобным для всех», — отметил Максим Долгинин, руководитель по развитию направления по работе с данными о киберугрозах, Positive Technologies.
Оставить заявку на доступ к сервису можно на странице PT PyAnalysis.
20 декабря 2022 года прошел вебинар, на котором эксперты компании — руководитель отдела исследования угроз ИБ Денис Кувшинов и специалист отдела Станислав Раковский — рассказали о том, как защититься от вредоносных Python-пакетов, и ответили на вопросы участников.
- По данным ReversingLabs, с января по октябрь 2022 года в популярный репозиторий с открытым исходным кодом было загружено около 7000 вредоносных пакетов — на 40% больше, чем 2021 году.
- По данным отчета TIOBE за декабрь 2022, Python является самым распространенным языком программирования.
- Изменение кода программы, в результате которого он приобретает трудный для понимания вид, при этом программа сохраняет свои функции.