北朝鮮関連のハッカーが悪意のあるVS Codeプロジェクトで開発者を狙う
北朝鮮に関連するハッカーが、悪意のあるMicrosoft Visual Studio Code(VS Code)プロジェクトを利用して開発者を標的にしていることが報告されました。この攻撃は、開発者がGitHubやGitLabからリポジトリをクローンし、VS Codeでプロジェクトを開くことを促す形で行われます。攻撃者は、VS Codeのタスク設定ファイルを悪用し、リモートコード実行を可能にするバックドアを展開します。これにより、被害者のシステムに対して持続的なアクセスが確保され、情報の収集やデジタル資産の盗難が行われる可能性があります。
メトリクス
このニュースのスケール度合い
インパクト
予想外またはユニーク度
脅威に備える準備が必要な期間が時間的にどれだけ近いか
このニュースで行動が起きる/起こすべき度合い
主なポイント
- ✓ 北朝鮮のハッカーがVS Codeプロジェクトを悪用し、開発者を狙った攻撃を行っています。
- ✓ 攻撃者は、リモートコード実行を可能にするバックドアを展開し、被害者のシステムに持続的なアクセスを確保します。
社会的影響
- ! この攻撃は、開発者のセキュリティ意識を高める必要性を示しています。
- ! 特にフィンテック分野では、サイバー攻撃による影響が大きく、企業の信頼性にも影響を与える可能性があります。
編集長の意見
解説
VS Codeタスク悪用で開発者環境から侵入、北朝鮮関連キャンペーンが「悪性プロジェクト」を餌に進化です
今日の深掘りポイント
- 悪性のVS Codeプロジェクト内のタスク設定(.vscode/tasks.json)を踏み台に、ユーザー操作を装ったリモートコード実行とバックドア展開が行われるリスクが高まっています。
- 開発者端末の侵害はCI/CDやパッケージ配信経路に波及しやすく、「開発環境→サプライチェーン」の汚染を引き起こす最短ルートになりやすいです。
- 開発者の“信頼”操作(Workspace Trust、preLaunchTask実行など)を前提に設計されたIDEの利便性が、攻撃の突破口になりやすい構造的課題が浮き彫りです。
- 直ちにできる対策(VS Codeの信頼モード強制、タスク自動検出の抑止、Code.exe子プロセス監視、.vscode差分のレビュー厳格化)は行動可能性が高いです。
- 本件は既知の「Contagious Interview」系の流れに沿った進化とみられ、求人・面談・コーディング課題を絡めた社会工学とIDE実行基盤の組み合わせを前提に備えるべきです。
はじめに
開発者を狙う攻撃は、いまや国家系・金銭目的を問わず、もっとも効率の良い初期侵入の手法のひとつになっています。報道によれば、北朝鮮に関連するアクターが、GitHub/GitLab上のリポジトリを「普通のプロジェクト」に偽装し、VS Codeで開くことを誘導することで、タスク設定からリモートコード実行を引き起こし、持続的なアクセスを確立する手口が確認されています。既存の「Contagious Interview」キャンペーンの文脈とも整合的で、開発者の心理と作業習慣を巧妙に突いてくる点が特徴です。
本稿では、報道で示された事実の骨子を押さえつつ、IDEと開発運用(DevOps)の接点で生じる構造的リスク、そしてSOC/CSIRTがすぐに組み込める検知・隔離・運用の現実解を掘り下げます。
参考:
深掘り詳細
事実の整理(報道ベース)
- GitHubやGitLabに用意されたリポジトリを開発者がクローンし、VS Codeで開くよう誘導されます。
- プロジェクト内のVS Codeタスク設定(.vscode/tasks.json 等)を悪用し、ユーザー操作(ビルド、デバッグ、テストなど)に紐づく形で任意コード実行に繋げます。
- 攻撃者はバックドアを展開し、被害端末に持続的アクセスを確保したうえで、情報収集やデジタル資産の窃取を狙います。
- 狙いは主にソフトウェアエンジニア、とくに暗号資産・フィンテック分野が含まれ、サプライチェーンへの波及可能性が指摘されています。
- これらは既存の「Contagious Interview」型の延長として理解でき、偽の案件・面談・テスト課題でコード実行に必要な“最後のクリック”を誘う文脈と親和的です。
出典: 上記The Hacker News報道
インサイト(筆者の視点)
- IDEは「ユーザーが意図的に動かす」前提で権限委譲が起きやすい
VS Codeは安全設計としてWorkspace Trustなどの安全策が用意されていますが、外部プロジェクトのビルド・デバッグを行うには“信頼する”操作がどうしても必要になります。ここに「リポジトリを信頼できるように見せる」「課題を急がせる」といった社会工学が加わると、攻撃者はIDEの正規機能の範囲内でRCEに到達しやすいです。利便性と安全性のせめぎ合いがボトルネックで、技術設定だけでなく運用・教育の組み合わせで対処する必要があります。 - “開発者端末=認証情報と鍵の集積地”という現実
開発者のPCには、パッケージ署名鍵、GitHub/PAT/gh CLIの資格情報、クラウドCLIのプロファイル、CI/CDへの権限移譲トークンなどが集まりがちです。一度IDE経由で初期実行に成功すれば、攻撃者は騒がず「静かに鍵を集める」戦術を取れます。これがサプライチェーン汚染の起点になるため、単なるマルウェア検知よりも「権限と鍵の露出最小化」を先にデザインすることが肝心です。 - 「新しさ」より「成功確率と再現性」を重視した手口
タスクやデバッグ設定の悪用は斬新さで勝負するゼロデイではなく、“誰もが踏める”ユーザーフローに寄り添う設計です。つまり、広く再現しやすい=確率の高い攻撃であり、直ちに行動できる守り(設定強化・運用統制・検知)が有効に効く領域です。
補足: Workspace Trust等の一般仕様はVS Code公式ドキュメントに掲載されています(例: workspace trustの概念や不審フォルダを制限する設計など)。本件の手口理解にも役立つ前提情報です。
脅威シナリオと影響
以下は本件報道を踏まえた仮説ベースのシナリオで、MITRE ATT&CKに沿って整理します(実際のインシデントごとに差異がありうる点は留意ください)。
-
シナリオ1: 悪性プロジェクト開封→タスク実行で初期侵入
仮説フロー:- Initial Access: T1204 User Execution(リポジトリを開き、タスクやデバッグを起動)
- Execution: T1059 Command and Scripting Interpreter(PowerShell/シェル/Node等)
- Defense Evasion: T1036 Masquerading(正規タスク名・ビルドスクリプト名を偽装)
- Persistence: T1053 Scheduled Task/Job または T1547(ログオンスクリプト/Runキー等)
- C2: T1071 Web Protocols(HTTP/HTTPSでC2通信)
- Impact: 継続的アクセス基盤の確立、後続の窃取・横展開の準備
-
シナリオ2: 開発者資格情報の収集→リポジトリ改ざん・CIへの横展開
仮説フロー:- Credential Access: T1555 Credentials from Password Stores / T1552 Unsecured Credentials(git-credential、ブラウザ、各種CLI)
- Discovery: T1082 System Information Discovery / T1016 Network Discovery(開発環境の把握)
- Lateral Movement: T1021 Remote Services(社内Git/CI/CD、JumpHost等)
- Impact: T1195 Supply Chain Compromise(ビルド定義・依存パッケージの改ざん)
-
シナリオ3: 暗号資産・機密の即時窃取
仮説フロー:- Collection: T1005 Data from Local System(ウォレットCLI、署名鍵、APIキー)
- Exfiltration: T1041 Exfiltration Over C2 Channel
- Impact: 金銭的被害、顧客・パートナーへの連鎖リスク
-
シナリオ4: 静的防御回避と長期潜伏
仮説フロー:- Defense Evasion: T1564 Hide Artifacts(一時ファイル、難読化)、T1112 Modify Registry(Windows)
- Persistence: T1543 Create or Modify System Process(サービス常駐)やユーザーレベルのLaunch Agent(macOS/Linux相当)
- Impact: 発覚までの滞留を長期化し、鍵・設計情報・脆弱なビルド手順の継続収集
影響評価の観点:
- 発生確率は高めで、IDEの標準機能と開発運用の“常道”をなぞるだけで成立するため、広範な開発組織で再現可能性が高いです。
- ただし、対策の「行動可能性」も高く、IDE設定の強制・プロジェクト受入れ基準・プロセス監視・鍵管理の4点を揃えることで、侵入の初手の成功率を大幅に下げられます。
- サプライチェーンへの波及が最大のリスクで、単一端末の感染でも「署名鍵」「CIトークン」に触れられる設計であれば一点突破で連鎖被害に繋がります。
セキュリティ担当者のアクション
“まずやるべきこと”と“続けてやること”を時間軸で分けます。いずれも大きな投資を要さない即効策を優先します。
-
すぐに(24–72時間)
- VS Codeの信頼モードとタスク実行のガードを強制します。外部由来フォルダはRestricted/Untrustedで開く運用を標準にし、preLaunchTask等が動く前にレビューを必須化します。
- EDR/SIEMでの親子プロセス監視を追加します。Code.exe/Visual Studio Codeが親で、以下が子として起動される事象を高優先度アラートにします:
- Windows: powershell.exe、cmd.exe、wscript.exe、cscript.exe、mshta.exe、node.exe、python.exe
- macOS/Linux: /bin/sh、/bin/bash、curl/wget経由のシェルチェーン、osascript(macOS)
- プロキシ/Firewallで新規・不審ドメインへの開発端末からの直接外向き通信を制限し、開発端末はレジストリ/パッケージ公式レジストリ等への限定的アウトバウンドに絞ります。
- Gitワークフローに「.vscode/」「.devcontainer/」「.idea/」「.vs/」「package.json scripts」など“実行に影響する構成ファイル”の変更が含まれる場合、強制的にセキュリティ/レビュアーをアサインするCODEOWNERSルールを導入します。
- メール・SNS・チャット経由で届く「テスト課題」「サンプルプロジェクト」を社外プロジェクトとして扱うガイドラインを即時告知します(“信頼せず新規ウィンドウで開く”“ローカル鍵に触れないサンドボックスで開く”を徹底)。
-
短期(1–2週間)
- 開発用サンドボックスを標準化します。具体的には「使い捨てVM/コンテナ(devcontainer/Codespaces等)」「シングルサインオンで最小権限」「ローカルに秘密鍵やPATを置かない」を原則に、社外リポジトリは必ずサンドボックスで開く運用に寄せます。
- PAT/トークンを棚卸しします。Fine-grained PAT、期限付きトークン、CIはOIDC連携でシークレットレス化し、ローカルのgit-credential-managerやgh CLIのキャッシュを最小化・暗号化します。
- 静的スキャンを追加します。PR/コミット時に、.vscode/tasks.json/launch.json、package.jsonのscripts、Makefileなどにcurl/wget/Invoke-WebRequest、-enc、Base64、外部スクリプトのダウンロード実行が含まれないかのパターンマッチをCIに組み込みます。
- 端末常駐の持続化手口のハンティングを週次で実施します(Windows Runキー、Scheduled Tasks、macOS LaunchAgents/Daemons、cron等)。
-
中期(30–60日)
- 開発ネットワークを分離し、CI/CD・署名基盤・アーティファクトレジストリへのアクセスを踏み台経由でのみ許可するゼロトラスト構成に移行します。開発端末からの直接署名・直接デプロイを無くします。
- 依存のサプライチェーン健全性を“人とプロセス”で担保します。外部リポジトリは必ず読み取り専用の中間ミラーに入り、レビューを経て社内ミラーに取り込む二段階フローにします。開発者が“生の外部”をそのまま信頼する場面を排除します。
- セキュリティ教育はIDE前提で刷新します。Workspace Trustやタスク、launch、devcontainer、パッケージscriptsなど「普段触っている機能が実行境界になる」事実を、実演ベースで腹落ちさせます。
-
SOC/ハンティングのヒント
- ふるまい観測
- Code.exe(または“Visual Studio Code”)→ 子プロセスが即時にネットワーク接続(外部IP/TLD)を開く系列
- VS Code開始直後のユーザープロファイル/秘密鍵ディレクトリ(.ssh、.gnupg、各種CLI creds)へのアクセス急増
- ファイル監視
- .vscode/tasks.json/launch.jsonにおけるcurl/wget/Invoke-WebRequest、powershell -enc、bash -cなどの挿入
- devcontainer.jsonのpostCreateCommand/postStartCommandに外部取得コマンドが追加される差分
- アラート運用
- “社外由来プロジェクトをTrustedにする操作”をトリガに、以後のCode.exe発子プロセスを高感度でモニタリング(ユーザープロンプト時の判断ミスを想定)
- ふるまい観測
最後に。本件は「驚異的なゼロデイ」ではなく、「日常の開発フローがそのまま攻撃の土台になる」という地に足の着いた脅威です。だからこそ、設定・運用・教育・観測という4点セットが素直に効きます。開発者の“いつもの習慣”を少しだけ変えるだけで、攻撃者の“いつもの手口”は驚くほど通らなくなります。今日から変えられるところから、変えていきたいです。
参考情報:
背景情報
- i この攻撃は、開発者がGitHubやGitLabから悪意のあるリポジトリをクローンし、VS Codeで開くことを促す手法を用いています。VS Codeのタスク設定ファイルを悪用することで、攻撃者はリモートから悪意のあるコードを実行することが可能になります。
- i 攻撃者は、特に暗号通貨やフィンテック分野の開発者を狙っており、これによりデジタル資産や内部システムへの不正アクセスを試みています。