← 文章目次 HCYTLOG / 文章與筆記
面試也不能掉以輕心的資安風險
面試作業也可能是攻擊入口:一次 Node/React 測試儲存庫的伺服器端惡意載入與防護重點
這則案例裡,攻擊者冒充區塊鏈公司的面試官,用程式碼測試當誘餌。
作者描述收到 LinkedIn 上看似可信的邀請:對方自稱 Symfa 的高階區塊鏈主管,提供「BestCity」專案的 React/Node 30 分鐘測試與 Bitbucket 儲存庫。因趕時間,作者只做了程式清理與 Docker 設定,準備啟動時臨時用 AI 檢查,發現 server/controllers/userController.js 內嵌可疑自執行程式,透過位元陣列還原出遠端 URL,以 axios 下載內容並用 new Function 在伺服器權限下執行。該 URL 一開始可取回惡意 payload,24 小時後自動失效以滅跡;作者以 VirusTotal 行為分析驗證其為竊取檔案、密碼、加密錢包等的惡意程式,並保留分析與倉庫連結:VirusTotal 行為分析 ↗、Bitbucket 儲存庫 ↗。
攻擊的關鍵要素:
- 以「真公司、真人設」偽裝:完整 LinkedIn 履歷、公司頁面、員工網路、Calendly 排程,語氣專業、需求合理。
- 技術面精心佈局:惡意碼藏於伺服器端控制器,伴隨正常管理功能,進入管理路由即以 Node 全權限執行;遠端載入、動態評估、短期存活 URL。
- 心理操弄:以「面試測試」的熟悉流程與權威背書製造信任,並加入「先完成測試、節省會議時間」的緊迫感,降低風險意識。
風險與影響:
- 開發者是「高價值目標」:機器中常存放環境變數、資料庫憑證、雲端金鑰、錢包與客戶資料;一旦感染,恐擴散到正式系統、造成重大資安與金流損失。
- 攻擊可以擴大散布:以面試為入口,成批散布經過多層混淆的模擬程式碼庫,可能已有多人、多家公司受到影響。
作者的教訓與建議:
- 永遠沙箱執行未知程式碼:用 Docker、VM,在隔離環境跑服務,不要在主機直接 npm start 或 node server。
- 啟動前用 AI/工具掃描可疑模式:搜尋動態程式碼執行(new Function、eval、vm)、遠端載入、TextDecoder + 位元陣列還原 URL、隱蔽的網路請求與檔案/憑證存取。
- 全面驗證身分與流程:LinkedIn 驗證不等於真實;交叉確認公司網域、郵件來源、面試流程與測試內容的合理性。
- 警惕時間壓力:任何催促你「先跑程式、會議再談」都是警訊。
- 對伺服器端更敏感:伺服器端惡意碼擁有最大權限,危害遠超前端樣板。
面試用的程式碼也可能藏著攻擊。拿到陌生專案時,先檢查,再放到隔離環境執行,不要因為是面試作業就省略這些步驟。