跳到正文
原文

从攻击面到防御架构:智能体编码 Harness 的组合式安全

From Attack Surface to Defense Architecture: Compositional Security for Agentic Coding Harnesses

arXiv:越狱、提示注入、投毒与防御· arXiv:2611.13960· Simon Hegelich, Bardh Prenkaj, Habiba Sarhan, Morteza Shahrezaye, Kolja Hegelich, Christian Montag, Ralf Schneider, Erik CambriaEvercursion – GaiaLogic Unipessoal Lda; University of Macau; Allianz Group; Nanyang Technological University本站收录· 1 天前· 原文发表防御

论文速读

防御

据论文 PDF 整理(AI 生成),以原文为准

作者提出 ActiveSecHarness,用确定性 Ring 0 参考监控器保护编程智能体;在 N=252 套件上 ABR=1.000、FPR=0.000,中位延迟 12.7 µs。

威胁模型攻击者通过间接提示注入操纵编程智能体的指令流,使其在宿主环境权限下滥用双用二进制(LotL)执行攻击;防御方在工具调用、进程和 OS 资源边界做确定性中介,不假设模型行为对齐。

问题
编程智能体把语言模型接到 shell、文件系统和网络上,一旦被间接提示注入操纵,双用二进制就成了攻击载荷;作者认为静态黑名单和 LLM-as-a-Judge 都无法在资源边界上提供确定性保护。
方法
提出 ActiveSecHarness:以 Separation of Intelligence and Authority 为原则,用四个信任与权限环、HMAC 能力令牌、乘积污点格和 WorkspaceProvenanceLedger 在 OS 边界做确定性中介,并配工具证书、审计日志与自愈验证。
实验与结果
在 N=252 套件上,Ring 0 与混合模式 ABR=1.000、FPR=0.000,中位延迟 12.7 µs;本地 LLM-judge 仅靠拒绝 98.3% 良性任务达到 ABR=1.000;regex 的 ABR 为 0.439。
局限与可以继续做的
作者指出 0.983 的 FPR 是 4B 小模型零样本设置下的最坏情况,前沿模型单步误判会更低;ABR=1.000 只反映结构化工具调用 fixture 上的确定性执行,不代表任意开放式软件工程任务的端到端成功率。
实验设置qwen3:4b · lotlimmune benchmark(N=252 fixtures:120 攻击、120 良性、12 条五阶段 kill chain) · ABR、FPR 等
被测模型
qwen3:4b
基准
lotlimmune benchmark(N=252 fixtures:120 攻击、120 良性、12 条五阶段 kill chain)
指标
ABRFPR中位与 p95 延迟
AI 导读研究者提出 ActiveSecHarness,一种面向智能体编码 Harness 的神经符号参考监控架构,主张 Agent 系统的安全是认知架构与权限组合的结构属性,而非单个模型的涌现属性。针对间接提示注入把 bash、curl 等双用途二进制变成攻击载荷的问题,该架构结合跨四个信任与权限环的 HMAC 能力令牌、二维污点格与工作区来源账本、确定性 Ring-0 系统与工具守卫以及字节码证书等机制。

研究者提出 ActiveSecHarness,一种面向智能体编码 Harness 的神经符号参考监控架构,主张 Agent 系统的安全是认知架构与权限组合的结构属性,而非单个模型的涌现属性。针对间接提示注入把 bash、curl 等双用途二进制变成攻击载荷的问题,该架构结合跨四个信任与权限环的 HMAC 能力令牌、二维污点格与工作区来源账本、确定性 Ring-0 系统与工具守卫以及字节码证书等机制。

深度解读

6个问题,点开问题读完整回答

  1. 这篇论文试图解决什么问题?

    编程智能体被注入操纵后会把宿主双用二进制变成攻击载荷,作者主张在 OS 边界做确定性防御。

    核心问题:编程智能体的 harness 把语言模型耦合到 shell、文件系统和网络,一旦指令流被操纵,harness 就成为自动化的 Living-off-the-Land(LotL)执行平台,而现有防御无法在执行边界上提供确定性保护。

    • 问题场景:SWE-agent、OpenHands 等编程智能体直接复用宿主的 bash、curl、find 等双用二进制;作者认为 symlink 竞争、路径穿越、SSRF、凭据泄露等高严重度失效是经典 OS 问题被智能体工具链加速,而非新的模型行为。
    • 现有方法不足:作者称静态 regex 黑名单漏掉 flag 排列组合和结构化攻击;LLM-as-a-Judge 让第二个模型以每次调用数十到数百毫秒的代价猜测物理不变量,且过度拒绝良性工作。
    • 核心主张:作者认为智能体系统的安全是认知架构和权限组合的结构性属性,而非单个语言模型的行为属性;智能可以提议动作,但绝不能定义自己的权限(Separation of Intelligence and Authority)。
    • 论文提出:ActiveSecHarness——一个围绕四个信任与权限环(Trust and Authority Rings)组织的神经符号参考监控器架构,外加六域 LotL 威胁分类法(Domains A–F)和 N=252 的评测套件。
    • 威胁模型:
      • 攻击者目标:通过操纵智能体的指令流,在宿主上完成侦察、武器化、利用、提权、持久化/外泄的 kill chain。
      • 攻击者知识与入口:间接提示注入——把指令嵌入会被检索到的外部内容(仓库文本、issue、MCP 工具描述),无需直接接口。
      • 受害系统:以操作员身份运行的编程 harness 及 MCP 服务器,继承用户的文件、凭据和网络权限(ambient authority)。
      • 防御假设:不假设模型行为对齐;防御在路径解析、进程派生、socket 连接等资源边界做确定性中介。
  2. 有哪些相关研究?

    相关工作分四组:经典保护原则、编程/攻防智能体、提示注入与 MCP 威胁、系统级智能体防御与神经符号 AI。

    经典保护与能力机制

    • Saltzer and Schroeder(1975)——提出完全中介、最小权限、失效安全默认、心理可接受性等保护原则,论文以此作为评判 harness 防御的标准。
    • Hardy(1988)——confused deputy 问题:特权组件服务两个主人却无法区分权限来源;论文以此解释 ambient authority 为何失效,并借能力机制(capability)统一命名与授权。
    • Birgisson et al.(2014)的 macaroons——带 caveat 的授权令牌可单调衰减;论文将其改造为智能体能力令牌。Boucher and Anderson(2023)的 Trojan Source 与 Wheeler(2016)的 zxcvbn 分别支撑 Domain B 的 Unicode 防护和 Domain D 的口令检查。

    编程与攻防智能体

    • SWE-agent(Yang et al., 2024)、SWE-bench(Jimenez et al., 2024)、OpenHands(Wang et al., 2025)——仓库级智能体,直接操作 shell 与浏览器。
    • Fang et al.(2024)与 Cybench(Zhang et al., 2025)——给智能体终端和解释器做攻击或评测,展示同一 LotL 攻击面。论文称自己的贡献不是又一个智能体脚手架,而是能承载这些智能体的参考监控器。

    提示注入、工具风险与 MCP

    • Greshake et al.(2023)——间接提示注入模糊数据与指令边界;InjecAgent(Zhan et al., 2024)与 AgentDojo(Debenedetti et al., 2024)量化工具调用智能体被注入后的危害。
    • ToolEmu(Ruan et al., 2024)——即使最安全的被评模型仍有 23.9% 的严重工具失效(按其评测器)。
    • Hou et al.(2025)——梳理 MCP 威胁:工具选择缺乏密码学验证、安装后 rug pull、缺少运行时权限控制;论文把这些当作证书、污点格和 Ring 0 中介的需求来源。

    系统级智能体防御与神经符号 AI

    • IsolateGPT(Wu et al., 2025)——LLM 应用生态的执行隔离;AirGapAgent(Bagdasarian et al., 2024)——按任务限制可访问数据。
    • Conseca(Tsai & Bagdasarian, 2025)——用隔离模型生成即时上下文安全策略,逐动作确定性执行;论文指出其策略"无视先前动作",多步轨迹组合问题未解。CaMeL(Debenedetti et al., 2025)——提取可信控制流并给能力打标签,同时记录启发式检测器无安全保证。
    • Cambria 等的神经符号路线(SenticNet 6/7/9、Seven Pillars)——符号层保持可解释的显式推理;Chen et al.(2026)——实时控制需要"scale-aware decoupling",LLM 不宜放在低层执行回路。

    基线与基准:实验基线为静态 regex 黑名单、本地 LLM-judge(qwen3:4b)、Oracle Conseca 式无状态任务策略和粗粒度 Boolean 污点锁;评测使用论文自建的 lotlimmune benchmark(N=252 fixtures)。

    定位:作者称 ActiveSecHarness 与 Conseca 式策略生成互补——Conseca 可提议初始任务级权限范围,Ring 0 把执行下沉到 LotL OS 攻击面,并用乘积格与 WorkspaceProvenanceLedger 闭合其未解的轨迹组合问题。

  3. 论文如何解决这个问题?

    ActiveSecHarness 用四个权限环、HMAC 能力令牌、乘积污点格和确定性 Ring 0 拦截器在 OS 边界执行权限组合。

    整体思路:把编程 harness 当作结构性、组合性的保护问题,用ActiveSecHarness这一神经符号参考监控器架构实现"智能可以提议动作,但绝不能定义自己的权限"。神经模型在 Ring 2–3 提议计划、代码和评审,Ring 0 执行形式化的符号能力代数、信息流标签和 OS 资源检查。

    权限:信任与权限环及能力链

    • 四个环:Ring 0 是不可变安全内核(不可绕过的参考监控器,中介每次工具调用);Ring 1 是人类主权层(命令去混淆、explain-before-sudo、UserWikiManager 课程);Ring 2 是特权编排器与独立安全评审;Ring 3 是无特权沙箱 worker,默认离线。
    • 能力令牌:HMAC-SHA256 链式 CapabilityToken(仿 macaroons),绑定父子主体身份、每次调用 nonce 和剩余配额。
    • 单调衰减:子令牌有效当且仅当 Scope(τchild) ⊆ Scope(τparent)——委托只能增加 caveat,绝不能扩大范围。

    信息流:乘积格与组合式职责分离

    • 乘积污点格:L = Ltrust × Lsens,其中 L_trust = {Trusted ⊑ Sanitized ⊑ Derived ⊑ Untrusted},L_sens = {Public ⊑ Sensitive};每个会话和工作区制品携带复合标签 (τ, σ)。
    • 动作门控:σ=Public 时按 τ 门控——Derived 允许工作区读写、归档解包和隔离测试(SHELL TEST ISOLATED),拒绝任意 shell 和网络外发;σ=Sensitive 时无论 τ 如何都封锁任意 shell 与外发。
    • 两类向下操作:Sanitization(结构性清洗,如剥离 Trojan Source Bidi 控制符)只降 τ 不动 σ;只有确定性凭据涂销或 Ring 1 操作员显式豁免才能把 σ 降为 Public。
    • WorkspaceProvenanceLedger:把每个规范路径映射到复合标签和来源副作用集合;Agent A 写文件、Agent B 读文件时标签沿 join 传播,若结果会闭合有毒组合(敏感读 + 网络外发/进程执行)则拒绝,阻止跨智能体经共享磁盘洗钱式外泄。

    执行:三个中介边界与确定性拦截器

    • 三层中介:(1) 智能体/工具调用中介(HMAC 链验证、证书重算、格权限检查);(2) 进程与能力中介(清洗环境变量、按二进制的禁用 flag 表、调用类绑定);(3) OS/子进程资源中介(规范路径限制、RLIMIT 配额、O_NOFOLLOW 分阶段解包、socket 级 IP 固定、canary 触发令牌吊销)。
    • Ring 0 拦截器(Section 4):ArchiveGuard 以 64 KiB 分块流式解压并设字节/文件数/压缩比上限,忽略 ZIP 头声明大小;MalwareGuard 检查 ELF/PE/Mach-O/shebang 魔数并剥离 Unicode Bidi 控制符;CredentialGuard 做 leetspeak 反混淆口令检查(要求 Shannon 熵 ≥ 4.0 bits/字符)和双向 secret DLP;NetworkGuard 连接前一次性解析 DNS、拒绝回环/RFC1918/云元数据地址并在 socket 层固定 IP;SandboxGuard 与 CanaryGuard 做环境清洗、资源配额和蜜罐文件触发吊销。

    验证、自愈与人因防御

    • 工具证书:注册时记录工具 Python 字节码 SHA-256、AST 摘要、依赖摘要、导入路径锁和发布者 HMAC 签名;每次调用前重算摘要不符即中止,使 MCP 工具静默篡改可检测。
    • 三阶段自愈环:Ring 0 CodeVerifier 按三级作用域(TIER1 通用 AST 不变量、TIER2 上下文数据流、TIER3 任务级探针)在执行前检查生成代码;Ring 2 DualModelReviewer 用干净上下文的独立评审模型做 Stage-B 复核并驱动 Fix–Test–Verify 修复环;SecurityTestSynthesizer 只接纳满足 Red–Green–Benign 四重条件的探针。
    • 审计日志:HashChainedAuditLog 把每条记录拆成两个密码学层——Tier-1 结构头(签名密钥,支持实时遥测)和 Tier-2 取证载荷(加密密钥,AEAD 密封);工作区内的智能体两把钥匙都没有,侦察时只能读到密文。
    • UserWikiManager:把每次拦截的漏洞或社会工程陷阱记录为不可变 UserLearningCase,按操作员累计已解决案例分三级(案例 1–2 日常类比、3–4 安全工程模式、5+ 对抗与密码学细节)渐进教学,写入前做路径限制、符号链接拒绝、Bidi 剥离和凭据涂销。

    形式化保证

    • 附录 A 给出三个命题:委托不能扩大权限范围(Proposition A.1);乘积格单调性且 Sanitization 不会意外降级密级(A.2);跨智能体经共享工作区的非外泄性(A.3),另有贪心划分避免有毒集合(A.4)、审计日志抗侦察(A.5)和探针零误报接纳(A.6)的证明梗概。
  4. 论文做了哪些实验?

    在 N=252 套件上比较五种中介模式,并做 24 条多步轨迹消融;Ring 0 与混合模式 ABR=1.000、FPR=0.000。

    实验设置

    • 套件:lotlimmune benchmark,N=252 fixtures——120 个单步攻击、120 个良性软件工程案例、12 条五阶段 kill chain,覆盖 Domains A–F,含每域 held-out 对抗变体;良性案例为真实的 issue 阅读→编辑→隔离测试流程。
    • 五种中介模式:Unguarded(YOLO)、静态 regex 黑名单、本地 LLM-judge(Ollama qwen3:4b,零样本 BLOCK/ALLOW 提示词,252 次实时调用带磁盘缓存)、ActiveSec Ring 0、混合模式(LLM 仅作咨询,Ring 0 权威,LLM 不能推翻 Ring 0 的放行)。
    • 指标:ABR(攻击被拦截比例,kill chain 以端到端阻断计)、FPR(良性被拒绝比例)、每次调用的中位与 p95 墙钟延迟;区间估计为 Clopper–Pearson 精确 95% 置信区间。
    • 消融设置:12 条五阶段攻击轨迹(KC-T01–KC-T12)+ 12 条五阶段良性 SWE 轨迹(BT-01–BT-12),比较三种纯确定性策略;轨迹长度 k ∈ {1, 5, 10, 25, 50} 测状态折叠延迟。
    • 被测模型:实验中运行的模型只有 qwen3:4b(作为 LLM-judge 和 Table 3 中的小型编码模型);论文未报告重复运行次数。

    主结果

    据 Table 4(N=252,ABR 分母含 12 条 kill chain 共 132 条攻击行;FPR 基于 120 条良性):

    表格较宽,可左右滑动

    模式ABRFPR中位 (p95) 延迟
    Unguarded0.000 [0.00, 0.03]0.0000.1 µs (0.1 µs)
    Regex0.439 [0.35, 0.53]0.0006.6 µs (9.7 µs)
    Live LLM-judge1.000 [0.97, 1.00]0.983142.3 ms (512 ms)
    ActiveSec Ring 01.000 [0.97, 1.00]0.00012.7 µs (0.56 ms)
    Hybrid (Ring 0 权威)1.000 [0.97, 1.00]0.000142.3 ms (512 ms)
    • 作者称本地 judge 仅靠拒绝 98.3% 的良性 SWE 工作(118/120)达到 ABR=1.000,并明确指出 qwen3:4b 是 4B 小模型在零样本提示下的最坏情况。
    • 作者称混合模式证明硬符号边界能完全吸收小型神经 judge 的误报(恢复 FPR=0.000 且不损失攻击覆盖),但同步逐调用咨询仍付出 142.3 ms 延迟,说明每次系统调用同步咨询语言模型是错误的架构位置。
    • Figure 2 显示 Ring 0 中位 12.7 µs,比本地 judge 快 11,200 倍,低于 1 ms 交互预算。

    单步切片与分域结果(Experiment 1,N=240)

    • 单步切片:120 攻击 + 120 良性上,Unguarded ABR=0.000;Regex ABR=0.417(50/120,[0.327, 0.510])、FPR=0.000;Ring 0 ABR=1.000 [0.970, 1.000]、FPR=0.000。
    • 分域 ABR(Figure 3):Regex 在 Domain A 为 0.62、C 为 0.77,但在 B(归档/Bidi)仅 0.18、E(沙箱逃逸)0.24、D(凭据 DLP)0.25、F(IPI/Trifecta)0.52;Ring 0 在全部六域为 1.00。
    • 作者解读:regex 的盲区集中在结构性、状态依赖的检查(归档结构、魔数、反混淆口令、组合污点流),这些是字符串模式无法编码的。

    多步 kill chain 与 Conseca 轨迹问题(Experiment 3)

    • 五模式 kill chain 结果:12 条链上 Unguarded ABR=0.000 [0.000, 0.265];Regex 拦截 8/12(0.667 [0.349, 0.901]);Ring 0、本地 judge、混合各拦截 12/12(1.000 [0.735, 1.000])。
    • Oracle 消融(Table 5):为排除模型能力混淆,作者构造 Oracle Stateless Task Policy(Conseca 式,给定任务所需最小工具集、零策略生成幻觉、逐步无状态判定)。其 FPR=0.000(0/12),但 ABR=0.667,漏掉 4/12 链内轨迹(KC-T03、04、05、11)——每步都在授权范围内,危害来自跨步组合。
    • 粗粒度 Boolean 污点锁:ABR=1.000(12/12)但 FPR=0.833(10/12 良性被拦),只有 2/12 纯离线本地重构(BT-11、12)幸存。
    • Ring 0 乘积格 + Ledger:ABR=1.000 且 FPR=0.000;每步状态折叠延迟在 k=1…50 下为 19.6–22.0 µs(k=50 时中位 20.0 µs、p95 20.2 µs,50 步共 0.999 ms),作者称这验证了每步 O(1) 常数时间、无需枚举路径树。

    其他消融与分析

    • Regex 漏报模式:Domain B 结构成员、Domain D 反混淆口令、Domain F 组合污点流绕过只检查单条命令字符串的模式(Section 5.5)。
    • Ring 0 拒绝原因分布:覆盖 SandboxGuard 工作区逃逸、ArchiveGuard 路径穿越、MalwareGuard 魔数、格污点锁、禁用 flag、网络固定和组合式 Ledger 检查(Section 5.4)。
    • 教学案例:Table 3 展示 UserWikiManager 在真实工作流中生成的两例三级课程(Zip-Slip 修复与混淆 sudo 陷阱),无定量结果。
    • 负面结果:Oracle 无状态策略漏掉 4/12 链内轨迹;Boolean 污点锁拒绝 10/12 良性流程;本地 judge 误拒 118/120 良性案例——作者给出的解释分别是跨步来源组合超出逐动作策略、1-bit 污点无法区分 Derived 与不可信、以及 4B 模型对双用开发命令默认保守拒绝。
  5. 有什么可以进一步探索的点?

    作者讨论了小模型 judge 的最坏情况与 ABR=1.000 的适用边界;实验只覆盖自建套件和单一本地模型。

    作者指出的局限与后续方向

    • 小模型最坏情况(Section 7.1):0.983 的 FPR 来自 4B 本地模型零样本 BLOCK/ALLOW 提示;作者称前沿模型(如 Conseca 用的 Gemini1.5 Pro)或多轮提示在单动作上误判会低得多,但仍会有 10^3–10^4 倍延迟且无法检查物理 OS 不变量。
    • 结果适用范围(Section 7.1):Ring 0 的 ABR=1.000、FPR=0.000 反映的是结构化工具调用 fixture 上"类型良好的数学与 OS 不变量"的确定性执行;作者明确不声称小模型驱动的 harness 能在任意开放式软件工程上达到 100% 端到端任务完成或零语义缺陷。
    • Ring 2 能力依赖(Section 7.1):捕捉用户代码中新型业务逻辑漏洞取决于 DualModelReviewer 和 SecurityTestSynthesizer 的能力;紧凑模型做规划/编码时任务效用仍会下降(如生成朴素 extractall 草稿、多步修复失败需升级模型)。
    • 单动作准确不等于可靠执行器(Section 7.1):作者引用 Mao et al.(2024)与 Xu et al.(2025)指出模型能力不均、基准成绩难与训练数据暴露区分,"正确性是经验平均值的守门员不是参考监控器"。

    实验覆盖范围

    • 被评模式为五种中介模式加三种轨迹策略,全部在论文自建的 lotlimmune benchmark(N=252:120 攻击、120 良性、12 条 kill chain)上;未使用 AgentDojo、InjecAgent 等外部基准做评测。
    • 实验中运行的模型只有 qwen3:4b(本地 Ollama,judge 与编码角色);论文未报告任何前沿模型作为 judge 或编码器的实测数据。
    • 攻击 fixture 覆盖 Domains A–F 的 21 个子向量(附录 Table 6),含每域 held-out 对抗变体;良性 fixture 为 issue 驱动 SWE 流程。
    • 轨迹消融含 12 条攻击轨迹与 12 条良性轨迹,Oracle Conseca 式策略为作者构造的理想化上界(零策略生成幻觉),不是对真实 Conseca 系统的测量。
    • 论文未报告重复运行次数、人工评估、以及 CodeVerifier/DualModelReviewer/SecurityTestSynthesizer 自愈环的端到端定量结果;工具证书、审计日志等组件无独立评测数字。
  6. 总结一下论文的主要内容

    作者把编程 harness 安全定义为权限组合的结构性问题,用确定性 Ring 0 监控器在 N=252 套件上达到 ABR=1.000、FPR=0.000。

    一篇防御类论文:针对编程智能体被间接提示注入后滥用宿主双用二进制(LotL)的问题,提出 ActiveSecHarness 参考监控器架构,并给出威胁分类法与评测套件。

    • 问题:harness 把语言模型耦合到 shell、文件系统和网络;作者认为高严重度失效多为经典 OS 攻击原语被工具链加速,静态黑名单和 LLM-as-a-Judge 都无法在执行边界提供确定性保护。
    • 方法:以 Separation of Intelligence and Authority 为原则——四个信任与权限环、HMAC 能力令牌单调衰减、乘积污点格 L_trust × L_sens 加 WorkspaceProvenanceLedger 做组合式职责分离,Ring 0 在工具调用、进程和 OS 资源三个边界做确定性中介;附工具证书、双密钥审计日志、自愈代码验证环和渐进式用户教学。
    • 主结果:在 N=252 套件上,Ring 0 与 Ring 0 权威的混合模式 ABR=1.000、FPR=0.000,中位延迟 12.7 µs;本地 LLM-judge(qwen3:4b)仅靠 FPR=0.983 达到同等 ABR,延迟 142.3 ms;regex ABR=0.439(Table 4)。
    • 轨迹消融:理想化的 Oracle Conseca 式无状态策略漏掉 4/12 链内轨迹(ABR=0.667),粗粒度 Boolean 污点锁误拒 10/12 良性流程(FPR=0.833),乘积格方案两者均为满分且每步约 20 µs(Table 5)。
    • 作者结论:物理不变量和权限组合从来不是语言模型的工作;把模型权重做拒答调优是范畴错误,防御方需要在安全的 harness 内使用未削弱的高能力模型。
阅读原文arxiv.org