AI News HubLIVE
站内改写2 分鐘閱讀

直覺與AI聯手,Python開發者倖免於災難

Python開發者Roman Imankulov通過直覺和AI代理識別出一個偽裝成招聘測試的惡意倉庫。該倉庫包含一個隱藏在npm安裝腳本中的後門,可觸發對攻擊者服務器的請求。AI代理在只讀模式下標記了該惡意文件,避免了潛在的系統損害。

來源Hacker News AI作者: Bender

Python開發者Roman Imankulov差點落入一個精心設計的社交工程陷阱,但他的直覺和AI代碼審查代理阻止了災難的發生。

Imankulov在LinkedIn上收到一位自稱是小型加密貨幣初創公司招聘人員的信息,對方請求他幫助解決一個已棄用的Node模塊問題,並暗示需要一位首席工程師。這種請求讓Imankulov感到不對勁,他回憶説:“我聽説過這些類型的攻擊,我當時想,‘如果我就是目標呢?’這完全基於過去的經驗。”

為了安全起見,Imankulov在Hetzner上啓動了一個VPS來克隆倉庫,並使用他的Pi編碼代理(運行Codex)進行只讀代碼分析。他原本以為代理會返回“一切正常”的結果,但代理卻立即警告説:“不要運行這段代碼,離開,因為這裏有陷阱。”

AI代理標記了一個名為app/test/index.js的文件,其中包含一個後門:一個被分割成看似測試配置的服務器URL,以及一個網絡請求,該請求會執行服務器響應的任何代碼。Imankulov承認自己最初掃描代碼時遺漏了這些細節,而AI代理發現了這個漏洞。

如果直接使用npm install安裝該倉庫,後門會自動觸發。倉庫的package.json文件中包含一個“prepare”鈎子,該鈎子在安裝後自動運行惡意腳本。該惡意倉庫現已被GitHub刪除,但克隆版本仍可找到。

獨立開源安全架構師Devashri Datta指出,這種攻擊的狡猾之處在於它劫持了標準的開發者工作流程:攻擊者沒有依賴目標執行可疑二進制文件,而是依賴npm install這一常規命令。通過在package.json中的prepare生命週期鈎子中隱藏執行邏輯,惡意負載在依賴解析過程中自動觸發。這種技術並不新穎,但由於開發者通常自動運行npm install,所以仍然非常有效。

Imankulov發現,惡意倉庫的提交記錄似乎來自一個擁有成熟網絡形象和作品的開發者。但當他聯繫這位假定的作者時,對方表示自己多次被冒充,並沒有編寫這段代碼。招聘人員的LinkedIn個人資料引用了一位真實的藝術記者,但Imankulov相信該賬號是偽造的。

這類軟件供應鏈社交工程攻擊已經變得普遍。本月早些時候,有報道指出朝鮮關聯的騙子通過虛假面試和招聘信息來入侵開發者賬户。Imankulov的案例顯示,AI代理可以作為有效的防禦工具。Datta表示,Imankulov的做法凸顯了安全意識開發者如何改進代碼審查習慣:他部署了一個在受限只讀環境中運行的本地AI代理,這不易受到疲勞或社交壓力的影響,並能在幾秒鐘內檢測出異常行為。

作為防範措施,npm準備在npm 12中默認禁用allowScripts設置,這意味着npm install將不再自動執行依賴項的安裝腳本。Imankulov表示他轉而使用pnpm來默認禁止腳本執行。Datta強調,企業必須將軟件供應鏈安全擴展到開發者端點,防止攻擊者在代碼進入企業供應鏈之前就進行破壞。