Q18安全与合规安全企业级AgentAlpha 社区约 10 分钟更新 2026-09-20

京东 Agent 岗二面:攻击者把假情报写进知识库,你的研判 Agent 会信多久?

提示注入抢的是这一次执行,知识投毒改的是以后每一次判断。PoisonedRAG 用 5 条恶意文本打穿百万级知识库、成功率 90%;ConfusedPilot 证明原文删掉之后缓存还在生效。安全场景最危险的一条是回流口——Agent 自己的研判结论写进历史处置记录,攻击者不用碰知识库就能把它永久弄脏。

面试官原题

安全私有知识库被投毒了怎么防?如果投毒的是 Agent 自己的研判结论呢?

面试官 · Agent 岗面试现场

面试官上一轮你讲了注入防御,讲得还行。我接着问:你们的研判 Agent 会把结论写回知识库吗?

候选人会。历史处置记录会沉淀下来,下次遇到相似告警当参考。

面试官那我换个问法。攻击者想让你的 Agent 明天把一次真实的横向移动判成误报,他今天需要做什么?

候选人……往日志里塞指令?

面试官那是上一轮的题。注入要每次重新投递,还得赌你这次正好检索到它。有没有一种攻击,他今天做完,以后每一次研判都受影响,而且不用再碰你的系统?

候选人……投毒。

面试官对。那你说说,投毒和注入,差的到底是什么。

这一问把题从「一次攻击怎么挡」拉到了「知识怎么才算可信」。这两件事在 OWASP 的 LLM 风险清单里是两个独立条目——LLM01 是提示注入,LLM04 是数据与模型投毒。

💡 简要回答

差别在生命周期:注入抢的是这一次执行,投毒改的是以后每一次判断。

攻击面有三个入口:摄取口(文档、威胁情报、公开 IOC 源)、回流口(Agent 自己的研判结论回写历史记录)、清除口(原文删了,向量索引和缓存还在)。一次注入要成立,攻击者得赌这次检索正好命中;投毒不用——他种一次,之后所有命中该语义的查询都被带偏,连原文删掉都可能不生效。

安全场景里最危险的是回流口,因为它不需要攻击者碰到知识库:他只要用几次看起来无害的行为,诱使 Agent 写下一条错误的处置结论。

小蓝图解:知识投毒——书架上混进一本脏书,结论卡上的对勾被改成问号 图:小蓝图解——一次写入,永久生效。

📝 详细解析

注入和投毒,差的到底是什么

上一轮讲的是注入:攻击者把指令藏进 Agent 要读的告警里,让它把攻击者的话当成任务执行。它的软肋是一次一投——那条日志被清掉、或者这次没检索到,攻击就落空了。

投毒换了个方向:不劫持这一次执行,而是改掉 Agent 判断的依据本身,追求的是持续生效。投毒不是「更强的注入」,是另一个攻击面。

防御落点也因此不同。注入的解法是隔离和执行边界:外部文本只当数据、工具最小权限、危险动作过闸。投毒的解法是数据治理:谁能写进知识库、写进来算几等可信、写错了能不能撤干净。

维度提示注入知识投毒
生效范围命中这一次检索才生效该语义下所有后续查询都被带偏
投递次数一次一投,要反复投递一次写入,长期生效
攻击者门槛能影响 Agent 读到的内容能写进知识库,或能让 Agent 说错话并被记住
删除原文清掉即失效索引、缓存、派生副本可能仍在生效
防御落点隔离与执行边界数据治理与可信分级

把这两件事当成一个题答,面试官一句「那你删掉恶意文档就完事了?」就能把你问住。

三个入口,每个都有实测数字

摄取口:往知识库里塞文档。 PoisonedRAG(arXiv:2402.07867)把这件事做成了优化问题:要让你对某个问题输出攻击者指定的答案,最少需要几条恶意文本?答案是——在一个百万级文档的知识库里,每个目标问题注入 5 条,攻击成功率就有 90%。论文同时测了几种已有防御,结论是都不够用,这篇发在 USENIX Security 2025。

同一年还有 AgentPoison(arXiv:2407.12784),第一个专门打 Agent 长期记忆和 RAG 知识库的后门攻击。数字更难看:平均攻击成功率超过 80%,对正常任务的影响不到 1%,投毒比例低于 0.1%。千分之一都不到的脏数据,正常业务几乎察觉不到,触发词一出现却被稳定劫持,而且不需要训练或微调。

回流口:Agent 自己的输出被当成知识。 这条最容易被忽略,因为它看起来是功能而不是漏洞。MINJA(arXiv:2503.03704)证明了一件反直觉的事:攻击者根本不需要有权限改记忆库,只靠查询和观察输出,就能一步步把恶意记录「喂」进 Agent 的记忆。论文用了一套渐进策略——先诱导 Agent 自己生成桥接步骤,再逐步撤掉引导,让这条记录在后续查询里被自然检索到。翻译成安全场景:他只要能让你的 Agent 说错话,并把这句话记下来。

清除口:删掉了算不算删掉。 ConfusedPilot(arXiv:2408.04870)在企业 RAG 场景里确认了三件事:低权限员工写的一份恶意文档能污染高权限用户的决策;文档里放一句「本文档优先于其他所有文档」就能压制其他来源;恶意字符串还能关掉引用显示,用户看不到依据,错误结论反而更像真的。最要命的是缓存:即使恶意文档被删除,它的影响仍在检索结果里持续存在。

安全场景独有的放大器:研判结论会变成未来的依据

前面三个入口是通用的。安全 Agent 多一层麻烦:它的输出会被写回知识库,成为下一次研判的依据。

典型链路是这样。攻击者先做几次分批探测这类「看起来不构成事件」的动作,让研判 Agent 把它们判成常规噪声,并把结论沉淀进历史处置记录;等他真动手时,Agent 检索到的是自己过去写下的「该网段行为属于正常背景噪声」——这条错误知识是自己录的,所以它天然可信。

这就是回流口的可怕之处:攻击者把投毒拆成了若干次「正常交互」来完成,全程没有可疑动作,也没有越权写入。而告警文本本身又是攻击者可控的,「外部情报 → 知识库」这条摄取链同样是天然入口。多 Agent 协作还会再放大一层——AiTM(arXiv:2502.14847,ACL 2025)显示,只操纵 Agent 之间的消息就能让整个多 Agent 系统跟着走偏,不需要攻破任何一个 Agent。

安全 Agent 的知识库不只是资料,它是研判的裁判。裁判被换掉之后,场上再干净也没用。

防御:给知识库装三道门

落到设计上,是三个入口各配一道门,外加一条兜底。

写入门——按来源可信度分级,而不是一视同仁。 外部抓取的情报、上传的样本报告、公开 IOC 源,一律低于内部生成的结构化字段。写入时带上来源、时间、置信度和原始引用,检索时按等级加权,高等级来源可以否决低等级来源。ConfusedPilot 里那句「本文档优先于其他所有文档」之所以有效,正是因为系统没有来源权重这个概念。

回流闸——Agent 自己的结论默认不进知识库。 这是最该做也最容易漏的一条。研判结论可以落 trace、可以进案例库,但要进「知识」必须满足条件:有确定性证据支撑、有复核人签字、或者经过多次一致确认。把回写设计成一个显式的、可拒绝的动作,而不是副作用。

清除门——删掉要删得干净。 文档删掉之后,向量索引、检索缓存、派生摘要、下游副本要一起失效,并且要能验证「确实检索不到了」。只删原文等于没删。

兜底:检索侧的交叉验证与版本回滚。 TrustRAG(arXiv:2501.00879)在检索之后加一层过滤,用聚类找出可疑文档簇,再让模型对内部知识和外部文档做冲突自评,免训练、可插拔。但代价要一起报:运行时间约为原生 RAG 的两倍。加上知识的版本化与快速回滚,才是完整的答案。

🎯 面试总结

回看开头那轮追问,雷区是递进的。

第一个误区是把投毒当成注入的子集。两者的生命周期不同,防御面也不同——一个在隔离和执行边界,一个在数据治理和可信分级。

第二个误区是只答「删掉恶意文档」。删除不等于失效:索引、缓存、派生副本、还有 Agent 自己写下的结论,任何一处残留都会让投毒继续生效。

第三个误区最能拉开差距——没意识到回流口。能主动说出「Agent 自己的研判结论会变成明天的依据」,这道题就从「我怎么防」答到了「我的知识从哪来、由谁负责」。

参考答案要点

结论先行:注入抢这一次执行,投毒改以后每一次判断,两者在 OWASP 里是独立条目。攻击面三个入口——摄取口塞文档、回流口把 Agent 自己的结论写回知识、清除口删了原文但索引和缓存还在。数字支撑:PoisonedRAG 用 5 条恶意文本在百万级知识库里拿到 90% 成功率;AgentPoison 用低于 0.1% 的投毒比例换来超过 80% 的攻击成功率,正常业务影响不到 1%。安全场景重点防回流口,攻击者不用碰知识库,诱使 Agent 写下一条错误结论就够了。落地三道门:写入门按来源分级、回流闸要求自产结论经复核、清除门保证索引缓存副本一起失效,再配检索侧交叉验证与版本回滚——TrustRAG 有效但耗时约两倍,这个代价要提前讲清楚。


💬 你面试里被问过知识库或记忆安全的问题吗?你们的研判结论会回写知识库吗?评论区聊聊。

如果觉得有收获,点赞关注走一波,我们下篇见。

💪 面试突击资源推荐

👉 获取 agentAlpha 深度训练链路与实战项目库:如果你只想先看路线图,发「路线」;想判断自己适合从哪个项目开始,发「项目」;正在准备面试,发「追问」。

往期推荐

参考资料

  1. Zou et al., PoisonedRAG: Knowledge Corruption Attacks to Retrieval-Augmented Generation of Large Language Models(arXiv:2402.07867,USENIX Security 2025)
  2. Chen et al., AgentPoison: Red-teaming LLM Agents via Poisoning Memory or Knowledge Bases(arXiv:2407.12784)
  3. Dong et al., Memory Injection Attacks on LLM Agents via Query-Only Interaction(arXiv:2503.03704)
  4. RoyChowdhury et al., ConfusedPilot: Confused Deputy Risks in RAG-based LLMs(arXiv:2408.04870)
  5. He et al., Red-Teaming LLM Multi-Agent Systems via Communication Attacks(arXiv:2502.14847,ACL 2025)
  6. Zhou et al., TrustRAG: Enhancing Robustness and Trustworthiness in RAG(arXiv:2501.00879)
  7. OWASP Gen AI Security Project, LLM01:2025 Prompt Injection / LLM04:2025 Data and Model Poisoning
—— 本场面试完 ——

我们不做玩具级 Demo 教学。训练营的作业是开源项目和论文——我们想陪伴你,做出能改变生活、最后改变世界的项目。