GitLab обнаружила кампанию по краже криптовалюты Bittensor через поддельные пакеты PyPI

information security

Команда исследования уязвимостей GitLab выявила целенаправленную атаку на экосистему Bittensor с использованием поддельных пакетов в репозитории Python Package Index (PyPI). Злоумышленники создали типосквоттинг-версии популярных библиотек Bittensor, чтобы перехватывать криптовалютные средства пользователей при операциях стейкинга.

Описание

Как работала атака?

Аналитики GitLab обнаружили пять вредоносных пакетов, опубликованных в PyPI 6 августа 2025 года в течение 25 минут. Среди них были bitensor, bittenso-cli, qbittensor и другие вариации, имитирующие официальные библиотеки bittensor и bittensor-cli, которые используются в децентрализованной сети искусственного интеллекта Bittensor.

Главным инструментом атаки стало внедрение вредоносного кода в функцию stake_extrinsic, расположенную в файле bittensor_cli/src/commands/stake/add.py. Вместо перевода токенов на стейкинг-контракт код автоматически отправлял все средства на заранее указанный кошелёк злоумышленников:

Код был настроен так, чтобы:

  • Не запрашивать подтверждение (prompt=False), скрывая кражу от пользователя.
  • Полностью опустошать кошелёк (transfer_all=True), забирая не только сумму для стейкинга, но и все доступные средства.
  • Перенаправлять средства на фиксированный адрес атакующего.

Почему злоумышленники выбрали стейкинг?

Стейкинг - процесс блокировки криптовалюты для поддержки работы блокчейна с получением вознаграждения - стал идеальной мишенью по нескольким причинам:

  • Высокая ценность активов: Пользователи, участвующие в стейкинге, обычно хранят значительные суммы.
  • Доступ к кошельку: Для стейкинга необходима авторизация, что даёт вредоносному коду доступ к средствам.
  • Ожидаемые транзакции: Поскольку стейкинг подразумевает переводы, аномальная активность не вызывает подозрений сразу.

Траектория перемещения украденных средств

GitLab отследила путь украденных средств:

  1. Первоначальное получение: Все средства поступали на адрес 5FjgkuPzAQHax3hXsSkNtue8E7moEYjTgrDDGxBvCzxc1nqR.
  2. Распределение: Деньги перемещались через несколько промежуточных кошельков, включая 5HpsyxZKvCvLEdLTkWRM4d7nHPnXcbm4ayAsJoaVVW2TLVP1 и 5GiqMKy1kAXN6j9kCuog59VjoJXUL2GnVSsmCRyHkggvhqNC.
  3. Консолидация: В конечном итоге средства сводились к адресу 5D6BH6ai79EVN51orsf9LG3k1HXxoEhPaZGeKBT5oDwnd2Bu.

Стратегия типосквоттинга

Злоумышленники использовали классический метод типосквоттинга, рассчитывая на ошибки разработчиков при установке пакетов через *pip install*. Например:

  • bitensor вместо bittensor (пропущена буква t).
  • bittenso вместо bittensor (пропущена последняя r).
  • Использование версий (9.9.4, 9.9.5), схожих с актуальными релизами оригинальных пакетов.

Выводы и рекомендации

GitLab оперативно удалила вредоносные пакеты из PyPI, однако инцидент подчёркивает важность проверки источников устанавливаемых зависимостей. Разработчикам рекомендуется:

  • Внимательно проверять названия пакетов при установке.
  • Использовать проверенные репозитории и инструменты сканирования уязвимостей.
  • Отключать автоматическое подтверждение транзакций в кошельках.

GitLab продолжает мониторинг угроз в цепочке поставок ПО, чтобы предотвратить подобные атаки в будущем. Полный технический отчёт доступен в блоге компании.

Индикаторы компрометации

Malicious PyPI package

  • pkg:pypi/bitensor@9.9.4
  • pkg:pypi/bitensor@9.9.5
  • pkg:pypi/bittenso@9.9.5
  • pkg:pypi/bittenso-cli@9.9.4
  • pkg:pypi/qbittensor@9.9.4

Bittensor (TAO) wallet address

  • 5FjgkuPzAQHax3hXsSkNtue8E7moEYjTgrDDGxBvCzxc1nqR
Комментарии: 0