news 2026/9/30 23:17:53

允许修改、不许删除,为何仍能删文件?Knowns MCP 的能力授权漏洞

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
允许修改、不许删除,为何仍能删文件?Knowns MCP 的能力授权漏洞

允许修改、不许删除,为何仍能删文件?Knowns MCP 的能力授权漏洞

一、背景与事实边界

项目公告于2026-08-16公开,GitHub 漏洞数据库于2026-09-25收录。本次是新收录复盘,不是 9 月刚出现的攻击。

项目已确认事实
包npm knowns
标识CVE-2026-86439 / GHSA-9gfj-28hw-jchp
受影响<=0.29.1
最低修复0.30.0
功能MCP Docs 与 Memory 文件工具

0.30.0 发布说明于2026-08-16发布,列出该公告并说明文件系统包含关系等加固。本文不把同版本修复的其他独立漏洞并入这个编号。

二、技术链路:两个边界同时失效

**已确认事实:**公告描述的存储层将外部路径交给filepath.Join()后执行文件操作,没有验证目标仍属于预期目录。涉及.md文件的读取、写入和删除。另一方面,docs.update携带newPath时会执行重命名:写入新位置,再删除旧位置;权限注册却仅标记CapWrite。因此,允许写、禁止删的预设不能完整限制该动作。

**工程分析:**路径问题回答“能碰到哪个对象”,能力问题回答“能对它做什么”。两者不能相互替代。即使把目标限制到项目内,禁止删除的用户仍不应通过另一个操作删除项目文件;即使补齐删除权限,允许访问的对象也必须继续受路径约束。

公告还描述了未设置服务器密码时与其他认证问题叠加的条件。不能据此声称所有部署都无需凭据;暴露判断必须分别记录服务认证配置与调用者原本拥有的能力。

三、从接口标签转向效果集合

下面是建议采用的审计模型,不是对官方补丁实现方式的复述。

用户意图可能产生的效果应验证的对象
更新正文写入原文件
重命名写入、删除,可能覆盖原文件与新文件
导入归档创建、覆盖、目录创建每个展开后的对象
清理历史删除每条历史记录及共享引用

先生成操作计划,再对每个效果授权,最后执行,可以让权限检查接近真实行为。计划生成后仍需考虑执行时资源变化,不能把计划当作不受并发影响的事实。

四、安全内存模型:没有删除权限就不移动

示例只修改内存字典,不读写磁盘、不调用 MCP 服务。它演示了如何在任何修改发生之前验证完整效果集合。

fromcopyimportdeepcopydefupdate_doc(store,old,new,body,allowed):effects={"write"}ifnew!=old:effects.add("delete")ifnoteffects<=allowed:raisePermissionError("missing operation capability")ifoldnotinstore:raiseKeyError(old)ifnew!=oldandnewinstore:raiseValueError("overwrite requires separate policy")staged=deepcopy(store)staged[new]=bodyifnew!=old:delstaged[old]returnstaged original={"a.md":"sample"}try:update_doc(original,"a.md","b.md","new",{"write"})exceptPermissionError:passelse:raiseAssertionError("rename should be rejected")assertoriginal=={"a.md":"sample"}assertupdate_doc(original,"a.md","a.md","new",{"write"})=={"a.md":"new"}assertupdate_doc(original,"a.md","b.md","new",{"write","delete"})=={"b.md":"new"}print("capability checks passed")

模型没有实现路径安全或真实事务。生产环境还要分别检查源目录、目标目录、链接解析和覆盖策略,并保证失败时不会留下半完成状态。路径库用于解析;授权策略负责决定访问资格。

五、影响范围与排查

**工程推断:**AI 代理的工具调用频率会放大权限分类错误,但根因并不依赖模型是否“被越狱”。只要调用入口允许构造相关参数,后端都必须自行守住边界。把“不许删除”写进系统提示词不能替代存储层授权。

建议记录调用身份、工作区标识、动作、源目标标识、授权效果以及结果。对历史docs.update中的改名行为做审计时,应查看旧文件是否消失、目标是否越界,而不是只搜索名为 delete 的动作。审计日志避免保存完整文档正文,防止形成新的数据泄露面。

六、研发与安全团队行动清单

**P0:**升级至 0.30.0 或包含修复的后续版本,核实实际执行文件;限制管理入口,检查密码和访问控制配置。对异常文件变化先保全版本与日志,避免立即覆盖证据。

**P1:**建立工具效果清单,重点审查 rename、move、replace、reset、import、restore。为“只读”“可写不可删”等每种预设创建反向测试,并断言拒绝操作后所有相关对象保持原状。

**P2:**统一存储入口,在业务授权与文件系统边界上分别设防。对工具新增参数进行安全评审:一个可选参数可能改变动作语义,却不改变函数名。权限清单和测试也必须随之更新。

七、总结

能力授权应覆盖实际效果,而不是依赖动作名字。路径限制与操作授权是两套必须同时成立的安全性质;任何一套缺失,都可能让“受限工具”获得超出用户理解的能力。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 22:13:25

Wireshark 4.6.9 紧急发布:19 个漏洞一次修复,网络安全从业者的电脑上可能正藏着一颗“定时炸弹“

一张看似普通的网络抓包文件&#xff0c;一份来历不明的配置文件&#xff0c;可能正在你毫无防备的情况下&#xff0c;悄悄接管你的分析工作站。 这不是危言耸听。9 月 23 日&#xff0c;全球使用最广泛的开源网络协议分析器 Wireshark 正式推送了 4.6.9 版本。与以往的例行更…

作者头像 李华
网站建设 2026/9/29 22:13:25

来CSDN的第一篇

大家好&#xff0c;我是一名计算机相关专业大一新生。刚刚踏入编程的世界&#xff0c;目前几乎是零基础&#xff0c;对代码充满好奇&#xff0c;但也有很多知识需要学习。希望借助博客记录自己一路学习编程的成长脚印&#xff0c;把学习过程、踩过的坑、收获的知识点都记录下来…

作者头像 李华
网站建设 2026/9/29 22:13:06

光伏跟踪支架每天都在动:电机电流,怎么判断卡住和扛风?

提起大型光伏电站&#xff0c;多数人脑子里是一大片静止的光伏组件。但在西北戈壁、华北山地等地区&#xff0c;越来越多的地面电站已经不只是“把组件固定在那里”。组件安装在跟踪支架上&#xff0c;会随着太阳位置变化调整角度&#xff0c;让组件尽可能保持合适的受光姿态。…

作者头像 李华
网站建设 2026/9/29 22:12:58

参数运行的可编程模式的应用

摘要参数的系统性变化对复杂光学系统的详细研究具有重要意义。VirtualLab Fusion允许通过所谓的参数运行功能来实现参数的变化。通过使用参数运行&#xff0c;可以根据分析任务的需求任意配置这些变化。此外&#xff0c;特殊的可编程模式允许自由配置&#xff0c;以提供完全可自…

作者头像 李华
网站建设 2026/9/29 22:12:24

POCTF2026-CRYP密码学

Letters never sent 题目描述英文&#xff1a; Here we have a letter that was recovered from the estate of Dr. H. Aldous Whitmore. It was never posted. Along with the letter, a strange message was discovered. We have no doubt that Dr. Whitmore meant to kee…

作者头像 李华