2026 年每日通報的 CVE 數量比前一年多 131%。

供應鏈

什麼是 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 攻擊如何運作

  1. 收集名稱。攻擊者向模型提出常見的程式設計問題,記下哪些套件並不存在。
  2. 發布套件。他們在 npm 或 PyPI 註冊這些名稱,放上可正常運作但暗藏惡意酬載的套件。
  3. 等待。開發人員貼上建議的程式碼,或程式設計代理程式自行執行安裝。
  4. 執行。安裝腳本在開發人員的電腦上或 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 中審查新的相依套件、要求代理程式在安裝任何東西前取得核准,並限制建置的對外流量。

圍堵沒有人打算安裝的套件

封鎖建置不需要的對外連線,並保留建置取得之每個套件的紀錄。

預約示範