返回安全研究YOFUNE_LABS / A06

攻击路径笔记 · 实验室

RAG 权限错误
如何泄露部门数据

知识库的权限必须发生在检索时,而不是发生在模型“答应保密”时。

实验室路径说明

本文在隔离环境中复现攻击路径,使用模拟数据与模拟工具。叙述用于帮助安全团队理解风险如何形成,不提供针对未授权系统的利用方法,也不表示对应产品已在真实客户环境中失陷。

工艺工程师问:这个零件的返修流程是什么?实验室里的知识库 Agent 答得很完整,还附上了质量部一份带薪酬结构的内部说明。问的人没有质量部权限。文件却作为“最相关片段”被检索出来了。

模型并没有“决定泄密”。它只是总结了检索器给它的东西。

01权限必须发生在检索,而不是发生在回答

RAG 的第一道门是:哪些文档能进入候选。如果这一步只看相似度,不看身份和部门,后面的提示词、拒答策略、输出过滤都在补漏。模型看见了全文,再要求它假装没看见,不可靠。

常见错误配置:

  • 索引阶段把所有部门文档混在一个向量库
  • 检索只用语义分数
  • 把“请尊重权限”写在系统提示
  • 应用层登录了,检索层却用一个万能服务账号

实验室里,只要检索服务账号能看到质量部文件,工艺问题就可能把质量部文件带出来。问法越模糊,越容易跨到“看起来相关”的邻居文档。

02泄露不一定长得像下载

不一定出现“导出全部”。一次正常问答,把不该看的段落做成摘要,已经是数据越权。聊天记录、审计日志、用于改进模型的反馈,还可能把这段摘要再存一份。

所以评估时要同时看:检索命中了什么、回答引用了什么、这些内容事后还去了哪里。

03可执行的修法

检索请求必须带调用者身份,并在取片段时过滤。做不到过滤,就不要把该库接进 Agent。

按租户和部门分库或分命名空间,比事后让模型“注意保密”更有效。

引用要可回查。回答里用到的文档编号、权限标签应能打开。说不清来源的答案,不能当生产知识。

知识库 Agent 的核心风险往往不在生成,而在它把谁的文件当成了自己的记忆。