一句話總結: 2026 年,假「客戶」兩次想讓我執行他們的程式碼。6 月那次得逞了:測試專案把惡意程式藏在它的一個 npm 相依套件裡,跑了好幾天,沒有任何防毒軟體出聲。10 月那次我拒絕了。兩次走的都是 FBI 認為與北韓有關的同一套手法;沒有人正式認定我這兩次是誰做的,但它們和這套手法吻合。FBI 的建議:不要在工作電腦上執行面試程式碼,非執行不可就用一台獨立的虛擬機,並透過另一個管道查證徵才方是誰。
6 月:測試專案本身就是惡意程式
完整經過請見我之前的文章 我在 Upwork 上兩次撞上北韓駭客的假面試。簡單說:一個自由接案平台上的「客戶」給了我一道程式測驗。
「He sent over a Node.js test project called "Online_Store". The malicious code was hidden in one of its npm dependencies.」(他傳來一個叫「Online_Store」的 Node.js 測試專案。惡意程式碼就藏在它的一個 npm 相依套件裡。)
我好一陣子都沒察覺:「By the time I noticed, it had been running in the background for days.」(等我發現時,它已經在背景跑了好幾天。)
而且什麼都沒有警告我:「neither macOS's built-in XProtect nor traditional antivirus made a sound, either time.」(macOS 內建的 XProtect 和傳統防毒軟體,兩次都毫無反應。)
10 月:不開鏡頭,「裝一下這個會議軟體」
四個月後,來了一個新「客戶」,這次來自一家假公司。視訊通話時,「He kept his camera off」(他一直沒開鏡頭)。接著,「we had to switch to a meeting app called "Zeff"」(我們得改用一個叫「Zeff」的會議軟體),而要安裝它,我得「run a curl | bash command in the terminal, or download a DMG. I didn't install it.」(在終端機裡執行一道 curl | bash 指令,或者下載一個 DMG。我沒裝。)
指令和網址都不會出現在影片和本文裡:這裡談的是如何識破誘餌,而不是它會裝上什麼。
一套已知的手法
回頭看,兩次嘗試的形狀一樣:「Both attacks followed the same playbook: contact, build trust, the ask, the payload. The second time, I stopped at the payload.」(兩次攻擊走的是同一套劇本:聯繫、建立信任、提出要求、投放惡意程式。第二次,我在投放惡意程式那一步停下了。)
FBI 曾對這種形狀發出警告。它的公共服務公告 PSA 240903 題為「North Korea Aggressively Targeting Crypto Industry with Well-Disguised Social Engineering Attacks」(北韓以偽裝巧妙的社交工程攻擊猛烈鎖定加密貨幣產業)。我的兩次經歷和它描述的模式吻合;沒有人正式認定它們的來源,所以我不會說是北韓駭了我。
為什麼瞄準的是人
幣安遭竊後,Aikido 的 Mackenzie Jackson 在接受 BBC 訪問時描述了一種轉變。用 BBC 的話來說:「He says hackers have shifted from going after company infrastructure to going after the machines of the people who run it.」(他說,駭客已經從攻擊公司的基礎設施,轉向攻擊維運這些設施的人所用的機器。)
至於手段:「Jackson says techniques vary, but include tricking workers into installing malware under the pretext of a job interview, or interfering with code that developers rely on.」(Jackson 說,手法各不相同,但包括以求職面試為藉口誘騙員工安裝惡意程式,或者竄改開發者所依賴的程式碼。)
Jackson 描述的是常見手法,並不是在說幣安是怎麼被攻破的。
危險訊號
FBI 把這一條列為指標之一:「Requests to conduct a "pre-employment test" or debugging exercise that involves executing non-standard or unknown Node.js packages, PyPI packages, scripts, or GitHub repositories.」(要求進行「到職前測驗」或除錯練習,其中涉及執行非標準或來路不明的 Node.js 套件、PyPI 套件、腳本或 GitHub 儲存庫。)
從我自己的兩次經歷,還能再加兩條:一個始終不開鏡頭、想改用一個你從沒聽過的軟體的「客戶」;以及要你把一道指令貼進終端機的要求。
補救方法
- 不要在工作電腦上。 FBI:「Avoid taking pre-employment tests or executing code on company owned laptops or devices.」(避免在公司所有的筆電或裝置上進行到職前測驗或執行程式碼。)
- 非執行不可,就隔離開來。 FBI 的建議,簡單來說:在一台沒有連上公司的裝置上使用虛擬機,或者使用測驗方提供的裝置。
- 透過另一個管道查證。 FBI:「Develop your own unique methods to verify a contact's identity using separate unconnected communication platforms.」(建立你自己獨有的方法,透過互不相連的獨立通訊平台查證聯絡人的身分。)
之後我做了什麼
事後,我做了一個工具:「So I built a small macOS menu bar app called Tsuba」(所以我做了一個 macOS 選單列小工具,叫 Tsuba)。它的想法是:「before unfamiliar code runs for the first time, it takes a look for you.」(陌生的程式碼第一次執行之前,先替你看一眼。)Tsuba 免費而且開源。它排在上面這些習慣之後,而不是取代它們。
來源
- Oliver Zhang,我在 Upwork 上兩次撞上北韓駭客的假面試,oliverz.dev,2026 年 10 月 28 日
- FBI,PSA 240903: North Korea Aggressively Targeting Crypto Industry with Well-Disguised Social Engineering Attacks,2024 年 9 月 3 日
- BBC News,幣安遭竊事件的直播頁面,2026 年 10 月 30 日
影片以程式碼製作動畫,腳本在 AI 協助下撰寫;上面每個事實都對照來源查證過。示意的部分:專案目錄樹和那個標紅的相依套件、「未發現威脅」的盾牌、視訊通話,以及打了碼的終端機指令。本文說明的是風險和補救方法,不是攻擊的具體步驟。影片為英文。影片用 Shotloop 製作:我做的免費 Mac 應用程式,用程式碼做科普短片,一個鏡頭一個鏡頭地修改。
