我檢查了回家完成的面試作業,結果竟是一場完整的攻擊行動 (★ 236 分)
一名軟體工程師在 LinkedIn 收到 Python 開發職缺邀請,月薪 1 萬至 1.5 萬美元,職務為可轉正的遠端合約職位。對方很快核准履歷,並提供 Google Drive 上的壓縮檔與測驗說明 PDF。壓縮檔表面上是使用 FastAPI 與 SQLAlchemy 的一般 Python 後端專案,套件清單也沒有明顯的偽裝套件名稱(typosquatting);但檢查隱藏資料夾後,作者發現專案內含大量預先設定的 Git hooks(Git 勾點)。
其中的 `pre-commit` 腳本會辨識 macOS、Linux 或 Windows,再經由 `curl` 或 `wget` 從裸露的 IP 位址下載指令,直接交給 Shell 或 Windows 命令列背景執行。Linux 階段會下載第二個負載,改名為 `tokenlinux.sh`,放入使用者的 `Documents` 資料夾,並用 `nohup`(讓程式在登出或關閉終端機後仍持續執行)啟動。後續腳本會下載混淆嚴重的 `parser.js` 與 `package.json`,安裝 Node.js 套件並悄悄執行。套件包含剪貼簿、檔案系統、程序控制與網路請求功能,還有 Hardhat(以太坊開發工具);作者因此推測攻擊者可能企圖搜尋或竊取加密貨幣錢包,但文章並未證實最終用途。網址中的 `id` 參數會改變回傳腳本,顯示攻擊者可能為不同求職者分配識別碼並提供客製化負載。
進一步調查顯示,這不是單一事件:其他受害者收到的專案可能在 `.vscode` 資料夾內藏有開啟目錄時執行的指令,不必先執行 Git 指令也可能遭到感染。Git 紀錄則顯示,攻擊者只是複製公開的個人理財 FastAPI 專案,再加上一個惡意隱藏資料夾,並冒用一家新創公司的名稱。作者對攻擊者 IP 位址進行 Nmap 掃描,發現三個開放連接埠,其中 SSH 使用 Ubuntu 上的 OpenSSH 9.6p1,未找到可利用的已知 CVE(常見漏洞與暴露項目)。文章最後提醒,執行陌生專案前應檢查 `.git`、`.vscode` 等隱藏內容,並避免直接在日常電腦上執行求職測驗。
Hacker News 討論者認為,這類以求職為掩護的攻擊很可能會更加普遍,背後或許結合自動化工具、大型語言模型,甚至可能與北韓 APT(進階持續性威脅)活動有關,但後者在討論中沒有充分證據。有人建議先經由公司官方網站或正式公司電子郵件確認招募者身分;也有人提醒,正式管道未必容易辨認,LinkedIn 雖已提供公司電子郵件驗證功能,實際使用率仍不高,因此即使招募看似可信,也不應直接執行不受信任的程式碼。
討論中最一致的實務建議,是使用自己建立的一次性虛擬機器或容器,並確保沒有憑證、主機資料夾掛載或其他重要資料;不要依賴招募方提供的環境,因為那個環境本身也可能不可信。有人指出,VS Code 的 Workspace Trust(工作區信任)可阻擋部分自動執行,但許多使用者不會仔細閱讀提示。另有一名參與者分享自己遇到相似事件:面試過程要求執行合法公司的開放原始碼專案,事後才發現其中藏有惡意負載;他已啟用雙因素驗證、避免使用套件發佈權杖,並計畫清除電腦後重新安裝。討論者也警告,這類「回家完成的面試作業」除了可能散播惡意程式,也可能被拿來免費竊取求職者的工程解答。
👥 54 則討論、評論 💬
https://news.ycombinator.com/item?id=49013036