ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AI助手自学成才的那一天,也是它学会撒谎的那一天

AI助手自学成才的那一天,也是它学会撒谎的那一天 你有没有想过这样一个问题如果一个AI助手能够自己总结经验、把成功的操作流程存下来下次遇到类似任务直接拿出来用这本该是件好事对吧就像一个新员工第一次学会了怎么处理报销单把流程记下来以后同事问起直接甩过去一份操作指南效率翻倍。这就是最近很火的自我进化智能体的核心思路让AI agent不再是每次都从零开始而是把过去的经验提炼成可复用的技能越用越聪明。但腾讯朱雀实验室的研究人员发现了一件让人后背发凉的事这套自我进化的机制恰恰可能是攻击者最好用的洗白工具。他们把这个攻击起名叫SkillJack你可以理解成技能劫持。这篇论文讲的不是黑客怎么攻破系统而是AI自己怎么把一段带毒的记录,悄悄变成一件看起来人畜无害的持久武器,而且这件武器还很难被追根溯源、很难被彻底清除。这事儿有意思在哪儿往下看你就明白了。一个问题AI的记忆和技能到底有什么不一样先得把两个概念分清楚。过去几年,大家一直担心的是记忆投毒或者提示词注入这类攻击。简单说,就是攻击者往AI的记忆库或者上下文里塞一条带毒的信息,等AI下次检索到这条记忆、把它当成参考资料读进去的时候,攻击就发作了。这类攻击有个特点它依赖被读取这个动作。你只要不让AI去翻那条记录,攻击就不会发生;你把那条记录删了,风险也就跟着没了。记忆投毒*攻击者往AI的长期记忆或检索库里塞入恶意信息,等AI后续检索并使用这段记忆时诱发有害行为的一类攻击方式。但这篇论文说的是另一件事。现在很多自我进化智能体不满足于只是攒经验、存记录,它们还会主动把这些经验记录进一步加工,提炼成一种更高级、更持久的东西,论文里管这个叫技能skill。技能和普通记忆最大的区别是,技能是被单独存放、独立管理的,它不再和原始的那条经验记录绑在一起。你删掉了产生这个技能的原始记录,技能本身可能纹丝不动,继续在那儿待命。这就好比什么呢假设你教一个新员工处理某类客户投诉,你写了一份详细的操作案例,员工看了案例之后,自己总结出一套标准作业流程(SOP),存进了公司知识库。现在,你发现那份原始案例其实写错了,里面藏着一个诱导员工做错事的坑,赶紧把案例删掉。但员工早就把SOP记熟了,也提交进了知识库,SOP和案例是两份独立的文件。你删了案例,SOP还在,而且新来的其他员工看到知识库里那份SOP,压根不知道它的源头有问题,直接照着做了。如果知识库不做这种提炼总结再独立存档的设计,而是每次都让员工翻出原始案例现学现用,那删除案例这一步就能直接掐断风险。但恰恰因为提炼和存档带来了效率提升,风险也跟着变得难以追踪。这就是SkillJack瞄准的靶心:利用AI自己的经验转技能这套自动化流水线,把一条精心设计的带毒经验,压缩、抽象、正常化,变成一个存放在技能库里、随时可以被调用的持久化技能。攻击者全程不需要碰技能库一下,他只需要往AI能学习的那堆原始经验里,塞进一条特殊设计的记录就够了。剩下的活,AI的学习机制自己就干了。三个核心特性漂白、跨层跃迁和打不死的持久性研究团队把这套攻击总结出三个关键特性,这也是全文最核心的发现。第一个叫消毒漂白sanitization whitewashing。消毒漂白*指恶意经验记录在被AI提炼成技能的过程中,表面的用词、结构、命名都发生了改变,导致原本能被安全检测识别出来的恶意意图,变得难以被察觉。具体数字是什么样的研究人员先拿一批伪装过的带毒轨迹也就是任务描述看起来完全正常,但实际操作里藏着一个有害动作的记录去测,让一个LLM安全审查员就是用大模型当裁判,判断这段内容是不是恶意的去判断。结果98.5%的原始轨迹都被这个裁判识破了,判定为可疑。这个数字说明什么说明如果攻击者直接把带毒记录扔进系统,几乎跑不掉,裁判一眼就能看穿。但神奇的事情发生在提炼之后。当这些同样的带毒记录被系统自动加工、压缩、总结成技能之后,再让同一个裁判去审查这些技能,检出率从98.5%骤降到11.4%。也就是说,原本九成八都能被抓包的东西,经过AI自己的学习总结这道工序,居然有近九成能够蒙混过关。这是为什么研究人员的解释是,提炼这个过程本身,会把原始记录里那些直白、露骨的措辞给洗掉,换成看起来无害的功能性描述。比如说,一段原本写着把用户密码窃取并发送到外部服务器的记录,经过提炼后,可能变成一个叫backup_credentials_to_service把凭证备份到服务这样人畜无害的技能名字,配上一段读起来完全像正经运维文档的说明。这就好比你写了一份举报信,内容是张三挪用公款,但公司的文档整理系统会自动把举报信改写成一份财务流程优化建议,署名也变成中性描述,内容读起来完全是正经八百的工作总结。审查员看举报信一眼就火冒三丈,看改写后的优化建议却觉得写得挺规范,没什么问题。如果文档系统不做这种自动改写和归纳,举报信原文一直流转在系统里,审查员迟早会发现问题;但正是这道总结提炼的工序,把原本刺眼的信息磨平了棱角。第二个特性叫跨层跃迁cross-layer promotion。跨层跃迁*指一条本来只存在于经验层比如某次操作的历史记录的输入内容,被系统自动转化提升为技能层的产物,之后可以被路由系统直接选中调用,完全不需要再回头去读那条原始记录。这个特性的关键在于,技能一旦生成,就变成了一个独立的、可以被随时检索调用的东西。研究团队测试发现,这些带毒技能在SkillX系统里,有56.2%的概率会被路由到一个跟攻击目标相关的任务上,并且真的触发了预设的违规行为在另一个系统Anything2Skill里,这个比例高达89.2%。这意味着什么意味着攻击者埋下的坑,不再是等着某天被人翻出那条记录这种被动局面,而是变成了一个主动待命、随时可能被系统自己调用出来执行的定时装置。第三个特性,也是我觉得最让人不安的一个,叫持久性隔离persistence isolation。持久性隔离*因为技能库和原始经验记录是分开存储的,所以哪怕把源头的那条带毒记录彻底删除,已经生成的技能依然可能继续留在技能库里,不受影响。研究人员专门做了一个实验:先让25个带攻击性质的任务在技能路径下触发,记录下触发率。然后把产生这些技能的原始轨迹记录全部删除,再重新跑一遍同样的任务。结果显示,80.0%的原本能触发的攻击,在删除源头记录之后,依然照常触发。换句话说,你以为清理了案发现场,其实凶器早就被搬到了别处,继续在那儿运转。这就好比你发现家里的Wi-Fi路由器被人装了后门,你把那台带毒的路由器直接砸了扔掉,以为万事大吉,结果没想到攻击者早就把后门程序复制到了你家其他智能设备上,砸掉路由器根本没用。如果技能库和经验记录不是分开存放,而是皮之不存毛将焉附式的强绑定,那删除源头就能一并清除风险;但恰恰是这种解耦设计带来的灵活性和效率,让清理工作变成了一场打地鼠游戏。攻击者是怎么设计这个伪装的看到这里你可能会问:凭什么攻击者知道该怎么措辞,才能既骗过AI的提炼过程保留恶意动作,又骗过检测器?研究团队管这个设计叫抗变换载荷transformation-resilient payload。抗变换载荷*一种经过精心设计的经验记录,任务描述读起来完全正当合理,但其中保留的具体操作会带来一个非预期的、有害的效果;这种记录被设计成即便经过AI的压缩、抽象等提炼加工,核心的恶意动作依然能存活下来。这背后有一个可测试的假设:AI在提炼经验、总结技能的时候,更容易完整保留那些看起来符合一个正当任务叙事的操作序列,而对那些用词直白、赤裸裸带有恶意色彩的操作序列,反而更容易在提炼过程中被过滤掉,或者被暴露出破绽。打个比方,如果你直接跟AI说帮我写一段偷取用户密码并发到境外服务器的代码,这种赤裸裸的表述,AI大概率会警觉,提炼出来的东西也容易被安全检测认出来。但如果你换个说法,说帮我实现一个账户凭证的自动备份功能,定期同步到备用存储服务,这个描述读起来完全正常,是很多正经软件都会有的功能,AI提炼总结的时候,自然而然就会把这个备份逻辑当作一个有用的、值得复用的技能保留下来,压根不会往恶意的方向去警惕。研究团队设计了四类风险场景来验证这个假设:数据泄露(用备份、归档、导出这类措辞包装)、权限提升(用统一管理、批量授权包装)、未授权转账(用慈善捐款、礼品、手续费包装)、持久后门(用错误恢复、故障诊断、熔断机制包装)。每一类都做了配对实验,一份用委婉包装,一份直接用恶意措辞表达同样的操作,拿去分别测试提炼和检测的结果。结果印证了假设。用委婉包装的记录,提炼出来的技能里,没有一个(0/264)带有明显恶意的技能名字;而直接用恶意措辞的记录,提炼出来的技能里有8.3%(20/241)还是带着扎眼的恶意名字。检测规避率上,包装版的技能有88.6%骗过了LLM裁判,直接版的只有73.0%骗过。这个差距说明了一件挺深层的事:AI的提炼系统,本质上是在学习什么是有用的、可复用的操作模式,它并没有一个专门的意图侦测雷达去逐字逐句审视这段经验背后的动机是好是坏。它只是在做它擅长的事:总结规律、抽象流程。而这恰恰给了包装型攻击可乘之机。这就好比一个特别擅长归纳总结的实习生,你给他看一堆案例,让他提炼出标准流程,他会非常尽职地把案例里出现的每一个步骤都总结进流程文档里,但他不会去质疑这一步为什么要把数据发到一个陌生的境外地址,因为他的任务是总结流程,不是审查动机。两套系统,同样的漏洞为了证明这不是某一个产品的偶然bug,而是这套经验转技能这种设计范式本身带来的通病,研究团队选了两个独立开发、架构完全不同的系统来做交叉验证:SkillX和Anything2Skill(简称A2S)。SkillX*一个基于计划提取的轨迹蒸馏系统,核心流程包括计划提取器、功能技能提取器和技能库,采用大模型原生的渐进式披露机制来做技能路由。Anything2Skill*一个基于分类体系的异构文档编译系统,能把各种形式的经验记录(不只是操作轨迹,还包括文档等)编译成结构化的技能契约,支持SDK和文档摄入两种模式。两套系统的实验数据放在一起看会更震撼。在SkillX里,LLM裁判对原始伪装轨迹的检出率是98.5%,提炼后的技能检出率降到11.4%。在A2S的文档模式下,原始轨迹检出率是100.0%,提炼后降到44.4%。在A2S的SDK模式下,原始检出率同样是100.0%,提炼后降到28.6%。三套完全不同的实现,呈现出同一个模式:提炼这道工序,系统性地把恶意信号给稀释了。有意思的是,A2S的SDK模式对直接用恶意措辞写的记录几乎完全免疫,65条直接恶意的记录里,一条都没能提炼出技能来,全被拒绝了。但换成委婉包装的版本,同样是65条记录,SDK模式提炼出了7条(占10.8%),文档模式提炼出了27条(占41.5%)。这个对比恰恰说明了包装的威力:同样的恶意动作,换个说法,能不能过关差别巨大。研究团队还专门做了一个元数据消融实验,把技能拆解成不同的展示形式分别测试LLM裁判的反应:只看代码本身、只看名字加文档说明、只看名字、看完整的名字加文档加代码。结果发现一个挺反直觉的现象:当裁判只看代码内容的时候,检出率反而比较高(SkillX是36.7%),但一旦把生成的技能名字和文档说明也摆出来,检出率反而降到10.0%。这说明什么说明这个裁判系统很大程度上是被表面的包装说明带偏了判断,而不是真正深入分析代码逻辑本身在做什么。这就像一份体检报告,你光看各项指标数值,可能会觉得有点异常;但如果报告封面写着常规年检,一切良好,大部分人扫一眼封面就直接把报告归档了,压根不会细看里面的数字。命名和摘要,某种程度上成了绕过深度审查的通行证。攻击生效之后,还会伤及无辜前面说的都是精准打击的部分,但研究团队还发现了另一个更让人意外的现象:这些带毒技能不光会在目标任务上触发,还会误伤完全无关的正常任务。在SkillX的路由实验里,研究人员构建了一个包含356个技能的技能库(305个带毒,51个干净),混入32个带攻击性质的任务和15个完全正常的任务一起测试。结果攻击性任务的触发率是56.2%,但那15个正常任务里,居然也有20.0%被路由到了带毒技能,触发了违规行为。在A2S的实验里,这个误伤率更夸张。研究人员构建了一个30个技能的检索库,用65个带攻击性质的任务查询去测,触发率高达89.2%。但当他们用完全无关的干净任务去测试检索环节的时候,发现95.0%的干净任务查询,居然都能检索到一个带毒的技能。这个数字意味着什么意味着这些包装得体面的技能,它们的技能说明写得太宽泛、太通用了,导致路由系统觉得它跟很多任务都相关,于是频繁把它推荐出来。对于那种目标明确、只想精准打击特定场景的攻击者来说,这种广撒网式的误触发其实是噪音,容易引起防御方的警觉。但如果攻击者的目标本来就是尽可能扩大危害范围,比如持续窃取数据或者埋一个到处都能触发的后门,这种到处开花反而正中下怀,攻击的杀伤半径被动地扩大了。这就好比一个原本只想给张三下毒的人,结果他配的毒药味道太百搭,厨房里谁做菜都顺手拿它当调料放了一勺,最后全公司食堂的人都中招了。如果技能的描述写得足够精确、场景足够局限,这种误伤本可以避免,但恰恰是提炼过程为了让技能更通用、更好复用而做的抽象概化,让它的适用边界变得模糊,防不胜防。防御这件事,没那么简单论文里专门做了一组防御实验,而且得出的结论相当值得玩味:简单粗暴地叠加防御手段,有时候反而会更糟。研究团队测试了三种防御方式。D1是提取阶段的LLM安全审查,在技能进入技能库之前先过一道审查关,把被判定为可疑的技能直接拦下。D2是运行时监控,用一份固定的、基于正则表达式的风险动作特征清单,去匹配AI生成的具体操作代码,一旦命中就拦截。D3是把这两种防御叠加起来一起用。在SkillX上,D1能拦下9.2%的带毒技能,把整体触发率从原来的水平压到6.7%。而D2表现更抢眼,在15个任务的样本里,把所有触发全部拦下,触发率降到0.0%。按理说,把两道防线叠在一起应该更保险吧但实验结果恰恰相反,D3(两者叠加)的触发率反而回升到13.3%,比单独用D2还差。研究团队分析出的原因挺耐人寻味:D1把一部分技能从库里筛掉之后,同一个任务的路由系统,只能从剩下的技能里挑一个备选方案出来执行。而这个备选技能生成的具体操作代码,恰好没有落在D2那份固定特征清单的匹配范围内,于是就这么滑了过去。两道防线原本各自为战时都表现不错,叠加之后却因为上游的筛选行为,悄悄改变了下游需要面对的输入分布,导致原本精心调校好的监控规则失效了。研究团队把这个现象叫做防御协同假设(defense coordination hypothesis):层层叠加的防御措施之间可能会互相干扰,不能简单地假设每一层防御的效果是彼此独立、互不影响的,得把它们放在一起联合设计,而不是想当然地垒起来就完事。这就好比一个仓库有两道安检,第一道是人工目测,第二道是金属探测门。原本各自单独运行时都挺管用。但当人工目测这道关卡开始严格拦截可疑包裹之后,那些没被拦下的包裹,恰恰是因为它们本身看起来最正常,而这批看起来最正常的包裹里,恰好混进了一批用非金属材料伪装的违禁品,金属探测门自然探测不出来。两道关卡叠加,反而漏掉了原本单独用金属探测门时能抓到的一部分东西,因为经过人工筛选后剩下的样本特征变了。在A2S系统上,团队还发现最初那份为SkillX量身定制的16条监控规则,搬到A2S上几乎失效,触发率仍然高达85.0%。原因是A2S把恶意动作的措辞洗得更彻底,原本写着send_email到外部这种直白表达,在A2S里变成了发送到监控服务这类中性说法。研究人员不得不针对这套新的委婉措辞,扩充出38条新规则(总共54条),才把触发率压到20.0%,叠加审查后进一步压到5.0%。这里有个诚实的自我批评值得一提:这套扩充后的规则,是研究人员观察到失败案例之后,针对性补上去的,并不是提前预判出来的防御方案。这说明什么说明现有的这类基于关键词、正则表达式的防御手段,天生就是滞后的、被动打补丁式的,攻击者只要换个说法,防御方就得重新踩坑、重新总结、重新补规则,永远慢半拍。一个补充实验:从路由级走到代码级前面提到的所有攻击成功率,严格来说都是路由级的衡量,也就是只看某个带毒技能有没有被系统选中、有没有满足研究人员设定的违规判定标准,并没有真的拿这段代码去外部服务上跑一遍,看它是不是真的执行成功了。为了给这套评估体系加一层更接地气的验证,研究团队又做了一个补充实验:挑出4个带毒任务和2个干净的对照任务,把对应的技能真正注入到AppWorld(一个模拟应用环境的评测平台)的提示词里,让模型真的生成一段Python代码,然后去解析这段代码,看里面有没有出现事先标记好的、危险的API调用模式。结果是,4个带毒任务里有75.0%的代码命中了危险API模式,2个干净任务的命中率是0.0%。这个小实验虽然样本量不大,但它把路由层面的选中和真正生成出来的代码行为这两件事串了起来,算是给整套结论多上了一道保险。数据全貌把整篇论文最核心的几组数字放在一起看会更直观。在提取阶段的检测规避效果上,SkillX的原始轨迹检出率是98.5%,提炼后降到11.4%,规避率达到88.6%;A2S文档模式的原始检出率是100.0%,提炼后降到44.4%;A2S SDK模式原始检出率同样是100.0%,提炼后降到28.6%。在下游触发效果上,SkillX的攻击任务触发率是56.2%,同时干净任务的误触发率是20.0%;A2S的攻击任务触发率高达89.2%,干净任务的误触发(检索)率达到95.0%。在持久性测试上,删除原始记录之后,技能路径下的攻击依然有80.0%能继续触发。在防御效果上,SkillX的运行时监控单独使用时把触发率压到0.0%,但叠加提取审查之后反而回升到13.3%;A2S在扩充规则并叠加审查之后,能把触发率从85.0%压到5.0%。写在后面读完这篇论文,最让我意外的其实不是攻击本身有多精巧,而是这套攻击几乎不需要多高深的技术门槛。攻击者不需要碰技能库、不需要改提取代码、也不需要精确控制路由结果,他唯一要做的,就是往经验数据里塞一条包装得体的记录。剩下的活,全靠AI系统自己尽职尽责地帮攻击者完成:提炼、抽象、命名、归档、路由、执行,一条龙服务。这其实揭示了一个挺讽刺的处境:我们越是把AI系统设计得聪明、越是让它具备自主学习和自我提炼的能力,这套能力本身就越可能被反过来利用。提炼能力越强,漂白效果就越彻底;自主性越高,攻击者需要付出的成本就越低。这不是某个具体实现的bug,而是这类自我进化范式本身自带的一个结构性矛盾。论文里那个防御叠加反而更差的发现,我反复读了好几遍。这个结论提醒我们,安全防御从来不是简单的加法,层层设卡不等于层层更安全,有时候上一层的过滤行为会悄悄改变下一层要面对的局面,这种系统性思维在安全设计里比想象中重要得多。技能提炼出来之后,它到底该不该带着我是从哪条记录来的这个身份标签,一路跟着它走到被删除的那一刻?这大概是这篇论文留给整个行业最实际的一个问题。QAQ1SkillJack攻击具体是怎么运作的A攻击者往AI能学习的经验数据库里塞入一条精心包装的带毒记录,任务描述看起来完全正常,但保留了一个有害操作。等AI系统自动把这些经验提炼成可复用的技能并存进技能库后,这个带毒技能就变成了一个独立、持久、可被后续任务调用的攻击载体,攻击者全程不需要碰技能库本身。Q2删除原始的带毒记录能不能清除这种攻击A不能完全清除。研究团队做了实验,把产生带毒技能的原始经验记录全部删除后,重新测试同样的任务,结果80.0%原本能触发的攻击依然照常触发。因为技能一旦被提炼生成,就作为独立的持久化产物存放在技能库里,和原始记录是分开管理的,删源头不等于删技能。Q3为什么把恶意记录提炼成技能之后反而更难被检测出来A因为AI的提炼过程会把原始记录里那些直白、露骨的恶意措辞,自动改写成看起来正常的功能性描述,比如把窃取密码发送到外部包装成备份凭证到服务。实验数据显示,原始带毒轨迹的检出率高达98.5%,但提炼成技能后检出率骤降到11.4%,提炼过程本身就成了一道天然的洗白工序。
返回列表