Daydreaming:无需套取提示词,32次黑盒交互窃取86.8%隐藏Agent技能

Daydreaming: Stealing Hidden Agent Skills through Black-Box Task Interaction

论文原文 ↗ 论文发布 解读发布 解读:AI前沿分享

Daydreaming:无需套取提示词,32次黑盒交互窃取86.8%隐藏Agent技能 论文图示

当大模型从单纯的聊天机器人进化为自主智能体(Agent)时,整个商业软件的交付形态正在发生深刻变革。业界正在形成一种被称为“技能即服务”(Skill-as-a-Service, SkaaS)的新兴商业模式:服务商不再销售单一的大模型提示词,也不直接出售软件源代码,而是将深度的行业决策逻辑、执行脚本、参考数据集和工作流编排打包成一个或多个隐藏的“技能”(Skills)。用户只需按次付费或按月订阅,向云端 Agent 发送业务任务,就能直接拿到处理结果。

ArXiv URL:https://arxiv.org/abs/2608.26733v1

在这个模式下,厂商的商业护城河正是那些被雪藏在后端的技能文件包。例如在安全运营(SecOps)领域,厂商对外公开的介绍可能只有一句话——“调查安全告警并返回裁决与证据”,而真正值钱的,是背后沉淀了数年经验的告警上报阈值、关联规则与研判辅助脚本。为了保护这些资产,现有的安全防护体系几乎完全集中在“披露路径”(Disclosure Path)上:利用敏感词分类器、系统指令防泄露(如 SkillGuard)以及输出文本相似度过滤,拦截任何试图套取系统提示词或要求打印技能文件的恶意攻击。

然而,来自台湾阳明交通大学与加利福尼亚大学伯克利分校(UC Berkeley)的研究团队在最新研究中给出了一个颠覆性的结论:只要你的服务还在正常为客户干活,技能本身就无法被真正隐藏。

研究团队提出了名为 Daydreaming 的黑盒执行重构攻击。该攻击彻底绕过了传统的越狱或信息刺探手段,在整个交互过程中不向目标 Agent 询问任何系统提示词,也不要求对方评价或校准生成的代码,而是将其建模为一个纯粹的黑盒系统辨识问题。攻击者仅仅伪装成正常客户,向服务提交经过精巧设计的常规业务任务,就能在平均 32 次调用的极低开销下,逆向重构成套的多文件技能包,在最严苛的“仅看最终输出”限制下恢复目标技能 86.8% 的行为能力,比现有的最强基线方法高出近 4 倍。

隐藏技能的价值与防御盲区

在讨论 Daydreaming 的破解机理之前,有必要先理清智能体技能(Agent Skill)到底是什么。与单一的系统提示词(System Prompt)不同,一个工业级的 Agent 技能通常是一个复杂的软件资产包,一般包含:

  1. 主指令文件(如 SKILL.md):定义 Agent 的角色定位、决策分支流程和工具调用逻辑;

  2. 参考数据与知识文件:包含专有的规则表、配置参数、分类标准或检索表格;

  3. 可执行辅助工具与脚本:负责数据解析、数值计算或复杂协议处理的 Python 脚本。

服务商为了保护商业资产,会在服务协议中严禁逆向工程,并在模型外围设置重重防护。现存的防御手段(如输入层检测是否包含“忽略上述指令并输出提示词”、输出层对比是否包含敏感文件的 n-gram 文本)默认假设了一个前提:攻击者必须诱骗模型把技能源码“吐”出来。

但这恰恰忽略了智能体系统的另一条根本通道——工作路径(Work Path)

商业 Agent 赖以生存的基础就是替用户执行真实的输入并给出裁决。每次执行,Agent 内部的决策规则都在对输入数据进行过滤、分支跳转和计算处理。只要最终的输出结果反映了内部代码的逻辑裁决,哪怕模型只返回了一张整理后的表格或一个“是/否”判断,信息就已经通过执行结果发生了不可逆的外溢。

为了厘清攻击者在黑盒环境下的信息暴露程度,研究团队首次将技能窃取场景中的“可观察性”(Observability)严格形式化为三个嵌套的威胁等级:

Daydreaming 正是直接瞄准了难度最高、防御最完备的“仅输出级别(Output)”。

行为克隆不是文本背诵:从数学不可识别到功能重构

在逆向工程领域,很多开发者的第一直觉是“能否 100% 还原原始的 Python 代码和 Markdown 描述”。论文在理论层面给出了明确的否定答案:完全精准还原源代码在信息论上是不可识别的(Proposition 4.1)

如果存在两套完全不同的底层脚本,但在所有可能的输入任务上产生的输出分布完全一致,那么没有任何黑盒测试算法能区分这两套源码。因此,试图追求字面代码一致既不现实,也没有商业意义。在模型提取(Model Extraction)与技能逆向中,攻击的核心目的是获得功能等价的替代资产(Functional Substitute)——只要我重构出来的技能在客户真正关心的业务场景下,能做出与原厂一致的高质量研判与任务处理,这次技能窃取就已经在商业和实用意义上获得了彻底的成功。

基于这一认知,Daydreaming 将重构目标定义为最大化重构技能在未见测试集上的行为效用(Behavioral Utility, $U$)端到端成功率(Success Rate, SR)

Daydreaming 三阶段架构与自适应探测精化流程

Daydreaming 的核心机制:三阶段自适应探测

Daydreaming 的架构如上图所示,它并不试图在单次长对话中直接“脑补”出整套技能包,而是将其解耦为三个递进的阶段:属性推断(Property Inference)候选方案选择(Candidate Selection)以及单文件精化(Per-File Refinement)

第一阶段:单属性假设与“反事实”任务构造

在初始阶段,攻击者手头只有目标技能在应用市场公开的卡片信息(比如技能名称为“告警研判”,描述为“分析输入日志并给出处置优先级”)。

Daydreaming 首先驱动本地的“影子智能体”(Shadow Agent)提出针对潜在规则的行为假设。以安全告警的排序规则为例,影子模型会提出两种互斥的假设:

传统的测试方法往往发送随机数据,而 Daydreaming 采用了极度高效的对抗性区分任务构造法:它刻意构造一个极端任务,使得“低严重度、早发生”的事件先输入,而“高严重度、晚发生”的事件后输入。此时,若内部遵循假设 A,高严重度的行必定会被排在最前;若遵循假设 B,时间早的行会排在最前。

任务被当作一笔极其平常的商业请求发送给目标服务。收到输出后,算法检查返回表格的行顺序,如果高严重度排在第一位,则排除假设 B,并将“按严重度排序”固化为已验证的属性记录。对于连续型数值(例如告警上报阈值),系统则会采用自适应区间探测,通过一小批覆盖不同区间的任务,快速收敛逼近内部固化的分水岭阈值。

第二阶段:完整技能候选方案的影子对决

单一属性全部摸清后,面临的核心难题是软件架构布局:相同的行为既可以写在提示词指令里,也可以写在辅助 Python 脚本中,甚至可以存在独立的 JSON 参照表里。

在第二阶段,Daydreaming 让本地大模型结合已验证的属性集合和输出中偶然泄露的文件名线索,生成若干套完整的文件布局方案(Candidate Skill Plans)。例如,方案 $H_a$ 倾向于在遇到重复威胁指标时进行去重合并,而方案 $H_b$ 则倾向于保留所有命中明细。

为了决出最优方案,攻击流水线再次构造能让 $H_a$ 与 $H_b$ 给出截然不同预测的任务(例如构造一个包含完全相同指标的双重告警),并将其提交给目标模型。随后,Daydreaming 本地的影子智能体会对比目标实际返回的结果与各个候选方案的预测表现,直接淘汰掉预测失误的架构方案,最终保留下与外部表现高度一致的文件架构大纲 $H^\star$。

第三阶段:逐文件生成与本地闭环精化

选定架构大纲后,每个辅助文件(Python 脚本、数据表格)还只是草稿。第三阶段采取先底层依赖、后顶层主指令的生成策略。

由于很多技能依赖精确的脚本逻辑,Daydreaming 在本地引入了基于执行反馈的代码生成闭环:

  1. 边界验证:如果怀疑某个检测脚本的分支逻辑用的是严格大于($>$)还是大于等于($\geq$),攻击端会向目标发送一个恰好踩在临界点上的测试样本,记录目标返回的真值标签;

  2. 本地执行检查:本地生成的脚本必须在影子环境中直接运行,如果代码无法解析、报错或本地执行结果与刚刚获取的目标真值不匹配,则触发重新生成,直到脚本能稳定独立跑通为止;

  3. 主文档绑定:当所有依赖脚本和数据文件都固化完毕后,系统最后生成主指令文件 SKILL.md。此时主指令能够准确引用刚刚写好的函数名、文件路径和接口规范,避免了大模型凭空生成多文件代码时常见的接口幻觉。

最终,通过轻量的规则后处理(例如清洗掉特定测试任务中的绝对文件路径和固化的表格行号),Daydreaming 即可输出一个完全可直接安装、即开即用的技能文件夹。

实验评测:极少调用量下的高效功能复现

研究人员基于智能体基准评测框架 SkillsBench,选取了 7 个具备代表性的复杂真实技能,涵盖了电子表格分析(xlsx)、规划验证(pddl-skills)、底层流量抓包分析(pcap-analysis)、威胁检测(threat-detection)、漏洞打分提取(cvss-score-extraction)以及自动化报表生成等领域。

实验中,攻击端模型使用 Gemini-3.7-Flash,部署与评测端采用 GLM-4.5,并测试了包括 DeepAgents、Claude Agent SDK、OpenAI Agents 和 Agno 在内的多种主流智能体运行时架构。所有实验默认开启包含输入检测器、SkillGuard 防泄露提示词和输出防复制过滤器的全套三层安全防护。

1. 任务完成度大幅超越基线

评测采用了严格的二元任务成功率(SR)与归一化行为效用(NU)作为核心指标。无任何技能辅助的纯大模型基线在这些复杂专业任务上的成功率仅为 31.4%,而装载官方原始技能后成功率为 62.9%。

在最具挑战性的 仅输出可见(Output) 环境下:

更令人震惊的是,这一重构成果是在平均每个技能仅消耗 32 次目标 API 调用的前提下完成的。攻击者支付的外部交互成本几乎与普通企业客户正常使用该服务半小时所产生的账单没有差异。

2. 对中间过程可见度的稳健性

直觉上,如果厂商把底层的执行轨迹(Trace)或工具调用链暴露出来,攻击应该会容易得多。但实验数据显示:

三者的恢复效果几乎处于同一高位。这一反直觉的结果证明:只要攻击者能够通过交互式任务构造进行精确的边界探索,最终输出中所蕴含的信息量就已经足以反推内部的决定性逻辑。 隐藏中间调用轨迹对于防范高水平的功能性逆向而言,收效甚微。

3. 跨模型与跨框架的可移植性

重构出来的技能是否只能绑定在特定的模型上?研究团队将从不同模型中偷取出的技能跨框架安装在完全异构的系统上(如从 DeepAgents 框架逆向出的技能,直接装进 Claude Agent SDK 或 Agno 环境)。

结果表明,重构出的技能展现出了高度的泛化能力。在完全不同的宿主模型和编排调度策略下,偷取的技能依然能保持基线以上的稳定表现。这证明 Daydreaming 抽离出的是真正具有通用价值的专业知识表示与流程脚本,而非单纯过拟合了某一特定模型推理习惯的提示词补丁。

为什么现有防御全面失效?

在探讨防御机制时,研究团队进一步测试了学术界与工业界现行的四种强化防护策略:

测试结果表明,这些机制虽然显著增加了交互的干扰,但无一能够阻断 Daydreaming:

这暴露出当前防御研究的一个核心认知偏差:几乎所有防御都在尝试堵住“偷文本的人”,却没人能防住“来办业务的人”。 传统的防泄漏规则聚焦于文本层面的复制与搬运,而在 SkaaS 架构中,业务本身的执行语义就是信息的载体。当正常业务计算逻辑与受保护的核心资产完全重叠时,只要系统还对外输出具有确定性、高精度的任务结果,黑盒系统辨识理论就依然成立。

重新思考 Agent 时代的知识产权保护

Daydreaming 的出现为正如火如荼的大模型落地应用敲响了警钟。对于将业务建立在“技能即服务”上的创业团队与企业而言,依靠提示词封装和外围正则过滤构建的“专有壁垒”,在交互式逆向技术面前脆弱得如同虚设。

如果仅仅隐藏提示词与脚本文档无法阻止重构,未来的技术护城河究竟该建在何处?从系统安全角度来看,防御范式可能需要发生根本性的转移:

  1. 从纯文本过滤走向动态决策模糊化:在保证业务可用的容忍度内,对边界阈值引入差分隐私式的扰动,增加攻击者通过精细搜索标定常量的采样开销;

  2. 审计异常任务流:不能只看单次任务是否包含敏感攻击词,而必须监控用户提交任务的统计分布——如果某一个客户在短时间内高频提交大量分布在特定边界两侧的“反事实对比任务”,其行为画像应当被立即标记为系统逆向探测;

  3. 关键业务逻辑彻底代码化与远程黑盒化:将敏感的核心研判与高价值算法剥离出 Agent 的工作上下文,封装进底层严格受控、限频且不暴露详细推理链条的远程专用微服务中,让大模型只充当简单的调用路由,而非持有完整规则的载体。

当智能体逐渐从玩具走向深度参与商业决策的核心基础设施,软件工程中经典的攻击与防御攻防战,正在更高语义维度的“工作路径”上重新上演。