供應鏈
什麼是 Slopsquatting?
Slopsquatting(AI 幻覺套件搶註)是一種搶先註冊 AI 程式設計助理所捏造之套件名稱的攻擊。當模型建議一個不存在的套件時,攻擊者就能以該名稱發布惡意軟體,下一個照著建議做的開發人員或代理程式便會安裝它。這就像是不需要打錯字的錯字搶註(typosquatting)。
更新日期
名稱的由來
這個詞是 typosquatting 的文字遊戲,其中「slop」指的是低品質的 AI 產出。一般認為它是由 Python Software Foundation 的駐點資安開發人員 Seth Larson 於 2025 年提出。
套件幻覺如何發生
語言模型寫出的是看起來最可能的內容。一個貌似合理的名稱,例如處理常見任務的函式庫,看起來可能和真實名稱一樣可信,因此模型有時會為一個從未有人發布過的套件寫出 import 或安裝指令。
一項在 USENIX Security 2025 發表的研究以 576,000 個程式碼範例測試了 16 個熱門模型。商用模型的幻覺套件比例至少為 5.2%,開源模型則為 21.7%,共出現 205,474 個不重複的捏造名稱。研究人員將此問題描述為持續性且系統性的。
Slopsquatting 攻擊如何運作
- 收集名稱。攻擊者向模型提出常見的程式設計問題,記下哪些套件並不存在。
- 發布套件。他們在 npm 或 PyPI 註冊這些名稱,放上可正常運作但暗藏惡意酬載的套件。
- 等待。開發人員貼上建議的程式碼,或程式設計代理程式自行執行安裝。
- 執行。安裝腳本在開發人員的電腦上或 CI 中執行,並能存取權杖與機密。
Slopsquatting 與錯字搶註比較
| 錯字搶註(Typosquatting) | Slopsquatting | |
|---|---|---|
| 錯誤來源 | 人打錯名稱 | 模型捏造名稱 |
| 名稱 | 與真實套件相近 | 貌似合理,但背後沒有真實套件 |
| 誰會安裝 | 開發人員 | 開發人員,或沒有人看過名稱的代理程式 |
| 為何更難偵測 | 相似名稱檢查可將它與熱門名稱比對 | 可能根本沒有可比對的熱門名稱 |
為什麼程式設計代理程式讓風險更高
使用聊天助理時,人會在執行前先讀過建議。程式設計代理程式則可以一步完成撰寫程式碼、加入相依套件與執行安裝。原本能攔下許多不良名稱的人工檢查不見了,而安裝會在代理程式執行的任何地方進行,經常使用開發人員的憑證,或在 CI 內執行。更完整的說明請參閱AI 輔助開發的資安。
如何防範 Slopsquatting
- 安裝前先驗證。確認建議的套件確實存在、有真實的儲存庫,而且有歷史紀錄。上週才建立的套件值得懷疑。
- 審查 lockfile 的變更。無論程式碼是由誰或什麼撰寫,新的相依套件都應該在 pull request 中可見。請參閱lockfile 記錄了什麼。
- 限制代理程式的權限。要求代理程式在安裝套件前取得核准,並在沒有正式環境憑證的沙箱中執行代理程式。
- 延後採用新套件。設定規則拒絕最近幾天才發布的套件會有幫助。
- 在建置允許的情況下停用安裝腳本。
- 限制建置的對外流量。無法連線到攻擊者的套件,就無法把您的機密傳送到任何地方。請參閱GitHub Actions 對外連線政策。
新的 slopsquatting 套件沒有任何資安公告,因此 SCA 掃描或 npm audit 都不會回報它。完整的管控措施清單請參閱軟體供應鏈安全最佳實務。
CRACI 如何限制損害
CRACI 不會偵測新的惡意套件,因此請以其他工具審查套件。它的作用是在惡意套件進入您的建置時限制危害。作為您的 GitHub Actions 執行器,它會強制執行對外連線政策,封鎖建置不需要的連線,即使是從未有人見過的攻擊也能提供保護。它也會記錄每個作業取得的每個套件,因此一旦得知某個不良套件,您就能看到哪些建置引入了它。
Slopsquatting 常見問題
什麼是 Slopsquatting?
一種攻擊手法:有人搶先註冊 AI 程式設計助理所捏造的套件名稱,讓任何照著建議做的人都安裝攻擊者的程式碼。
Slopsquatting 這個詞是誰提出的?
一般認為是由 Python Software Foundation 的駐點資安開發人員 Seth Larson 於 2025 年提出。
什麼是幻覺套件?
AI 模型所建議、但實際上並不存在的套件名稱。研究發現,這種情況出現在相當比例的生成程式碼範例中。
Slopsquatting 與錯字搶註有什麼不同?
錯字搶註仰賴人打錯真實的套件名稱。Slopsquatting 則仰賴模型捏造一個從未存在的名稱,因此沒有真實的套件可以比對。
如何防範 Slopsquatting?
驗證建議的套件確實存在、在 pull request 中審查新的相依套件、要求代理程式在安裝任何東西前取得核准,並限制建置的對外流量。