本地模型虚构依赖包,安装拦截如何落地
作者让三个本地模型生成1199段Python脚本,发现1410次安装建议中有212次指向不存在的包,重跑后162个虚构包名中复现161个。其离线检测器结合Claude Code钩子,在研究回放中拦截全部212次虚构包安装,同时误拦13次真实包安装。
原文暂未完整获取,基于公开信息的快读
三个本地模型生成的 Python 脚本,暴露出一个依赖安全问题:安装命令里的包名可能根本不存在。作者检查了 1199 段脚本中的 1410 次安装建议,发现 212 次指向虚构包,并将检测器接入 Claude Code,在研究回放中拦截了全部这些安装请求。
目前能确认什么
研究使用三个通过 Ollama 运行的小型开放权重模型。虚构包占安装建议的 15.0%,日常任务为 1.7%,冷门任务达到 30.0%。这些比例属于本次研究,不能直接套到所有本地模型上。
重跑后,162 个虚构包名中有 161 个再次出现。不过,1199 份输出中也有 1183 份逐字相同。复现说明这些名称在该实验条件下稳定出现,尚不能说明更换提示词或生成配置后仍然如此。
作者用 TabPFN 根据包名及其生成信息离线评分,再通过 Claude Code 钩子介入安装。研究回放拦截了全部 212 次虚构包安装,同时误拦 13 次真实包安装;断网条件下,虚构包检出率为 90.1%。
回放中的全部拦截,不等于离线检测也能全部命中。
研究没有实际安装模型建议的包,存在性检查使用的是 PyPI 元数据。
我的判断
对接入自动安装能力的编码 Agent,这提供了一个具体的控制位置:在执行 pip install 前检查依赖,而不是只要求模型「别编包名」。
反复出现的虚构名称尤其值得防范。攻击者若抢先注册这些名称,原先不存在的依赖就可能变成恶意包。此时,「PyPI 上存在」也不足以证明安全。
落地仍有两个关键问题待确认:回放中的完整拦截是否依赖联网查询、名单或其他规则;误拦后,Agent 能否通过可靠证据继续安装。完整方法和官方文档未确认前,我会把它视为安装前的辅助防线,不能据此认定依赖已经安全。