Современное криптопространство становится все более привлекательной мишенью для злоумышленников, использующих изощренные методы для хищения средств пользователей. В начале июля 2025 года команда безопасности SlowMist получила обращение от пострадавшего, у которого были украдены криптоактивы. Расследование показало, что причиной инцидента стало использование открытого проекта на GitHub - solana-pumpfun-bot, который содержал скрытый механизм кражи средств.
Описание
Последующий анализ показал, что этот случай не единичный. Еще один пользователь стал жертвой после использования похожего проекта - pumpfun-pumpswap-sniper-copy-trading-bot. В обоих случаях злоумышленники внедряли вредоносный код, маскируя его под легитимный функционал.
В рамках технического анализа команда SlowMist изучила структуру проекта и выявила подозрительные элементы в конфигурационном файле /src/common/config.rs. Основное внимание привлек метод create_coingecko_proxy(), который, на первый взгляд, был связан с получением данных о ценах. Однако при детальном рассмотрении выяснилось, что этот метод сначала вызывает функцию import_wallet(), которая, в свою очередь, обращается к import_env_var() для извлечения приватного ключа из файла .env.
Если ключ не найден или его длина меньше 85 символов, программа входит в бесконечный цикл, что приводит к исчерпанию ресурсов и невозможности завершить работу. Однако если ключ соответствует условиям, он кодируется в Base58 и передается в объект Keypair из Solana SDK.
Затем зловредный код декодирует зашифрованный URL-адрес сервера злоумышленника, который хранится в переменной HELIUS_PROXY. После декодирования выяснилось, что используется IP 103.35.189.28 (США), на который отправляется POST-запрос с приватным ключом пользователя в формате JSON. Важно отметить, что ответ сервера игнорируется, чтобы не вызывать подозрений у жертвы.
Дополнительный анализ показал, что исходный код проекта недавно обновлялся (17 июля 2025 года), причем изменения касались именно конфигурационного файла. В частности, зашифрованная строка HELIUS_PROXY была заменена на новую. Декодирование старой версии показало, что ранее использовался другой сервер - https://storebackend-qpq3.onrender.com/api/wallets.
Для подтверждения вредоносного поведения SlowMist провела динамический анализ. Специалисты сгенерировали тестовую пару ключей Solana и развернули локальный сервер для перехвата запросов. После модификации кода проекта и подмены HELIUS_PROXY на адрес тестового сервера было зафиксировано, что программа действительно отправляет приватный ключ в открытом виде.
Эта атака демонстрирует, насколько опасным может быть использование непроверенных открытых репозиториев. Злоумышленники активно маскируют вредоносный функционал под легитимные операции, чтобы обойти подозрения пользователей. В данном случае вредоносный код был встроен в конфигурационный файл, который обычно остается без внимания при поверхностной проверке.
Подобные инциденты подчеркивают необходимость тщательного аудита кода перед использованием сторонних решений, особенно в сфере криптовалют, где риски потери средств крайне высоки. SlowMist продолжает мониторинг подобных угроз и планирует опубликовать дополнительные рекомендации по выявлению и предотвращению подобных атак.
Пользователям рекомендуется проявлять особую осторожность при работе с открытыми проектами, особенно если они связаны с управлением криптовалютами. Даже небольшая невнимательность может привести к необратимым последствиям.
Индикаторы компрометации
IPv4
- 103.35.189.28
Domains
- pumpfun-pumpswap-sniper-copy-trading-bot-master.zip
- storebackend-qpq3.onrender.com
URLs
- https://github.com/0xTan1319/solana-copytrading-bot-rust
- https://github.com/Alemoore/Solana-MEV-Bot-Optimized
- https://github.com/audiofilter/pumpfun-pumpswap-sniper-copy-trading-bot
- https://github.com/BitFancy/Solana-MEV-Bot-Optimized
- https://github.com/blacklabelecom/SAB-4
- https://github.com/deniyuda348/Solana-Arbitrage-Bot-Flash-Loan
- https://github.com/FaceOFWood/SniperBot-Solana-PumpSwap
- https://github.com/TopTrenDev/Raypump-Executioner-Bot
SHA256
- 07f0364171627729788797bb37e0170a06a787a479666abf8c80736722bb79e8
- ace4b1fc4290d6ffd7da0fa943625b3a852190f0aa8d44b93623423299809e48