Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

Rust プロジェクトは、構成の初期化フェーズ中に秘密のネットワーク要求を実行し、攻撃サーバーのアドレスを動的にデコードします。

著者: Joker&Thinking

編集者: KrsMt.

背景

2025年7月初旬、SlowMistセキュリティチームは、被害を受けたユーザーから暗号資産盗難の原因分析への協力依頼を受けました。調査の結果、このインシデントは、ユーザーがGitHubでホストされているオープンソースプロジェクト「zldp2002/solana-pumpfun-bot」を使用したことに端を発し、それがコインの密かな盗難を引き起こしたことが判明しました。詳細については、「GitHubの人気ツールSolanaに隠されたコイン盗難の罠」をご覧ください。

最近、別のユーザーが同様のオープンソースプロジェクト「audiofilter/pumpfun-pumpswap-sniper-copy-trading-bot」を使用し、暗号化された資産を盗まれた事件が発生し、SlowMistセキュリティチームに連絡しました。これを受け、チームは攻撃手法をさらに分析しました。

分析プロセス

静的分析

まず、攻撃者が仕掛けた罠を見つけるために静的解析を行いました。解析の結果、疑わしいコードは/src/common/config.rs設定ファイル、主にcreate_coingecko_proxy()メソッドに存在することが判明しました。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

コードからわかるように、create_coingecko_proxy() メソッドは最初に import_wallet() を呼び出し、さらに import_env_var() を呼び出して秘密鍵を取得します。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

import_env_var() メソッドでは、主に .env ファイル内の環境変数設定情報を取得するために使用されます。

呼び出し中に環境変数が存在する場合は直接戻り、存在しない場合はErr(e)分岐に入り、エラーメッセージを出力します。終了条件のないループ{}があるため、リソースは消費され続けます。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

PRIVATE_KEY (秘密鍵) などの機密情報も .env ファイルに保存されます。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

import_wallet() メソッドに戻ると、import_env_var() が呼び出されて PRIVATE_KEY (秘密鍵) が取得されると、悪意のあるコードは秘密鍵の長さを決定します。

  • 秘密鍵の長さが 85 未満の場合、マルウェアはエラー メッセージを出力します。また、終了条件のないループ {} があるため、リソースが消費され続け、マルウェアは正常に終了できなくなります。
  • 秘密鍵の長さが 85 より大きい場合は、Solana SDK を使用して、Base58 文字列を秘密鍵情報が含まれる Keypair オブジェクトに変換します。

次に、悪意のあるコードは Arc を使用して秘密鍵情報をカプセル化し、マルチスレッド共有をサポートします。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

create_coingecko_proxy() メソッドに戻ると、秘密鍵情報を正常に取得した後、悪意のあるコードは悪意のある URL アドレスをデコードします。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

このメソッドは、まずエンコードされた HELIUS_PROXY (攻撃者のサーバー アドレス) のハードコードされた定数を取得します。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

次に、悪意のあるコードは bs58 を使用して HELIUS_PROXY (攻撃者のサーバー アドレス) をデコードし、デコード結果をバイト配列に変換し、さらに from_utf8() を使用してバイト配列を UTF-8 文字列に変換します。

スクリプトを記述することで、デコード後のHELIUS_PROXYの実アドレスを以下のように復元できます。

http://103.35.189.28:5000/api/wallets

悪意のあるコードは、URL (http://103.35.189.28:5000/api/wallets) を正常にデコードした後、まず HTTP クライアントを作成し、取得した秘密鍵情報 payer を to_base58_string() を使用して Base58 文字列に変換します。

次に、悪意のあるコードはJSONリクエストボディを構築し、その中に変換された秘密鍵情報をカプセル化します。POSTリクエストを構築することで、秘密鍵とその他のデータは上記のURLで指定されたサーバーに送信され、レスポンス結果は無視されます。

サーバーから返される結果に関係なく、悪意のあるコードはユーザーの気付きを避けるために実行され続けます。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

さらに、create_coingecko_proxy() メソッドには、悪意のある動作を隠すために価格を取得するなどの通常の機能も含まれており、メソッド名自体も偽装されており、混乱を招きます。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

分析により、アプリケーションの起動時、具体的には main.rs の main() メソッドの構成ファイル初期化フェーズで、create_coingecko_proxy() メソッドが呼び出されることがわかります。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

設定ファイル src/common/config.rs の new() メソッドでは、悪意のあるコードは最初に .env ファイルを読み込み、次に create_coingecko_proxy() メソッドを呼び出します。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

分析によると、サーバーの IP アドレスは米国にあります。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

 (https://www.virustotal.com/gui/ip-address/103.35.189.28)

このプロジェクトは最近(2025 年 7 月 17 日)GitHub で更新されており、主な変更は src ディレクトリ内の構成ファイル config.rs に集中していることが確認されています。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

src/common/config.rs ファイルでは、HELIUS_PROXY (攻撃者サーバー アドレス) の元のアドレス エンコーディングが新しいエンコーディングに置き換えられていることがわかります。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

スクリプトを使用して元のアドレスのエンコードをデコードすると、元のサーバー アドレスを取得できます。

// 元のアドレスのエンコード HELIUS_PROXY: 2HeX3Zi2vTf1saVKAcNmf3zsXDkjohjk3h7AsnBxbzCkgTY99X5jomSUkBCW7wodoq29Y// デコードされた元のサーバーアドレス https://storebackend-qpq3.onrender.com/api/wallets

動的解析

悪意のあるコードの盗難プロセスをより直感的に観察するために、動的分析手法を使用し、テスト用に Solana の公開鍵と秘密鍵のペアを生成する Python スクリプトを作成しました。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

同時に、POST リクエストを受信できる HTTP サーバーをサーバー上に構築しました。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

Python スクリプトを記述してテスト サーバーに対応するコードを生成し、それを元の攻撃者が設定した悪意のあるサーバー アドレス コード、つまり HELIUS_PROXY (攻撃者のサーバー アドレス) に置き換えます。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

次に、.env ファイル内の PRIVATE_KEY を、先ほど生成したテスト秘密キーに置き換えます。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

次に、悪意のあるコードを起動し、サーバー側インターフェースの応答を観察します。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

テスト サーバーが、悪意のあるプロジェクトから送信された、PRIVATE_KEY 情報を含む JSON データを正常に受信したことがわかります。

Solanaエコシステムに悪意のあるロボットが再び出現:設定ファイルに隠された秘密鍵漏洩の罠

侵害の兆候(IoC)

IP:

103.35.189.28

ドメイン:

storebackend-qpq3.onrender.com

SHA256:

  • 07f0364171627729788797bb37e0170a06a787a479666abf8c80736722bb79e8 - ポンプファン・ポンプスワップ・スナイパー・コピー・トレーディング・ボット・マスター.zip
  • ace4b1fc4290d6ffd7da0fa943625b3a852190f0aa8d44b93623423299809e48 - pumpfun-pumpswap-sniper-コピートレーディングボット-マスター/src/common/config.rs

悪意のある倉庫:

https://github.com/audiofilter/pumpfun-pumpswap-sniper-copy-trading-bot

類似の実装方法:

  • https://github.com/BitFancy/Solana-MEV-Bot-Optimized
  • https://github.com/0xTan1319/solana-copytrading-bot-rust
  • https://github.com/blacklabelecom/SAB-4
  • https://github.com/FaceOFWood/SniperBot-Solana-PumpSwap
  • https://github.com/Alemoore/Solana-MEV-Bot-Optimized
  • https://github.com/TopTrenDev/Raypump-Executioner-Bot
  • https://github.com/deniyuda348/Solana-Arbitrage-Bot-Flash-Loan

要約する

今回公開された攻撃手法では、攻撃者は正当なオープンソースプロジェクトを装い、ユーザーを騙して悪意のあるコードをダウンロードさせ、実行させようとします。プロジェクトはローカルの.envファイルから機密情報を読み取り、盗んだ秘密鍵を攻撃者が管理するサーバーに送信します。この種の攻撃は通常、ソーシャルエンジニアリングの手法と組み合わされており、ユーザーは注意を怠ると罠に陥る可能性があります。

開発者とユーザーは、特にウォレットや秘密鍵の操作に関しては、不明なソースからのGitHubプロジェクトに細心の注意を払うことをお勧めします。どうしても実行やデバッグが必要な場合は、機密データを含まない独立した環境で実行し、不明なソースからの悪意のあるプログラムやコマンドの実行を回避することをお勧めします。

共有先:

著者:慢雾科技

本記事はPANews入駐コラムニストの見解であり、PANewsの立場を代表するものではなく、法的責任を負いません。

記事及び見解は投資助言を構成しません

画像出典:慢雾科技侵害がある場合は、著者に削除を連絡してください。

PANews公式アカウントをフォローして、一緒に強気相場と弱気相場を乗り越えましょう
おすすめ記事
7分前
28分前
1時間前
2時間前
2時間前
3時間前

人気記事

業界ニュース
市場ホットスポット
厳選読み物

厳選特集

App内阅读