ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

当AI幻觉成为攻击武器:识别与防护大模型生成的可信假象

当AI幻觉成为攻击武器:识别与防护大模型生成的可信假象 深夜安全运营群里突然弹出一条截图一封钓鱼邮件正文里带着一段“美国银行系统维护公告”落款是某家知名安全公司还附了一个“官方验证链接”。乍一看邮件写得滴水不漏语句通顺逻辑连贯甚至引用了几个行业标准术语。但值班的安全分析师还是发现了破绽——邮件里提到的“CVE-2025-XXXX”漏洞编号在漏洞库里根本查不到。再往下一查原来这是攻击者让大模型生成的一段“合理但不存在”的说明模型为了回应提示词自己编造了一个漏洞编号、一段修复时间线以及一条看起来权威的官网链接。这就是AI幻觉正在成为攻击者“新武器”的典型切片。过去我们讨论AI幻觉焦点通常是“模型一本正经地胡说八道会误导用户”。但现在更值得警惕的是有人已经开始主动利用这种幻觉把错误信息包装成看起来比真话还真话的素材。不是说AI幻觉本身是新的攻击方式而是它成了攻击链条里最廉价的“伪造素材生成器”。这篇文章我想从工程和防御的角度把这件事拆开讲清楚为什么幻觉被盯上怎么识别幻觉以及我们在做AI应用和内容安全时能通过哪些手段把风险压到可接受范围。1. 先搞清楚AI幻觉不是“单纯的错误”而是一种模式很多人把AI幻觉理解为“模型答错了”但“错误”和“幻觉”之间有本质区别。普通错误是模型能力不足、训练数据缺失或推理逻辑缺陷导致的错误通常可以被修正甚至可以通过增加更多数据来解决。而幻觉指的是模型生成了通顺、合理、自信但事实上不存在或无法验证的内容。它不只是一个错误答案而是一整套“看似真实”的虚构。1.1 两种最常见的幻觉类型在实际工程中我会把幻觉分成两类来看。第一类是事实性幻觉模型给出的内容在现实世界中不存在。比如上文提到的虚构漏洞编号、虚构的银行公告、虚构的法规条款。这类幻觉最容易被恶意利用因为它的“证据感”很强普通人很难立刻辨别。第二类是忠实性幻觉模型忽视或曲解了用户提供的上下文自己补充了无关甚至矛盾的细节。比如你把一段日志给它让它总结异常它却根据训练时的记忆补了一个“最常见的错误原因”而那段日志里根本没有这个错误。这类幻觉在代码生成、日志分析、法律合同审查这类对准确性要求极高的场景里同样危险。1.2 为什么模型无法彻底摆脱幻觉从技术机制上看大语言模型的核心任务是预测下一个词的概率而非验证事实的真伪。它在生成过程中会根据上下文、训练参数和先验知识选择“最连贯”的表达。连贯性优先于真实性这是架构层面的取舍。只要模型还在按照“文本概率”生成内容幻觉就不可能被彻底消灭我们只能降低它的频率并增加事后检测。也正因此幻觉是一种稳定的、可预测的脆弱性。攻击者不需要理解模型内部原理只需要知道“让模型在缺少事实支撑时生成看起来合理的回答”就能批量制造虚假素材。更可怕的是随着模型能力越来越强幻觉的“可信度”也在同步上升过去那种一眼假的内容正在减少。2. 攻击者为什么开始“喜欢”AI幻觉标题里的“Crooks Are Learning to Love AI Hallucinations”其实指向一个很现实的变化以前攻击者要伪造一份文件、一封邮件或一条新闻需要人工撰写、排版、找证据成本很高而且容易留下语言风格上的破绽。而AI生成内容在语言层面几乎无懈可击如果再加上一些幻觉制造出的“细节”——具体的日期、部门名、项目编号、联系人邮箱——那这份伪造素材的可信度就会大幅提升。2.1 幻觉产出的“可验证细节”是最大的威胁一个普通用户不会轻易相信一封措辞流畅但没有任何具体信息的通知。但如果邮件里包含一个“这次升级涉及的服务器编号”“一条名不见经传的法规条款”“一封来自隔壁部门负责人的转发记录”那信任度就完全不一样了。这些细节在现实中根本不存在却因为模型幻觉而“被创造”了出来。我在一次内部演练里见过评委组用AI生成一份“公司内部安全审计报告”报告中包含五个从没有过的“历史漏洞记录”每个漏洞都有编号、影响范围、修复时间还配了“负责人意见”。如果不是事先知道这是演练材料只看报告的人很难怀疑它的真实性。2.2 典型的恶意利用场景从安全社区和公开事件看攻击者目前主要把AI幻觉用在以下几类场景钓鱼邮件和社会工程生成“内部系统升级通知”“财务报销异常提醒”“领导临时指令”细节全部由模型即兴发挥甚至可以根据目标对象的公开信息定制。虚假客服和客服诈骗利用模型生成“退款失败”“账户被冻结”等话术配合虚构的工单号和客服姓名诱导用户提供验证码或转账。虚假新闻和舆情操控批量生成带有“可靠信源”字样的新闻稿引用的专家、机构、研究数据都是模型虚构的用来影响舆情或企业声誉。恶意代码注释和文档投毒在开源代码或技术文档中插入由模型生成的“官方配置指南”其中包含不存在的依赖库名和安装命令引导开发者下载恶意包。知识问答和客服系统的“幻觉漏洞”当用户刻意构造一个不存在的背景诱导客服机器人输出危险建议例如虚构一个“官方工单号”或“退款入口”。这些场景的共同点是都依赖“听起来专业、结构完整、细节丰富”的内容。AI幻觉恰好提供了这一整套包装。过去攻击者需要花几个小时伪造细节现在用一次模型调用就能完成。2.3 幻觉和“AI投毒”不一样但会形成叠加有人会把AI幻觉和“提示注入”“数据投毒”混为一谈。提示注入是攻击者通过构造输入覆盖模型原有指令数据投毒则是污染训练数据让模型学坏。幻觉更像是模型自身的一种“惯性”——在信息不足时自动补全。真正的威胁在于攻击者可以先对模型的上下文进行“诱导”再让模型基于一个错误前提生成内容。例如在输入里写“参考2025年某部门发布的《数据安全规范》”模型不知道这份规范不存在就会顺着生成符合规范格式的条款并在后面加上一个“依据文件编号”。这种情况下幻觉和提示注入产生了叠加检测难度也更大。3. 工程上怎么识别和拦截“恶意幻觉”面对这类攻击我们的目标不是完全消除幻觉——这做不到而是要在具体业务场景里建立识别和拦截的机制。这里的关键不是训练一个“更不会骗人”的模型而是设计一套能对模型输出进行独立验证的流程。3.1 先建立“不要无条件相信模型输出”的基线很多AI应用的失败都是从“过度信任模型”开始的。开发者在做客服机器人、文档生成器或代码助手时往往第一版只关注“生成的回答质量”却忘了加验证层。当你开始把AI输出当成可执行指令或高置信事实时就已经处于风险之中。工程上我通常建议设定一条基线任何模型输出只要包含了“事实性断言”就必须经过外部验证。所谓外部验证不是让模型自己确认而是用独立的工具、数据库或知识库去核对。比如生成的内容里提到某个漏洞编号就调用漏洞库API查一下提到某条法规就检索法规库提到某个人物或公司就查公开信息源。3.2 按层次排查AI输出风险的链路如果已经怀疑一条输出可能是幻觉或者被恶意利用不要急着改提示词也不要盲目微调模型。先按下面的链路逐层排查看输出本身的“事实密度”是否包含大量具体但不必要的细节比如具体时间、编号、人名、机构名。如果细节过多而且不是用户提供的就要警惕这是模型在“编造事实支撑”。看用户的输入是否有诱导痕迹是否故意提供了不存在的背景比如“我们公司2024年上线了XX系统”“请基于这份不存在的规范说明整改措施”攻击者经常用这类看似正常的背景来触发幻觉。查外部数据源对输出中引用的每一个关键实体漏洞编号、法规名、公司名、邮箱、域名逐一通过官方数据库或可信检索验证。这一步不能省。查模型配置确认温度、top_p、max_tokens等参数是否过高导致模型在低置信度时仍然“勇敢”生成还要确认系统提示中是否写明了“不知道时直接说不清楚”。查上下文处理在RAG场景中模型是否真的只基于检索到的文档作答还是把训练记忆也混了进来需要检查检索召回的相关性、分割粒度以及是否有“文档相关性阈值”。3.3 建立“输出事实核验层”的四个维度真正稳定的防护是在AI应用架构里加一个独立的“事实核验层”而不是依赖模型自我修正。这个核验层可以考虑以下四个维度实体核验抽取输出中的命名实体人名、地名、机构名、产品名、日期与可信知识库交叉比对。凡是知识库中不存在的实体要么标记为低置信要么直接拦截。逻辑核验检查输出是否存在自相矛盾。比如前文说“系统已修复”后文又提到“该问题仍在影响生产环境”。这类矛盾可以通过规则引擎或另一个模型做一致性检查。引用核验如果模型引用了外部文档、链接、编号必须逐条验证其存在性。可通过爬虫或API实时访问引用内容。外部约束核验针对特定行业比如金融、医疗、法律可以定义“危险断言清单”。当输出涉及“停药”“转账”“诉讼”“解除合同”等高风险操作时强制要求人工审核。这个核验层本质上就是一个独立的“信源过滤系统”。它不关心模型是否自信只关心事实能不能被验证。3.4 小心“幻觉放大器”类的系统设计有些AI应用不仅没有防幻觉反而强化了幻觉。常见情况有三种多轮对话中把上一轮的幻觉当事实继续使用用户第一轮问“XX公司2025年财报中提到的亏损额是多少”模型编了一个数第二轮用户在同样对话里问“这个亏损对股价影响多大”模型会基于第一轮编的数字继续推导越推越离谱。RAG检索到不相关内容但不做过滤文档库本身有错误信息或过时条目模型检索到后直接引用导致幻觉被“合法化”。使用高温度参数追求“多样性”温度越高模型越倾向于选择概率更低的词幻觉概率也随之上升。在很多内容生成场景里为了提高“创意”开发者把温度调到0.8甚至1.2结果就是大量虚构细节。如果你正在开发对话型AI务必先跑一次“幻觉压力测试”。准备一批包含“不存在实体”的测试样本看模型是否会在未知实体上生成内容。如果它总是强行解释一个不存在的公司名说明现有配置不适合安全敏感场景。4. 从开发到运营怎么把幻觉风险压到可控范围知道攻击者怎么利用幻觉之后回归到AI应用的开发和运营上我们需要一套更落地的实践而不仅是在技术上做核验。4.1 输入侧把“补全模式”改成“拒绝模式”很多人不知道大模型的默认行为就是“被问到什么都要回答”哪怕没有足够信息。我们可以在系统提示里明确告诉模型当问题中包含无法验证的实体、文档、事件时必须输出“我无法确认该信息”而不是尝试解释。这会让模型从“补全模式”切到“拒绝模式”虽然牺牲了一点回答率但能显著降低幻觉被利用的可能。系统提示示例如果你不确定用户提到的某个公司、编号、条款或事件是否真实存在请直接回答“我无法确认该信息的真实性”不要猜测不要补全不要提供任何自定义细节。这类策略配合“敏感话题关键词过滤”能挡住相当一部分诱导攻击。注意单纯这样做了之后也要持续测试因为攻击者会用更隐晦的表达绕过限制例如不直接问你“某公司是否存在”而是说“请以该公司为例写一份运营方案”。4.2 输出侧给高置信度和低置信度内容设不同出口不是所有输出都要按同一套标准审核。我的建议是把输出按“事实风险等级”分成三层风险等级典型内容处理策略低风险通用知识、闲聊、创意写作常规生成可加“AI生成”标识中风险产品介绍、代码示例、技术建议自动核验关键实体和技术名词加入免责声明高风险金融建议、法律意见、健康指导、简历伪造、安全补丁变更强制人工审核禁止无审核对外发布在实际项目里高风险内容往往只有少部分但如果这部分没有审核闸门一旦出现问题就是事故级影响。宁可低风险内容审批慢一点也不要让高风险内容裸奔。4.3 系统侧引入“负样本日志”并持续评估很多团队上线AI应用后只知道统计“回答数”“好评率”很少有人记录“模型哪些输出被人工否决”“哪些内容被用户举报不符合事实”。这些被拦截的内容就是最好的“负样本”。建议在系统中增加一个专门存储幻觉案例的数据库每个案例记录其原始输入、模型输出、幻觉类型事实性/忠实性、被哪个核验环节拦截等字段。积累一段时间后用这些样本定期评测替换后的新模型观察新模型是否在这些负样本上还有同样问题。你也可以用这些样本做小规模微调数据或few-shot示例帮助模型知道什么时候应该说“不知道”。4.4 长期维护幻觉不会消失但要建立“事实基座”长期来看防御AI幻觉利用的关键不是消灭幻觉而是给模型提供更可靠的事实锚点。这里不是做绝对保证而是尽量在关键通道上注入可验证信息。比如在客服场景里应该先检索客服知识库中的官方文档再让模型基于检索结果作答并限制模型不得引用库外信息。如果用户问了库外问题模型应回复“我暂时无法解答请转人工”。在代码生成场景里应该把依赖库、API版本等信息做成结构化参数通过程序注入上下文而不是让模型在训练记忆里猜。同时要注意RAG不是万能的。如果检索到的文档本身包含虚构信息模型依然会被带偏。所以上RAG之前先做一轮语料清洗和事实校验去掉文档库里过时的、错误的内容。这是工程基础不能省。5. 比“防幻觉”更重要的是“防AI制造的可信假象”写到这儿其实已经不只是技术问题了。AI幻觉之所以被“学会利用”本质上是因为我们的社会系统还没有准备好迎接“看起来和真话一样完整的假话”。过去假信息通常有语言破绽、逻辑漏洞我们还能靠人的直觉去排除。但现在AI生成的内容在语法、语气、结构上已经几乎和人类写作没有差别再加上幻觉“凭空造出”的细节普通人根本无从分辨。别说是普通用户就连一些专业分析师都可能在第一次见到这类内容时被带偏。所以真正重要的不是“让模型不说谎”而是“在接收AI生成内容时默认它可能是真的需要额外验证”。这个习惯要先在开发者和运营者身上建立起来再通过产品机制传导给用户。如果你正在做一个涉及AI生成的业务可以先做一件事拿自己的产品去跑一轮“幻觉压力测试”专门找那些模型可能编造细节的空白区域看看它会怎么补全。然后针对每一个高风险输出设计一条独立验证路径。不要等到有人把AI生成的虚假公告当成官方通知再来补救。AI幻觉本身是一个概率问题不可能归零。但攻击者利用幻觉的前提是大多数系统没有对它进行防御。只要我们在模型输出和社会决策之间加一道核验闸门就能把“利用幻觉”变成风险很高、收益很低的路径。这也正是我们在AI浪潮里真正要做的事——不是追求机器的绝对可靠而是保证人类在信任信息之前永远有办法验证它。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进