跳到正文
DEV Community· Renan Santos·· 2 小時前精選AI 評分77

Binance 案件後,如何安全執行帶回家編碼測試並識別假招聘者警號

How to safely run a take-home coding test (fake recruiter red flags after the Binance case)

AI 導讀

Renan Santos 整理了安全處理帶回家編碼測試的指南,建議先核實招聘者、檢查程式碼庫,並只在隔離環境中執行。Binance 在 11 月 3 日的報告稱,2026 年 9 月一名工程師在假招聘面試中下載的作業於設定時執行惡意程式;該公司將失竊金額估計為 $6.3 to $6.4 billion。文中另列出檢查安裝腳本與依賴套件、避免提供真實憑證,以及發現已執行惡意程式後的處置建議。

推薦理由

文章將假招聘者核實、程式碼庫檢查、隔離執行及事後處理整理為一套安全流程,涵蓋從下載測試到發現已執行惡意程式的應對。

正文 · 繁體中文

在家完成的測試很常見;但複製陌生人的程式碼儲存庫,並在工作手提電腦上執行,則不應該。

本週,Binance 公佈一宗盜竊案的詳情,估計涉款約 $6.3 billion 至 $6.4 billion。攻擊鏈中的一環是一場虛假的求職面試。一名工程師收到一份「程式編寫作業」,執行後,安裝程序便執行了惡意軟件。

以下是事件經過,以及一份可供你下次完成在家測試前參考的核對清單。

Binance 所述事件經過

根據 Binance 11 月 3 日的報告,以及The Hacker News、Security Today和The Washington Post的報道:

  • 2026 年 9 月,一名工程師在一個正規求職平台上收到一名冒充項目總監人士的聯絡。
  • 首先,他與一名「人力資源代表」進行視像面試。對方分享了一個載有個人照片的社交媒體帳戶,以建立信任。
  • 第二次面試在一款熱門即時通訊應用程式上進行,對方自稱是一家不存在公司的 CEO。
  • 面試接近尾聲時,工程師被要求把作業下載到工作電腦。
  • 程式碼儲存庫內有會在安裝期間執行的程式碼。這些程式碼以被植入惡意程式碼的元件取代一個正規開發工具元件,並與攻擊者的伺服器通訊。Binance 表示,其端點工具當時沒有偵測到這些程式碼。

那部手提電腦後來成為攻擊者發動其餘攻擊的據點。報道亦提及遭篡改的 Homebrew 安裝程序,以及對內部 AI 工具的濫用。這場面試是攻擊鏈中的一環,但相當重要。

這並非單一事件

安全研究人員記錄這種手法已有一段時間。

ReversingLabs介紹了一個名為「graphalgo」的攻擊行動,並指其由 Lazarus Group 發動。假招聘人員會在 LinkedIn、Facebook 和 Reddit 上接觸 JavaScript 和 Python 開發人員。相關任務會引入惡意 npm 和 PyPI 套件。ReversingLabs 統計到 192 個惡意套件。

Fireblocks Security Research分析了冒充 Fireblocks 的假招聘人員。受害者被要求複製並執行一個「撲克平台」程式碼儲存庫。惡意程式酬載會在 npm start 上觸發。其他變種則使用 npm install。惡意軟件從智能合約下載下一階段程式,因此更難封鎖。

教訓很簡單。危險時刻不是閲讀程式碼,而是執行程式碼。

招聘過程中的警號

單憑以下任何一項都不足以證明是詐騙;若同時出現兩三項,就應放慢腳步。

  • 公司難以查證:沒有可信的網站紀錄、找不到員工,也查不到註冊資料。
  • 招聘人員的個人檔案很新、資料很少,或是主動聯絡你並提出非常優厚的聘用條件。
  • 招聘流程進展很快,略過了與實際團隊通話等正常步驟。
  • 面試轉到個人即時通訊應用程式進行,而非使用公司電郵或知名視像工具。
  • 你應徵的是個人貢獻者職位,「CEO」卻很早便來面試。
  • 測試要求你複製並執行一個完整應用程式,而非完成一個範圍明確的小型問題。
  • 對方催促你立即在自己的電腦上執行程式,無論是在通話期間還是通話結束後。
  • 程式碼儲存庫設為私人、以 zip 檔分享,或託管在一個沒有任何紀錄的帳戶上。
  • 作業以加密貨幣或錢包為主題,並要求你連接區塊鏈或提供 API key。

如何核實招聘人員

  • 自行搜尋公司的網域,不要信任訊息中的連結。
  • 使用該網域的電郵地址聯絡招聘人員。正規招聘人員會使用公司電郵。
  • 到公司的招聘網頁查找相同職位。
  • 在 LinkedIn 搜尋招聘人員和麪試官,查看帳戶建立時間及其人脈是否真實。
  • 如果對方聲稱任職於大型品牌,請透過該品牌的官方網站聯絡查詢。
  • 要求透過常用平台進行通話,並使用公司的行事曆邀請。

如果對方因基本核實而感到不耐煩,這本身已説明瞭一些事情。

執行任何內容前,先檢查程式碼庫

先閲讀,再執行。花 15 分鐘檢查。

  • 開啟package.json並查看scripts。留意preinstall、install、postinstall、prepare、start和test。
  • 檢查你不認識的相依套件。到 npm 或 PyPI 查閲。非常新的套件如果下載次數很少,便是警號。
  • 對於 Python,請閲讀setup.py、pyproject.toml,以及任何requirements.txt中指向可疑名稱或網址的固定版本設定。
  • 搜尋程式碼混淆跡象:長串 Base64 字串、eval、new Function、child_process、exec、curl、wget、powershell。
  • 在設定檔或啟動檔中搜尋網絡呼叫,包括 RPC 端點及合約地址。
  • 查看 Git 歷史記錄。由新帳戶提交的一個龐大 commit 值得留意。
  • 檢查二進制檔案、原始碼資料夾中的最小化檔案,以及藏在資源檔或字型中的檔案。

快速檢查:

git clone --no-checkout <repo> && cd <repo> && git checkout
cat package.json | grep -A20 '"scripts"'
grep -rnE "eval\(|new Function|child_process|base64|https?://" --exclude-dir=node_modules .

在可棄置的環境中執行

如果你決定執行,切勿使用工作手提電腦或自己的主要電腦。

  • 使用用完即棄的 VM、雲端開發環境,或完成後會刪除的容器。
  • 不要將主目錄或 SSH 目錄掛載到該環境。
  • 先停用腳本再安裝:npm install --ignore-scripts。然後再決定實際需要哪些腳本。
  • 盡可能限制網絡存取。程式執行時,留意對外連線。
  • 使用全新建立的非特權用戶。除非工作確實需要,否則不要使用 sudo。
  • 完成後銷毀該環境。

Docker 範例:

docker run --rm -it --network none -v "$PWD":/app -w /app node:22 bash
npm install --ignore-scripts

只有清楚知道為何需要網絡時,才開啟網絡連線。

測試時不要使用任何機密資料

  • 絕不要使用真實的 API 金鑰、雲端憑證或錢包金鑰。
  • 不要在該環境中使用包含你登入資料的瀏覽器設定檔。
  • 不要放入 SSH 金鑰、.npmrc 權杖或 GitHub 權杖。
  • 如果工作需要金鑰,請建立一個全新、權限範圍明確且可棄置的金鑰,並在事後撤銷。
  • 如果工作要求你連接真實錢包,請停止。

如果你已經執行了

  • 立即將該電腦與網絡斷開。
  • 如果那是工作裝置,請立即通知安全團隊。及早處理比感到尷尬更重要。
  • 使用乾淨的裝置更換密碼、權杖、SSH 金鑰及工作階段 Cookie。
  • 假設瀏覽器工作階段已被盜取,並從所有服務登出。
  • 考慮將該電腦完全重新安裝。

給招聘團隊的話

如果你們發送居家測試題,應讓求職者容易信任你們。使用公司電郵。把任務保持簡短。清楚説明求職者可以在容器中執行這些任務。避免使用安裝腳本。求職者現在有充分理由保持謹慎。

簡介我們製作的一套工具

我正把這份檢查清單整理成一套小工具,名為 Safe Take-Home Kit。這套工具以 US$19 預購,尚未出貨。計劃內容包括:虛假招聘人員檢查清單、在容器、devcontainer、VM 或雲端沙盒中執行居家測試題的操作指南,以及一份供 Claude Code 或 Codex 使用的程式碼庫審查提示詞,可標示安裝腳本、混淆手法及可疑網絡呼叫。這只是方便工具,並非保證。以上內容已足以讓你免費保護自己。詳情及退款條款:https://renandlsantos-ai-agent.github.io/safe-take-home/

保持好奇,對自己沒有編寫的程式碼保持警惕。

來源:DEV Community · dev.to