В рамках исследования и отслеживания угроз группа Supply Chain Security департамента Threat Intelligence экспертного центра Positive Technologies (PT ESC) обнаружила и предотвратила вредоносную кампанию в главном репозитории пакетов Python Package Index (PyPI). Атака была нацелена на разработчиков, ML-специалистов и простых энтузиастов, которым могла быть интересна интеграция DeepSeek в свои системы.

Репозиторий пакетов PyPI используется по умолчанию в пакетных менеджерах pip, pipenv, poetry.

Цепочка атаки

Злоумышленник, создавший учетную запись bvk в июне 2023 года и до этого не проявлявший активности, зарегистрировал вредоносные пакеты deepseeek и deepseekai 29 января 2025 года.

Рисунок 1. Скриншот страницы пользователя bvk (Vamsi)
Рисунок 1. Скриншот страницы пользователя bvk (Vamsi)

Функции найденных пакетов направлены на сбор данных о пользователе, его компьютере и кражу переменных окружения после установки пакетов. Вредоносная функциональность выполняется при вызове консольных команд deepseeek или deepseekai, в зависимости от установленного пакета. Переменные окружения часто содержат конфиденциальные данные, необходимые для работы приложений, например API-ключи для S3-хранилища, учетные данные для баз данных и доступы к другим инфраструктурным ресурсам.

Рисунок 2. Регистрация консольной команды deepseekai одноименным пакетом
Рисунок 2. Регистрация консольной команды deepseekai одноименным пакетом
Рисунок 3. Вредоносная нагрузка пакетов
Рисунок 3. Вредоносная нагрузка пакетов

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

Примечательно, что код создан с использованием ИИ-ассистента, на что указывают характерные комментарии, объясняющие строки кода.

Мы оперативно уведомили администраторов PyPI, пакеты уже удалены. Несмотря на быструю реакцию, пакет успели скачать 36 раз пакетным менеджером pip и средством зеркалирования bandersnatch и 186 раз — при помощи браузера, библиотеки requests и других средств.

Рисунок 4. Страница проекта deepseekai, уже под карантином
Рисунок 4. Страница проекта deepseekai, уже под карантином

Хронология атаки (UTC+0):

Время

Событие

1/29/25 15:52

Опубликован пакет deepseeek 0.0.8

1/29/25 16:13

Опубликован пакет deepseekai 0.0.8

1/29/25 16:21

В рамках нашего репорта оба пакета отправлены в карантин и недоступны для скачивания через менеджеры пакетов

1/29/25 16:41

Администрация PyPI удалила пакет deepseeek и уведомила нас

1/29/25 16:42

Администрация PyPI удалила пакет deepseekai и уведомила нас

Список скачиваний (по данным PyPI):

Страна

Способ скачивания

Количество

США

Браузер

33

requests

19

pip

8

bandersnatch

2

Иной

55

Китай

bandersnatch

8

pip

6

Браузер

4

Иной

18

Россия

Браузер

3

requests

1

Иной

8

Гонконг

pip

4

Браузер

4

bandersnatch

2

requests

1

Германия

bandersnatch

4

requests

4

Браузер

2

Канада

Браузер

3

requests

2

Швейцария

requests

3

Браузер

2

Хорватия

Браузер

4

Швеция

requests

4

Польша

Браузер

2

Великобритания

Браузер

2

Ирландия

Иной

2

Норвегия

Браузер

2

Сингапур

bandersnatch

2

Франция

requests

2

Украина

Браузер

1

Саудовская Аравия

Браузер

1

Заключение

Хакеры всегда следят за современными трендами и в нужный момент могут подсуетиться, используя хайп в своих целях. В этом кейсе мы разобрали достаточно безобидную атаку. Впрочем, из-за ажиотажа вокруг сервиса DeepSeek она могла бы привести к большему количеству жертв, если бы вредоносная активность пакета дольше оставалась незамеченной.

Эти пакеты были выявлены с помощью сервиса для выявления подозрительных и вредоносных пакетов PT PyAnalysis. Сервис анализирует на предмет нежелательной активности новые релизы, создаваемые пользователями PyPI, в режиме реального времени.

Рекомендуем проявлять бдительность в отношении ранее неизвестных вам пакетов, которые выдают себя за обертки для популярных сервисов.

IoCs

IoC

Тип

deepseeek

пакет PyPI

deepseekai

пакет PyPI

eoyyiyqubj7mquj.m.pipedream.net

C2

Комментарии (0)