Создатели репозитория Python Package Index (PyPI) ненадолго приостановили регистрацию новых пользователей в связи с наплывом вредоносных проектов, загруженных в рамках кампании по борьбе с опечатками. По словам репозитория, «создание новых проектов и регистрация новых пользователей» были временно приостановлены для борьбы с «кампанией по загрузке вредоносного ПО». Инцидент был устранен через 10 часов, 28 марта 2024 года, в 12:56 по UTC.
Компания Checkmarx, специализирующаяся на безопасности цепочек поставок программного обеспечения, заявила, что неизвестные угрожающие субъекты, которые наводнили репозиторий, нацелились на разработчиков с опечатанными версиями популярных пакетов.
«Это многоступенчатая атака, и вредоносная полезная нагрузка была направлена на кражу криптовалютных кошельков, конфиденциальных данных из браузеров (куки, данные расширений и т. д.) и различных учетных данных», — заявили исследователи Иегуда Гелб, Джоссеф Харуш Кадури и Цачи Зорнстайн. «Кроме того, вредоносная полезная нагрузка использовала механизм персистенции, чтобы пережить перезагрузку».
Результаты исследования также были подтверждены независимой компанией Mend.io, которая отметила, что обнаружила более 100 вредоносных пакетов, нацеленных на библиотеки машинного обучения (ML), такие как Pytorch, Matplotlib и Selenium.
Эта разработка появилась на фоне того, что репозитории с открытым исходным кодом все чаще становятся вектором атак для проникновения угроз в корпоративные среды.
Тайпсквоттинг PyPI
Тайпсквоттинг — это хорошо задокументированная техника атаки, при которой злоумышленники загружают пакеты с названиями, очень похожими на их легитимные аналоги (например, Matplotlib против Matplotlig или tensorflow против tensourflow), чтобы обманом заставить ничего не подозревающих пользователей загрузить их.
Эти обманные варианты — в общей сложности более 500 пакетов, по данным Check Point, — были загружены с уникальной учетной записи, начиная с 26 марта 2024 года, что позволяет предположить, что весь процесс был автоматизирован.
«Децентрализованный характер загрузок, когда каждый пакет приписывается разным пользователям, затрудняет попытки перекрестной идентификации этих вредоносных записей», — заявили в израильской компании по кибербезопасности.
Компания Phylum, занимающаяся кибербезопасностью и отслеживающая эту кампанию, сообщила, что злоумышленники опубликовали
- 67 вариантов требований
- 38 вариантов Matplotlib
- 36 вариаций запросов
- 35 вариаций colorama
- 29 вариаций tensorflow
- 28 вариаций selenium
- 26 вариаций BeautifulSoup
- 26 вариаций PyTorch
- 20 вариантов pillow
- 15 вариантов asyncio
Пакеты, в свою очередь, проверяли, является ли операционная система установщика Windows, и если да, то загружали и выполняли обфусцированную полезную нагрузку, полученную с контролируемого домена («funcaptcha[.]ru»). Вредоносная программа работает как похититель, переправляя файлы, токены Discord, а также данные из веб-браузеров и криптовалютных кошельков на один и тот же сервер. Далее он пытается загрузить Python-скрипт («hvnc.py») в папку запуска Windows для сохранения.
Эта разработка в очередной раз иллюстрирует растущий риск, связанный с атаками на цепочки поставок программного обеспечения, что заставляет разработчиков тщательно проверять каждый компонент сторонних разработчиков на предмет защиты от потенциальных угроз.
Это не первый раз, когда PyPI прибегает к подобным мерам. В мае 2023 года он временно отключил регистрацию пользователей, обнаружив, что «объем вредоносных пользователей и вредоносных проектов, созданных в индексе за последнюю неделю, превысил нашу способность своевременно реагировать на них». PyPI приостановил регистрацию новых пользователей в прошлом году 27 декабря по аналогичным причинам. Впоследствии она была отменена 2 января 2024 года.