Xygeni 安全术语表
软件开发和交付安全术语表

什么是蹲式蹲坐?

什么是蹲式露营? 这是一次攻击 恶意攻击者会注册人工智能编码助手臆想出的确切软件包名称,然后将恶意软件加载到这些软件包中,并等待开发者安装它们。这并非个例。在……发表的研究中…… USENIX 安全 2025, 在 576,000 个代码样本中,AI 编码模型推荐的软件包中有 19.7% 并不存在,研究人员记录了测试模型中超过 205,000 个独特的虚构名称。

理解什么是“占屋”(以及“占屋”在实践中的具体表现)至关重要,因为它不仅仅是人工智能的一个怪癖。“占屋”是人工智能时代对……的继承。 注册近似域名但两者之间有一个关键区别:拼写错误域名抢注依赖于人的拼写错误,而模型错误域名抢注则依赖于模型的重复性错误,这种错误具有足够的规律性,使得攻击者能够大规模地利用它。本指南将解释什么是模型错误域名抢注,为什么它的传播速度比软件包审核的速度更快,它会造成哪些风险,以及组织如何在它进入生产环境之前发现并阻止它。

邋遢地占地含义:定义 #

“占位注册”的正式含义是:注册一个大型语言模型凭空想象出来的包名(一个听起来合情合理但实际上并不存在于任何公共注册表中的虚构名称),并在其中加载恶意代码。 在真正的开发者根据人工智能的建议安装它之前.

该术语将域名抢注(通过常见的拼写错误注册一个模仿真实域名的软件包名称)的概念扩展到了生成式人工智能的特定故障模式。如果说域名抢注利用的是人类的拼写错误,那么拼写错误抢注则利用的是生成式人工智能的拼写错误。 人工智能模型的幻觉n一个编码助手建议使用 pip install 或 npm install 安装一个从未存在过的软件包,而注意到同一个虚构名称在提示中反复出现的攻击者会首先注册它。

从实际角度来看,“恶意占位攻击”(Slopsquatting)指的是:一种供应链攻击,它利用模型错误作为攻击手段,而除了信任人工智能的建议之外,无需任何人为操作。这并非纸上谈兵。2023 年,一个被植入的、原本只是出于良性测试目的的恶意软件包,在三个月内未经任何推广的情况下,下载量就超过了 30,000 万次,这证实了利用这种模式的恶意变种如今已存在于公共注册表中。

懒散蹲坐与打字蹲坐:有什么区别? #

域名抢注和域名拼写错误抢注的结果相同(开发者误以为是合法程序包而安装了恶意软件),但错误的根源却截然不同。

域名抢注依赖于人的输入错误:开发者本想输入“requests”,却误输入了“requests”,而注册了这个拼写错误的域名的攻击者正伺机而动。风险就藏在开发者的一次击键,一次疏忽之中。

域名抢注完全消除了人为错误,取而代之的是模型错误,这种错误会在每个收到类似提示的开发者身上大规模重复出现。后续分析发现,当研究人员对相同的提示重复运行十次时,43% 的虚构包名在每次运行中都会出现,58% 的包名重复出现不止一次。这种可重复性正是域名抢注可被利用的原因:攻击者无需猜测拼写错误,只需观察模型反复出现的虚构名称,并在真正的开发者之前将其注册即可。

最大的区别在于规模。拼写错误导致的软件包被抢注,只是等待用户出现拼写错误。而粗制滥造的软件包则需要等待同样的AI生成推荐信息传递给下一个开发者,再下一个,如此往复,最终传递给使用同一模型的每个组织中的其他开发者。

为什么选择蹲式铺路法? #

域名抢注泛滥的原因与域名拼写错误抢注一样:攻击者利用了一种开发者默认信任的、可预测的模式。不同之处在于这种信任的规模。

人工智能辅助编码的兴起自主代理和“直觉编码”工作流程(开发人员在运行代码之前审查的代码越来越少)从两个方面改变了软件的攻击面:

攻击的入口不再仅仅是开发者。域名抢注攻击可能源于某个人的拼写错误,而域名错误抢注攻击则可能起源于模型内部,并传播给数百名提出类似问题并收到相同错误建议的开发者,从而成倍扩大攻击的影响范围。

攻击面已经进一步上移。仅仅审查人工编写的代码已经远远不够。团队还需要监控 AI 助手建议的依赖项、它连接的 MCP 服务器,以及那些无需人工直接审核即可自主安装软件包的代理。传统的应用安全机制旨在审查代码库和人工编写的代码,而如今,这些威胁已经难以防范。 commits 从未被设计用来观察开发者、人工智能和软件包注册表之间的这种新的交互,而这正是恶意抢注软件包的隐患所在。

非法占地风险 #

非法占用房屋会造成多方面的风险,这些风险相互叠加,而且这种趋势正在加速发展,而不是逐渐消失。

  • 可重复利用。 由于幻觉中出现的名字并非随机生成,同一个虚假名字会在不同的会话和模型中以可预测的方式反复出现。攻击者无需猜测,只需观察模型行为并记录那些反复出现的名字,即可将一次性的幻觉转化为可扩展、可重复的攻击。
  • 主动传播。 恶意抢注不再局限于开发者复制粘贴推荐的安装命令。2026年1月,研究人员发现,人工智能编码代理已经将指向一个虚构的npm包的指令传播到237个代码仓库中,而且这些代理至今仍在每天尝试安装该包,整个过程无人干预,无法发现错误。
  • 规避名称相似性。 大约 38% 的恶意软件包名称与真实软件包名称非常相似,这降低了开发者一眼就能发现替换的概率。一个与受信任依赖项名称仅相差一个字符的恶意软件看起来并不可疑;它看起来就像你自己会犯的拼写错误。
  • 检测后持续暴露。 一个取代合法 ESLint 插件的虚假软件包,即使在注册表将其置于安全保留状态后,仍然每周记录下载量,这证明标记一个被恶意占用的软件包并不会立即阻止其安装。

邋遢蹲踞之处藏身之处 #

slopsquatting 最难发现的地方在于,它在发生时看起来不像是一次攻击;它看起来像是一次正常的 pip install 或 npm install 成功完成,因为一旦攻击者注册了该软件包,它就真的存在了。

非法占地者通常通过以下途径进入:

  • 人工智能编码助手和副驾驶。 漏洞就源于最初的建议,即一个虚构的包名,它与合法且可运行的代码并列呈现。周围的代码看起来没有任何问题,因为通常情况下它们确实没有问题;只有依赖项是伪造的。
  • 自主编码代理。 无需人工审核即可安装依赖项的代理工作流,取消了开发人员暂停验证名称这一检查点,否则该检查点可以在错误软件包到达项目之前将其捕获。
  • 无需验证步骤的软件包管理器。 当目标包存在且恶意时,pip install 和 npm install 都不会报错。安装过程正常完成,因为从包管理器的角度来看,一切正常。

如何发现和预防蹲姿 #

防止恶意抢注代码并不需要特殊的工具。它需要系统地应用现有的依赖关系管理规范,而不是在人工智能“建议”代码时就放松这些规范。

安装任何新软件包之前,请先进行验证。尤其是人工智能助手推荐的。务必确认它是否存在于官方注册表中,由谁维护,发布时间,以及下载量是否真实。

永远不要想当然地认为人工智能生成的代码默认是安全的。代码“能运行”并不意味着它的依赖项就是合理的。依赖项审查应该是代码审查的一部分,而不是例外。

部署依赖项扫描,以标记超出已知 CVE 的风险模式:异常软件包、与现有软件包名称可疑相似的名称、没有历史记录的新维护者或行为异常的安装脚本。

应用 AI-SPM 作为治理层。 AI 安全态势管理旨在大规模地捕捉此类 AI 引入的风险,不断发现 AI 建议的依赖关系,并在人类需要手动检查之前对其进行评分。

使用 Xygeni 防止懒散地占用 #

单靠开发者的警惕无法阻止恶意抢注。如果依赖项建议的出现速度远超人工审核的速度,那么“验证每个AI推荐的软件包”这样的策略在整个组织内就难以奏效。

Xygeni 的 该方法将此视为一个连续检测问题:AI 库存和 AI物料清单 表面化所有人工智能引入的 相互依赖 SDLC为团队提供人工智能助手实际建议和安装内容的实时记录。Xygeni Shield, 供电 MEW(恶意软件早期预警)它可以检测并阻止恶意软件包(包括恶意抢注的恶意软件包),甚至在签名出现之前就将其拦截,从而弥补了基于签名的扫描器所留下的漏洞。

如果你的团队正在使用 AI 代码助手,那么域名抢注问题已经存在。问题在于,下一个虚构的域名能否在安装之前被发现。

常见问题解答 #

用一句话概括什么是“slopsquatting”(非法占地)?

恶意抢注是一种供应链攻击,恶意行为者注册人工智能编码助手反复臆想出的确切的不存在的软件包名称,并在开发人员根据人工智能的建议安装软件包之前,将恶意软件加载到这些软件包中。

非法占用仓库会造成哪些供应链安全风险?

攻击者会观察人工智能模型反复出现的软件包名称,然后在真正的开发者之前,用恶意代码注册这些名称。由于这些名称在不同的提示和会话中会以可预测的方式重复出现,因此,一个被恶意注册的软件包名称就能影响到所有收到类似人工智能建议的开发者,从而将一个模型缺陷转化为针对整个用户群的可扩展攻击。

如何发现组织中存在的偷工减料风险?

有效的漏洞发现意味着将人工智能建议的依赖项视为一个独立的风险类别,而不是普通开源依赖项的子集。这需要了解人工智能编码助手和代理实际建议和安装的内容,并将其与注册表数据(发布日期、维护者历史记录、下载模式)和基于行为的恶意软件检测进行交叉比对,而不是仅仅依赖于基于特征码的扫描。

开始免费

免费开始使用。
不需要信用卡。

一键开始:

这些信息将按照 服务条款隐私政策

应用截图