本篇文章更新時間: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 的開發者操作,而這反而是最危險的地方。
我會持續追蹤這個議題,也建議開發者們把風險視角從「執行檔」擴展到「開發工具本身」。這可能會是未來攻擊者最常利用的切入點。
