概要:Open VSXで発見された悪意ある拡張機能
Open VSXオープンソースレジストリにおいて、有名なSolidity拡張機能に偽装した悪意あるVS Code拡張機能「juan-bianco.solidity-vlang」が発見されました。この拡張機能には、「SleepyDuck」と名付けられたリモートアクセス型トロイの木馬が含まれており、Ethereumスマートコントラクトを利用して攻撃者との通信チャネルを確立し、永続性を確保するという巧妙な手口を用いています。
この拡張機能はすでに53,000回以上ダウンロードされており、Open VSX上では「juan-bianco.solidity-vlang」として存在していますが、プラットフォームからの警告が付与されています。当初、10月31日に提出された時点では無害でしたが、翌日には悪意のある機能が追加され、その時点で既に14,000回ダウンロードされていました。
SleepyDuckの巧妙な手口
拡張機能セキュリティプラットフォームSecure Annexの報告によると、SleepyDuckの注目すべき特徴は、Ethereumコントラクトを使用してコマンド&コントロール(C2)サーバーのアドレスを更新し、長期的な永続性を実現している点です。
悪意のあるコードは、エディタの起動時、Solidityファイルが開かれた時、またはユーザーがSolidityコンパイルコマンドを実行した時にアクティブ化します。アクティブ化すると、ホストごとに一度だけ実行されるようにロックファイルを作成し、正当に見せかけるために偽の「webpack.init()」関数を「extension.js」から呼び出しますが、実際には悪意のあるペイロードをロードします。
Secure Annexによると、SleepyDuckの悪意のあるコンポーネントは、システムデータ(ホスト名、ユーザー名、MACアドレス、タイムゾーン)を収集し、コマンド実行サンドボックスをセットアップします。初期化されると、マルウェアは最速のEthereum RPCプロバイダーを見つけてスマートコントラクトからC2情報を読み取り、SleepyDuckインスタンスを起動し、現在の有効な設定で更新し、ポーリングループを開始します。
Ethereumブロックチェーンを悪用したC2通信
EthereumブロックチェーンはC2の冗長性のために使用されており、デフォルトのC2サーバーであるsleepyduck[.]xyzが停止した場合でも、マルウェアはEthereumブロックチェーン上のコントラクトから直接更新された指示(新しいC2サーバーアドレスや通信間隔の変更など)を読み取ることができ、機能し続けることが可能です。
研究者たちは、ポーリング機能がPOSTリクエストでシステムデータを送信し、「応答から実行するコマンドを探す」と述べています。
開発者への影響とOpen VSXの対策
Open VSXの人気の高まりは、ハッカーの標的となり、疑うことを知らない開発者を狙った複数の悪意ある提出物を受け入れています。
最近、Open VSXプラットフォームは、ユーザーの安全性を高めるための一連のセキュリティ強化策を発表しました。これには、トークン寿命の短縮、漏洩した認証情報の迅速な取り消し、自動スキャン、そしてVS Codeとの間で新たな脅威に関する主要な情報を共有することなどが含まれます。
ソフトウェア開発者は、VS Code拡張機能をダウンロードする際に注意を払い、信頼できる発行元と公式リポジトリのみを信頼するよう心がけるべきです。
