概要:悪性Rustクレートによるサプライチェーン攻撃
Ethereum Virtual Machine(EVM)ユーティリティを装った悪質なRustクレート「evm-units」が、開発者のマシンにサイレントでOS固有のペイロードを配信していたことが明らかになりました。「ablerust」という作成者によってCrates.ioにホストされていたこのパッケージは、約8ヶ月間で7,000回以上ダウンロードされており、Socket脅威調査チームからの報告を受けて迅速に削除されました。
一見すると、「evm-units」はEVMバージョンを返す無害なヘルパー関数get_evm_version()を提供しているように見えます。しかし、この関数が呼び出されると、クロスプラットフォームの第2段階ローダーが起動し、被害者のオペレーティングシステムとQihoo 360アンチウイルスの存在に基づいてリモートペイロードをフェッチして実行する仕組みになっていました。
クロスプラットフォームローダーのメカニズム
悪質な動作は、get_evm_version()が呼び出されたときに始まります。この関数は、ハードコードされたbase64エンコード文字列をデコードしてリモートURLを生成し、これを非同期のcheck()関数に渡します。このURLは、関連するペイロードハッシュとともにすでにVirusTotalによって悪質なものとしてフラグ付けされており、第2段階スクリプトの配信ポイントとして機能します。
このクレートは、Rustの条件付きコンパイルを使用して3つのOS固有のcheck()バリアントを実装しています。
- Linuxの場合: マルウェアはスクリプトを
/tmp/initとしてシステムの一時ディレクトリにダウンロードし、ペイロードをディスクに書き込み、nohup bashを介してすべての標準ストリームをヌル化してバックグラウンドで実行します。これにより、ウィンドウやログ、端末出力が被害者に表示されることなく、攻撃者のスクリプトは任意のコマンドを実行したり、追加のペイロードをインストールしたりする完全な制御を獲得します。 - macOSの場合: 同様のパターンが使用され、ペイロードは一時ディレクトリに
initとして保存され、nohupでラップされたosascriptを使用してバックグラウンドで静かに実行されます。これもユーザーには可視化されません。これにより、AppleScriptベースの第2段階がサイレントに実行されます。 - Windowsの場合: ペイロードは一時ディレクトリにPowerShellスクリプト(
init.ps1)としてドロップされます。その後、コードは実行中のプロセスを列挙してQihoo 360(qhsafetray.exe)を検出します。Qihoo 360が存在しない場合、マルウェアは隠しウィンドウでPowerShellスクリプトを起動するVBScriptを生成します。アンチウイルスの有無にかかわらず、-ExecutionPolicy BypassおよびCREATE_NO_WINDOWオプションでPowerShellを実行し、ステルス実行を確保します。
すべてのプラットフォームで、danger_accept_invalid_certs(true)の使用により、攻撃者は自己署名証明書を使用し、最小限の摩擦でインフラストラクチャを回転させることができ、防御的なTLS検査を弱体化させます。
暗号通貨分野を狙ったサプライチェーン攻撃
中国の主要なアンチウイルス製品であり、アジアで大きな市場シェアを持つQihoo 360の明示的なチェックは、地域的な焦点と暗号通貨窃盗の可能性を示唆しています。EVMをテーマにしたユーティリティ、無害に見えるUniswapヘルパー依存関係、およびクロスプラットフォームローダーの動作の組み合わせは、暗号通貨開発者またはインフラストラクチャを標的としていることを強く示唆しています。
このリスクは、「evm-units」が単独のクレートではなかったという事実によってさらに増幅されます。同じ作成者による別のパッケージ「uniswap-utils」は、概ね正当に見え、7,400回以上のダウンロードを記録しています。しかし、これは「evm-units」に依存しており、#[ctor::ctor]でアノテーションされた関数内でevm_units::get_evm_version()を呼び出します。これにより、悪質な関数が初期化時に自動的に実行され、このインシデントは古典的なソフトウェアサプライチェーン攻撃となります。
セキュリティチームへの警告と対策
この事例は、オープンソースマルウェア、特に暗号通貨エコシステムにおける巧妙化の進行を浮き彫りにしています。一見無害なバージョンチェック関数が、広く使用されているRustクレート内にクロスプラットフォームローダーを隠蔽するのに十分だったのです。
セキュリティチームは、すべてのオープンソース依存関係を潜在的な攻撃対象とみなし、OS固有のペイロードダウンロード、スクリプト実行(PowerShell、Bash、AppleScript)、ステルス初期化フックなどの隠れた動作を継続的にスキャンし、悪質なクレートが本番環境に到達する前にブロックするために、自動化された依存関係保護をCI/CDパイプラインに統合することが強く推奨されます。
