讀後筆記|Visual Studio Code 再成攻擊者目標:DPRK「Contagious Interview」攻擊鏈新進化

本篇文章更新時間:2026/01/23
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


Visual Studio Code 成為攻擊者的新入口:DPRK 惡意程式滲透技術再升級

來自 Jamf Threat Labs 的最新威脅研究分析與我的深度閱讀心得

編輯前言:如果你也常在 GitHub 下載他人專案或用 VS Code 開發,那這篇文章絕對值得一讀。Jamf Threat Labs 最新研究指出,北韓(DPRK)威脅行為者又找到新的方式,把 VS Code 的 tasks.json 變成攻擊入口,甚至能植入具備遠端執行能力的後門。

文章來源Threat Actors Expand Abuse of Microsoft Visual Studio Code


核心觀點 (Key Takeaways)

  • 攻擊者利用 VS Code 的 tasks.json 執行邏輯,只要開啟惡意 repo 並點選信任,就會自動執行惡意命令。
  • DPRK 行動持續進化——包含 obfuscated JavaScript 與 Node.js 為核心的後門,其功能包含系統指紋蒐集、持續性 C2 beaconing 與遠端程式碼執行。
  • 新觀察到的後門程式具備 動態載入 JavaScript 指令、關閉自身、清理環境,並疑似有 AI-assisted code generation 痕跡。

深入解析

Jamf Threat Labs 一直持續追蹤 DPRK 駭客組織的最新變化,而這次的重點,是在原本 Contagious Interview 攻擊鏈上又發現新的「感染方式」。核心概念其實很簡單:攻擊者不再依賴社工誘騙你下載可執行檔,而是把惡意行為藏在開發者最常用的流程裡,像是打開 repo、信任工作區、執行 VS Code 自動程序。

原文提到:「When the project is opened, Visual Studio Code prompts the user to trust the repository author. If that trust is granted… embedded arbitrary commands [may] be executed.」

這句話等於告訴我們:一個看似正常的 GitHub 專案,只要你按下「Trust」,就可能直接執行攻擊者的命令。


1. 初始感染:打開惡意 Repo 就踩雷

攻擊者會建立看似正常的 GitHub/GitLab 專案,通常包裝成面試作業或技術挑戰。當受害者用 VS Code 打開後,VS Code 會去讀取 tasks.json,如果 repo 被信任,其中的 script 就能被自動執行。

在 macOS 上,觀察到的命令包含:

  • 使用 nohup bash -c 執行背景任務
  • 透過 curl -s 下載遠端 JavaScript
  • 直接 piped 到 Node.js 執行,完全不留可執行檔

這種手法極具隱蔽性,也很符合 DPRK 一貫的工程師社工策略。


2. JavaScript 後門:表面複雜、核心精簡

雖然原始 JavaScript 非常巨大且混雜大量無用程式碼,但真正的惡意邏輯其實相當簡潔:

  • 持續性輪詢 C2
  • 收集主機資訊(hostname、MAC、OS details、public IP via ipify)
  • 接收遠端下發的 JavaScript 並動態執行

「This function allows JavaScript code supplied as a string to be dynamically executed…」

這其實代表攻擊者可以在受害者系統上隨時 push 新能力進來。


3. 新版本後門的進一步功能

Jamf Threat Labs 在監控受感染系統時發現,約 8 分鐘後後門會收到第二批 JavaScript 指令,而該 payload 出現幾個值得注意的特徵:

  • 每 5 秒 beacon 一次,保持 C2 session
  • 執行於 child process,增加持久性與穩定性
  • 能根據指令自行結束並清理痕跡
  • 程式碼註解風格與語句類似 AI 生成內容

這個細節特別值得注意。意味著攻擊者開始有效運用 AI 來快速生成惡意模組並迭代攻擊鏈。


筆者心得與啟發

這篇研究讓我最有感的一點,是現代攻擊者正把目標對準「開發流程」本身,而不是傳統的可執行檔或惡意網站。這對工程師來說其實格外危險,因為我們熟悉 VS Code、GitHub、npm,因此往往降低警覺心。

幾個讀完後的反思:

  • 開發環境本身已成攻擊面,尤其是 VS Code 這種會自動執行工作流程的工具。
  • 第三方 repo 不等於安全 repo。就算看起來正常、有 readme、有 commit 歷史,也不代表裡面沒有惡意 tasks.json。
  • Node.js 是攻擊者完美的執行宿主:跨平台、常見於開發環境、可動態執行字串形式的 JavaScript。

如果你常下載開源專案,我建議:

  • 打開 VS Code 專案前,先看一眼 .vscode/tasks.json
  • 不要輕易按下「Trust this author」。
  • npm install 前先檢查 package.json 和 scripts 區塊。
  • 把開發流程當成可能的攻擊面,而不是無害的沙盒。

Jamf 在文末提醒:攻擊者會繼續演化,尤其是 DPRK。這次的技術利用了最自然、最 routine 的開發者操作,而這反而是最危險的地方。

我會持續追蹤這個議題,也建議開發者們把風險視角從「執行檔」擴展到「開發工具本身」。這可能會是未來攻擊者最常利用的切入點。


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon