ソフトウェア開発者の皆さん、普段何気なく開いているGitHubリポジトリが、実は国家支援のハッカーグループによる罠かもしれません。北朝鮮に関連する「Contagious Interview」キャンペーンが、Microsoft Visual Studio Code(VS Code)のプロジェクトファイルを悪用した新たな攻撃手法を展開していることが明らかになりました。この攻撃は2025年12月に初めて発見され、現在も進化を続けています。特に暗号資産やブロックチェーン分野の開発者が標的となっており、あなたの開発環境が狙われている可能性があります。
この記事のポイント
- LinkedInで偽リクルーターが開発者に接触し、悪意あるリポジトリを開かせる
- VS Codeのtask.json設定ファイルを悪用し、フォルダを開くだけでマルウェアが実行される
- BeaverTail、InvisibleFerret、Tsunamiなど複数のバックドアが連携して動作
- 暗号資産ウォレットの窃取やクリプトマイニングが最終目的
攻撃の全体像:LinkedInから始まる巧妙な罠
この攻撃キャンペーンは、ソーシャルエンジニアリングとテクニカルな攻撃手法を巧みに組み合わせています。攻撃者はLinkedInで企業のリクルーターを装い、魅力的な求人案件をちらつかせながら開発者に接触します。「技術評価のため」と称してGitHub、GitLab、またはBitbucketにホストされたリポジトリのクローンを依頼し、VS Codeで開くよう指示します。
一見すると普通の開発プロジェクトに見えるこれらのリポジトリには、.vscode/tasks.jsonファイルに悪意のある設定が仕込まれています。特に危険なのは「runOn: folderOpen」オプションで、これによりフォルダを開いた瞬間に自動的にマルウェアが実行されます。開発者は何も操作していないにもかかわらず、システムが侵害されてしまうのです。
多段階感染プロセスの技術的詳細
攻撃の技術的な仕組みは非常に洗練されています。Jamf Threat Labsの研究者Thijs Xhaflaire氏によると、マルウェアは「Vercelドメインにステージングされた悪意のあるペイロードを実行するためにVS Codeのタスク設定ファイルを活用」しています。
初期バージョンでは難読化されたJavaScriptを使用してリモートペイロードを取得・実行していました。その後のバリアントでは、フォールバック機構としてスペルチェック辞書に偽装した多段階ドロッパーが埋め込まれるようになりました。これは検出を回避するための巧妙な手法です。
macOSシステムでは、攻撃チェーンが「nohup bash -cとcurl -sを組み合わせたバックグラウンドシェルコマンドを実行し、JavaScriptペイロードをリモートから取得してNode.jsランタイムに直接パイプする」という手法を使用します。これにより、プロセスが終了してもマルウェアが持続的に動作し続けます。
展開されるマルウェア群の機能
この攻撃で展開されるマルウェアは、複数のコンポーネントが連携して動作する高度なものです。
BeaverTailは、Node.jsベースのバックドアで、持続的な実行ループを確立します。システムに最初に侵入する「橋頭堡」としての役割を果たし、追加のペイロードをダウンロード・実行する機能を持っています。
InvisibleFerretは、Pythonで記述されたレイヤーで、データ収集と暗号資産マイニングを担当します。ブラウザに保存された認証情報、キーストローク、スクリーンショットなどを収集し、攻撃者のサーバーに送信します。
Tsunami(TsunamiKit)は、フル機能のバックドアで、XMRigクリプトマイナーが統合されています。被害者のシステムリソースを使用して暗号資産をマイニングしながら、同時にリモートアクセス機能を維持します。
感染後の被害と攻撃者の目的
これらのバックドアがシステムに侵入すると、攻撃者は以下のような広範な機能を手に入れます。リモートコード実行とシステムフィンガープリンティングにより、被害者のシステム構成を詳細に把握できます。キーロギングとスクリーンショットキャプチャで、機密情報を継続的に収集します。
特に注目すべきは「暗号資産ウォレットアドレスの置換」機能です。これは被害者が暗号資産を送金する際に、クリップボードにコピーされたウォレットアドレスを攻撃者のアドレスに書き換えるというものです。被害者は気づかないうちに、自分の資産を攻撃者に送金してしまいます。
さらに、AnyDeskリモートアクセスツールが自動インストールされ、攻撃者は被害者のシステムに永続的なアクセス手段を確保します。XMRigベースのクリプトマイニングも並行して実行され、被害者のCPUリソースを消費し続けます。
標的となる人々とその理由
このキャンペーンは、暗号資産、ブロックチェーン、フィンテック分野のソフトウェアエンジニアを重点的に狙っています。報告書によると、これらの開発者が標的となる理由は「金融資産、デジタルウォレット、技術インフラへの特権的アクセス」を持っているためです。
開発者は往々にして、テスト用の暗号資産ウォレットや本番環境へのアクセス権限を持っています。また、開発環境には機密性の高いAPIキーやシークレットが保存されていることも多く、攻撃者にとって非常に価値の高い標的となっています。
実践してみよう
以下のコマンドで、あなたの開発環境に潜む脅威を検出できます。
# VS Codeのtasks.jsonファイルを検索し、危険な設定をチェック
find ~/projects -name "tasks.json" -exec grep -l "runOn.*folderOpen" {} \;
# 最近クローンしたリポジトリのtasks.jsonを確認
cat .vscode/tasks.json 2>/dev/null | grep -E "(runOn|curl|node|bash)"
# 不審なNode.jsプロセスの確認
ps aux | grep -E "node.*nohup|node.*curl"
# 既知のC2ドメインへの通信をチェック
grep -r "vercel.app" ~/projects --include="*.json" --include="*.js"
# macOSでバックグラウンドシェル実行の痕跡を確認
log show --predicate 'process == "bash"' --last 1h | grep -E "nohup|curl.*node"
これらのコマンドで異常が検出された場合は、該当するリポジトリを削除し、システムのセキュリティスキャンを実行してください。
セキュリティTips
-
リポジトリを開く前にtasks.jsonを確認: VS Codeでリポジトリを開く前に、必ず
.vscode/tasks.jsonファイルの内容を確認しましょう。「runOn: folderOpen」が含まれている場合は特に注意が必要です。信頼できないソースからのプロジェクトは、まずテキストエディタで設定ファイルを確認してから開くことをお勧めします。 -
リクルーターの身元を公式チャネルで確認: LinkedInで求人の話を持ちかけられた場合、必ず企業の公式ウェブサイトや採用ページでその担当者の存在を確認しましょう。偽のリクルーターは往々にして、急かしたり、通常とは異なる選考プロセスを提案したりします。
-
開発環境のネットワーク監視を実施: 開発マシンからの不審な外部通信を監視するツールを導入しましょう。特にVercelドメインへの予期しない通信や、Node.jsプロセスからの異常なネットワークアクティビティに注意が必要です。
-
暗号資産ウォレットは分離環境で管理: 開発作業を行うマシンと、本番の暗号資産ウォレットを管理するマシンは物理的に分離することを強く推奨します。万が一開発環境が侵害されても、資産への直接的な被害を防げます。
まとめ
北朝鮮に関連するContagious Interviewキャンペーンは、開発者を標的とした高度な攻撃を展開しています。LinkedInでの偽求人、VS Codeプロジェクトの武器化、多段階マルウェアの展開という巧妙な手法は、従来のセキュリティ対策では検出が困難です。開発者の皆さんは、見知らぬリクルーターからのリポジトリクローン依頼には細心の注意を払い、プロジェクトを開く前に設定ファイルを確認する習慣をつけてください。「ip-regions-check.vercel[.]app」やnpmパッケージ「grayavatar」は既知のIoCですので、これらとの通信がないか定期的にチェックすることも重要です。あなたの開発環境と資産を守るため、今日からセキュリティ意識を高めていきましょう。
📎 元記事: The Hacker News


コメント