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強調,企業必須將軟體供應鏈安全擴充套件到開發者端點,防止攻擊者在程式碼進入企業供應鏈之前就進行破壞。