В екосистемі Solana знову з'явились зловмисні боти: конфігураційний файл приховує пастку для крадіжки Закритий ключ
На початку липня 2025 року користувач звернувся до команди безпеки Slow Mist за допомогою, просячи проаналізувати причини крадіжки своїх криптоактивів. Під час розслідування було виявлено, що інцидент стався через те, що користувач скористався хостингом на GitHub відкритим проектом zldp2002/solana-pumpfun-bot, що викликало приховану крадіжку активів.
Нещодавно, ще кілька користувачів через використання схожих відкритих проектів audiofilter/pumpfun-pumpswap-sniper-copy-trading-bot втратили свої криптоактиви та звернулися до команди безпеки Slow Mist. У зв'язку з цим команда провела глибокий аналіз.
Процес аналізу
Статичний аналіз
За допомогою статичного аналізу виявлено підозрілий код у файлі конфігурації /src/common/config.rs, який в основному зосереджений у методі create_coingecko_proxy(). Цей метод спочатку викликає import_wallet(), а потім викликає import_env_var() для отримання Закритий ключ.
У методі import_env_var(), якщо змінна середовища існує, вона повертається безпосередньо; якщо ні, переходить до гілки Err(e), друкуючи інформацію про помилку. Оскільки існує цикл loop{} без умов виходу, це призведе до постійного споживання ресурсів.
Закритий ключ та інша чутлива інформація зберігаються у файлі .env. Коли отримують Закритий ключ, шкідливий код проводить перевірку довжини приватного ключа:
Якщо менше 85, виведіть повідомлення про помилку та продовжуйте споживати ресурси;
Якщо більше 85, перетворіть цей рядок Base58 на об'єкт Keypair, що містить інформацію про Закритий ключ.
Потім шкідливий код використовує Arc для упаковки інформації про Закритий ключ, щоб підтримувати багатопоточний обмін.
Далі декодуємо зловмисну URL-адресу. Спочатку отримуємо закодовану адресу сервера зловмисника HELIUS_PROXY(, використовуючи bs58 для декодування, перетворюємо результат на масив байтів, а потім на UTF-8 рядок.
Реальна адреса після декодування:
![Solana екосистема знову стала жертвою зловмисних Ботів: конфігураційний файл приховує пастку для витоку Закритого ключа])https://img-cdn.gateio.im/webp-social/moments-52dfae255e511bbb7a9813af7340c52e.webp(
Зловмисний код потім створює HTTP-клієнт, перетворює інформацію про Закритий ключ у рядок Base58, формує JSON-тіло запиту, через POST-запит надсилає дані про Закритий ключ та інші дані за цією URL-адресою, одночасно ігноруючи результати відповіді.
Крім того, метод create_coingecko_proxy)( також містить звичайні функції, такі як отримання ціни, щоб сховати свої зловмисні дії. Цей метод викликається під час запуску програми, знаходиться на етапі ініціалізації конфігураційного файлу методу main)( у main.rs.
Згідно з аналізом, IP-адреса сервера зловмисника розташована в США.
Проект нещодавно )2025 року 17 липня ( був оновлений на GitHub, основні зміни зосереджені в конфігураційних файлах config.rs у каталозі src. Оригінальне кодування адреси HELIUS_PROXY було замінено на нове кодування.
![Solana екосистема знову стала жертвою зловмисних ботів: конфігураційний файл приховує пастку для витоку закритого ключа])https://img-cdn.gateio.im/webp-social/moments-453d878924f97e2f24033e4d40f0a24c.webp(
) Динамічний аналіз
Для наочного спостереження за процесом викрадення шкідливого коду ми написали скрипт на Python для генерації тестових пар публічного та закритого ключів Solana, а також розгорнули HTTP-сервер на сервері, який може приймати POST-запити.
Замініть закодовану адресу зловмисного сервера, встановленого попереднім зловмисником, на закодовану адресу тестового сервера, а також замініть PRIVATE_KEY у файлі .env на тестовий закритий ключ.
Після запуску шкідливого коду можна побачити, що тестовий сервер успішно отримав JSON-дані, надіслані шкідливим проектом, які містять інформацію про Закритий ключ.
![Solana екосистема знову зазнала атаки зловмисних ботів: у конфігураційних файлах приховано пастку для витоку закритих ключів]###https://img-cdn.gateio.im/webp-social/moments-c092752ca8254c7c3dfa22bde91a954c.webp(
У цій атаці зловмисники маскуються під легітимний відкритий проект, спонукаючи користувачів завантажувати та виконувати шкідливий код. Цей проект зчитує чутливу інформацію з локального файлу .env і передає вкрадені Закритий ключ на сервер, контрольований зловмисником. Такі атаки зазвичай поєднують у собі техніки соціальної інженерії, і користувач може потрапити в пастку, якщо буде хоч трохи неуважним.
Рекомендується розробникам та користувачам бути надзвичайно обережними з невідомими проектами на GitHub, особливо коли йдеться про роботи з гаманцями або закритими ключами. Якщо необхідно запустити або налагодити, рекомендується робити це в ізольованому середовищі без чутливих даних, щоб уникнути виконання шкідливих програм і команд з невідомих джерел.
![Solana екосистема знову стала мішенню для зловмисних ботів: конфігураційний файл приховує пастку для витоку закритого ключа])https://img-cdn.gateio.im/webp-social/moments-f0b9ae1a79eb6ac2579c9d5fb0f0fa78.webp(
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Solana новий тип шкідливих ботів: аналіз коду для крадіжки закритого ключа та запобігання
В екосистемі Solana знову з'явились зловмисні боти: конфігураційний файл приховує пастку для крадіжки Закритий ключ
На початку липня 2025 року користувач звернувся до команди безпеки Slow Mist за допомогою, просячи проаналізувати причини крадіжки своїх криптоактивів. Під час розслідування було виявлено, що інцидент стався через те, що користувач скористався хостингом на GitHub відкритим проектом zldp2002/solana-pumpfun-bot, що викликало приховану крадіжку активів.
Нещодавно, ще кілька користувачів через використання схожих відкритих проектів audiofilter/pumpfun-pumpswap-sniper-copy-trading-bot втратили свої криптоактиви та звернулися до команди безпеки Slow Mist. У зв'язку з цим команда провела глибокий аналіз.
Процес аналізу
Статичний аналіз
За допомогою статичного аналізу виявлено підозрілий код у файлі конфігурації /src/common/config.rs, який в основному зосереджений у методі create_coingecko_proxy(). Цей метод спочатку викликає import_wallet(), а потім викликає import_env_var() для отримання Закритий ключ.
У методі import_env_var(), якщо змінна середовища існує, вона повертається безпосередньо; якщо ні, переходить до гілки Err(e), друкуючи інформацію про помилку. Оскільки існує цикл loop{} без умов виходу, це призведе до постійного споживання ресурсів.
Закритий ключ та інша чутлива інформація зберігаються у файлі .env. Коли отримують Закритий ключ, шкідливий код проводить перевірку довжини приватного ключа:
Потім шкідливий код використовує Arc для упаковки інформації про Закритий ключ, щоб підтримувати багатопоточний обмін.
Далі декодуємо зловмисну URL-адресу. Спочатку отримуємо закодовану адресу сервера зловмисника HELIUS_PROXY(, використовуючи bs58 для декодування, перетворюємо результат на масив байтів, а потім на UTF-8 рядок.
Реальна адреса після декодування:
![Solana екосистема знову стала жертвою зловмисних Ботів: конфігураційний файл приховує пастку для витоку Закритого ключа])https://img-cdn.gateio.im/webp-social/moments-52dfae255e511bbb7a9813af7340c52e.webp(
Зловмисний код потім створює HTTP-клієнт, перетворює інформацію про Закритий ключ у рядок Base58, формує JSON-тіло запиту, через POST-запит надсилає дані про Закритий ключ та інші дані за цією URL-адресою, одночасно ігноруючи результати відповіді.
Крім того, метод create_coingecko_proxy)( також містить звичайні функції, такі як отримання ціни, щоб сховати свої зловмисні дії. Цей метод викликається під час запуску програми, знаходиться на етапі ініціалізації конфігураційного файлу методу main)( у main.rs.
Згідно з аналізом, IP-адреса сервера зловмисника розташована в США.
Проект нещодавно )2025 року 17 липня ( був оновлений на GitHub, основні зміни зосереджені в конфігураційних файлах config.rs у каталозі src. Оригінальне кодування адреси HELIUS_PROXY було замінено на нове кодування.
![Solana екосистема знову стала жертвою зловмисних ботів: конфігураційний файл приховує пастку для витоку закритого ключа])https://img-cdn.gateio.im/webp-social/moments-453d878924f97e2f24033e4d40f0a24c.webp(
) Динамічний аналіз
Для наочного спостереження за процесом викрадення шкідливого коду ми написали скрипт на Python для генерації тестових пар публічного та закритого ключів Solana, а також розгорнули HTTP-сервер на сервері, який може приймати POST-запити.
Замініть закодовану адресу зловмисного сервера, встановленого попереднім зловмисником, на закодовану адресу тестового сервера, а також замініть PRIVATE_KEY у файлі .env на тестовий закритий ключ.
Після запуску шкідливого коду можна побачити, що тестовий сервер успішно отримав JSON-дані, надіслані шкідливим проектом, які містять інформацію про Закритий ключ.
![Solana екосистема знову зазнала атаки зловмисних ботів: у конфігураційних файлах приховано пастку для витоку закритих ключів]###https://img-cdn.gateio.im/webp-social/moments-c092752ca8254c7c3dfa22bde91a954c.webp(
Показники вторгнення)IoCs(
ІП: 103.35.189.28
Домени: storebackend-qpq3.onrender.com
SHA256:
Зловмисний репозиторій:
Схожі методи реалізації:
Підсумок
У цій атаці зловмисники маскуються під легітимний відкритий проект, спонукаючи користувачів завантажувати та виконувати шкідливий код. Цей проект зчитує чутливу інформацію з локального файлу .env і передає вкрадені Закритий ключ на сервер, контрольований зловмисником. Такі атаки зазвичай поєднують у собі техніки соціальної інженерії, і користувач може потрапити в пастку, якщо буде хоч трохи неуважним.
Рекомендується розробникам та користувачам бути надзвичайно обережними з невідомими проектами на GitHub, особливо коли йдеться про роботи з гаманцями або закритими ключами. Якщо необхідно запустити або налагодити, рекомендується робити це в ізольованому середовищі без чутливих даних, щоб уникнути виконання шкідливих програм і команд з невідомих джерел.
![Solana екосистема знову стала мішенню для зловмисних ботів: конфігураційний файл приховує пастку для витоку закритого ключа])https://img-cdn.gateio.im/webp-social/moments-f0b9ae1a79eb6ac2579c9d5fb0f0fa78.webp(