概要
ハッカーがMicrosoft Visual Studio Code (VS Code)の設定ファイルを悪用し、標的システムに悪意あるペイロードを展開していることが判明しました。これは「Contagious Interview」キャンペーンの新たな進化であり、正規の開発ツールを武器化するという高度な手口を示しています。
感染経路
感染は、被害者がGitHubやGitLabにホストされた悪意あるGitリポジトリをクローンし、VS Codeで開くことから始まります。これらのリポジトリは通常、採用プロセスや技術課題を装っています。
VS Codeでプロジェクトを開くと、ユーザーはリポジトリの作者を信頼するかどうかを尋ねられます。承認すると、VS Codeはリポジトリ内のtasks.json設定ファイルを自動的に処理します。このファイルには、システム上で任意のコマンドを実行できる埋め込みコマンドが含まれている可能性があります。
macOSシステムでは、nohup bash -cとcurl -sを組み合わせたバックグラウンドシェルコマンドが実行され、リモートサーバーからJavaScriptペイロードを取得し、Node.jsランタイムに直接パイプします。この方法により、VS Codeが終了しても実行が独立して継続され、すべてのコマンド出力は抑制されます。
悪意あるJavaScriptペイロードは、これまで北朝鮮関連の脅威アクターに頻繁に利用されてきたvercel.appにホストされています。Jamf Threat Labsの観測によると、Vercelが以前特定されたペイロードホスティングインフラを停止した後、脅威アクターはリポジトリ内で参照されるURLを複数回変更していました。
バックドアの機能と能力
JavaScriptペイロードは、以下の3つの主要なバックドアロジックを実装しています:
- リモートコード実行 (RCE):
require関数を実行コンテキストに渡し、Node.jsモジュールをインポートして機能を拡張することで、任意のJavaScriptコードを動的に実行できます。 - システムフィンガープリンティング: ホスト名、ネットワークインターフェースのMACアドレス、OSの詳細など、ホスト識別子を収集します。また、
ipify.orgをクエリして被害者のパブリックIPアドレスを特定します。これは以前にも北朝鮮関連のキャンペーンで確認された手口です。 - 持続的なコマンド&コントロール (C2) 通信: 5秒ごとにリモートサーバーにビーコンを送信するポーリングルーチンを通じて機能します。ビーコンはシステムフィンガープリンティングデータを送信し、タスク指示を含むサーバー応答を待ちます。サーバー応答に特定のステータス値が含まれている場合、メッセージの内容は直接リモートコード実行ルーチンに渡され、攻撃者は動的に新しいコマンドを発行できます。
Jamf Threat Labsは、侵害されたシステムの監視中に、初期感染から約8分後に、同じC2インフラを指す追加のJavaScript命令が実行されていることを観測しました。
新たな難読化技術
12月には、Jamfは悪意あるリポジトリを被害者が開いたときに実行される、高度に難読化されたJavaScriptを含む辞書ファイルの導入を確認しました。これらのペイロードには、大量の未使用関数、冗長なロジック、および余分なコードが含まれており、動作に影響を与えることなくファイルサイズと複雑さを増大させています。これは、静的解析やシグネチャベースの検出を回避するために設計された手法です。
対策と推奨事項
組織は、脅威防御および高度な脅威制御をブロックモードで有効にする必要があります。開発者は、特に信頼できないソースからのサードパーティリポジリを扱う際には注意を払う必要があります。
VS Codeでリポジトリを信頼する前に、ユーザーは以下の点を徹底的に確認することが推奨されます。
- リポジトリの内容
package.jsonファイル- インストールスクリプト
- タスク設定ファイル
このキャンペーンは、巧妙な脅威アクターがいかに正規の開発ワークフローに溶け込むように配信メカニズムを適応させているかを浮き彫りにしています。組織の防御において、開発者のセキュリティ意識を高めることが極めて重要です。
