PR

悪性Rustクレート「evm-units」がWeb3開発環境へOS別マルウェア投下

Security

Source:https://thehackernews.com/2025/12/malicious-rust-crate-delivers-os.html

🛡 概要

Rustのパッケージレジストリcrates.ioに2025年4月中旬に公開された「evm-units」が、Windows・macOS・Linuxそれぞれに合わせた不正ペイロードを配布する悪性クレートであることが判明しました。同作者の「uniswap-utils」が依存関係として取り込み、合計1万4千回以上ダウンロードされました。いずれのパッケージも現在は削除済みです。外見上はEthereum関連のユーティリティを装い、Web3開発者の端末で気付かれずに実行される設計でした。

🔍 技術詳細

当該クレートはEVMユーティリティを装う関数名「get_evm_version()」を起点に、内部でエンコード済みのURLを復号し、外部ホスト「download.videotalks[.]xyz」へアクセスしてOS別の第2段階ローダーを取得します。戻り値としてはEVMバージョン文字列を返す体裁のため、開発者は通常のヘルパー関数を呼び出したと誤認しやすい構造です。

  • Linux: スクリプトを取得し「/tmp/init」に保存。nohupでバックグラウンド実行してセッション切断後も動作を継続させ、攻撃者が恒常的に制御を得られる状態を構築。
  • macOS: 「init」というファイルを取得し、osascript経由でnohup実行。ユーザーインタラクションなくバックグラウンドで走行。
  • Windows: 一時ディレクトリに「init.ps1」を保存。稼働中プロセスを列挙して「qhsafetray.exe」(Qihoo 360 Total Securityのコンポーネント)の有無を確認。未検出時はVisual Basic Scriptを作成してウィンドウ非表示でPowerShellを起動、検出時は実行フローを変えてPowerShellを直接呼び出すなど、検出回避を志向。

この挙動により、開発環境の初期化・ビルド段階などで依存を解決しただけで外部からのペイロード取得と実行が行われます。また、Qihoo 360のプロセスを明示的に参照する点は、中国圏ユーザーを含む暗号資産関連の開発者層を意識した観測指標と考えられます。依存パッケージ「uniswap-utils」側から自動的に呼び出されることで、利用者が「evm-units」を直接使っていなくても汚染コードが初期化時に走る設計でした。

IOCの例: download.videotalks[.]xyz/一時ディレクトリ中のinitまたはinit.ps1/WindowsでVBSラッパーの作成(拡張子.vbs)/PowerShellのウィンドウ非表示実行フラグの使用など。なお、現時点で当該パッケージに公式CVE/CVSSは割り当てられていません(CVSS: 該当情報なし)。

⚠ 影響

開発者端末の初期アクセス起点として機密情報(ウォレット鍵、シードフレーズ、APIトークン、リポジトリ認証情報、クラウドクレデンシャル等)の窃取、リポジトリやCI/CDの改ざん、社内横展開の足掛かりとなる恐れがあります。OS別のロード手法とウィンドウ非表示・バックグラウンド実行により発見が遅延しやすく、Web3のビルド・テストの自動化パイプラインに混入した場合は被害の連鎖(サプライチェーン汚染)につながり得ます。

🛠 対策

  • 緊急対応(隔離・狩り込み): ネットワークで「download.videotalks[.]xyz」へのDNS/HTTP(S)通信を遮断・監視。端末で/tmp/init%TEMP%\init.ps1、不審な.vbsの存在と最近の実行痕跡を確認。該当端末のウォレット/トークン/SSH鍵を即時ローテーション。
  • 依存関係の健全化: evm-units/uniswap-utilsを含むプロジェクトのCargo.lockとビルドキャッシュを再生成。内部ミラー/プロキシを用意し、承認済みクレートのみを許可リスト化。cargo-vetcargo-crev等でレビュー証跡のある依存のみ採用。
  • 実行制御: 開発端末でPowerShellのConstrained Language Mode、WDAC/AppLocker(Windows)やTCC/署名検証(macOS)、/tmpのnoexecマウント(Linux、可能な範囲で)を検討。osascript/powershell/wscriptの実行をEDRで高リスクに分類しアラート化。
  • 通信制御: 開発ネットワークはデフォルト拒否のアウトバウンド制御(FQDN/カテゴリ許可リスト)とTLSインスペクション(開発要件と法令順守の範囲内)を適用。DNSログの長期保管と逆引きピボットを可能に。
  • SBOM/署名: ビルドごとにSBOM(CycloneDX/SPDX)を生成・検証し差分を監査。SLSAレベル3相当のビルド整合性とSigstore/attestationによるサプライチェーン検証を導入。

📌 SOC視点

  • プロセス作成(Windows 4688/Sysmon ID 1): powershell.exe-WindowStyle Hidden-ExecutionPolicy Bypass-NoProfile、およびwscript.exe//B //Nologoを検知。親が開発系ツール(cargo/rustc/node/python等)の場合は高優先度。
  • macOS: osascriptbash/shが開発プロセス配下でnohup実行するツリー。EndpointSecurity/System Extensionのイベントでコマンドラインと親子関係を収集。
  • Linux: nohupでのバックグラウンド実行、/tmp/initの作成、curl/wgetの外向き通信。
  • ネットワーク/DNS: download.videotalks[.]xyzへの解決・HTTP(S)アクセス、未知ドメインへの短時間・少量アクセスのスパイク。
  • ファイル監視: 一時ディレクトリへのinit/init.ps1/.vbs作成と即時実行の相関ルール。

📈 MITRE ATT&CK

  • Initial Access: T1195.001(ソフトウェア依存関係・開発ツールの汚染)− crates.ioに悪性依存を公開し、ビルド/初期化時に取り込ませる手口。
  • Execution: T1059.001/002/004(PowerShell/AppleScript/Unix Shell)− OSごとにスクリプトインタプリタで第2段階を実行。
  • Command and Control: T1105(Ingress Tool Transfer)− 外部ホストからペイロードをダウンロード。
  • Defense Evasion: T1036(Masquerading)− EVMユーティリティを装う関数名と正規の戻り値で偽装。T1564.003(Hidden Window)− VBSでウィンドウ非表示のPowerShell実行。
  • Discovery: T1057(Process Discovery)− 「qhsafetray.exe」プロセスの存在確認で検出回避分岐。

🏢 組織規模別助言

  • 小規模(〜50名): 依存更新は週次で固定し、承認者を限定。EDRの推奨ポリシーを有効化し、疑わしいスクリプト実行を即時隔離。ウォレット/クラウド鍵はパスフレーズ有りのハードウェア保管に。
  • 中規模(50〜500名): 内部パッケージプロキシ(crates.ioミラー)を構築し、信頼済みネームスペースのみ許可。CIでSBOM生成と許可リスト検証を自動化。開発端末にアプリ制御を導入。
  • 大規模(500名以上): 供給者評価とSLSA準拠を購買要件化。全社DNS・HTTPプロキシでアウトバウンド制御を集中管理し、脅威インテリジェンスでドメインを即時ブロック。レッドチームで依存汚染の卓上演習と復旧訓練を実施。

🔎 類似事例

  • XZ Utilsバックドア(CVE-2024-3094)− 低レベルツールチェーンへの汚染。
  • npm「event-stream」改ざん(2018)− 暗号資産ウォレット(Copay)を狙ったサプライチェーン攻撃。
  • ua-parser-jsの悪性バージョン流通(2021)− 人気npmパッケージにマルウェアが混入。
  • PyPIでの暗号資産狙いのタイポスクワット多数(継続的)− 開発者環境を標的。

🧭 次の一手

まず対象プロジェクトの依存ツリーを棚卸しし、evm-units/uniswap-utils混入の有無を即時確認。該当端末でIOCハンティングと資格情報のローテーションを行い、社内のアウトバウンド制御とSBOM検証を実装してください。続けて、依存関係審査の運用設計(cargo-vet/内部ミラー/アプリ制御)に着手することを推奨します。