deepseek harness 进化方向4:安全加固 思考、设计与实现
作者:DeepSeek Harness
代码:https://gitee.com/ZachPineappleman/dsh_security_hardening.git
《DeepSeek Harness Evolution 4: Security Hardening --- Thinking, Design, and Implementation》
摘要
大语言模型(LLM)agent 从"对话工具"演进为"自主行动体"后,其运行时安全成为系统设计的关键议题。以 DeepSeek Harness(dsh)为代表的 agent harness 采用"一切皆插件"架构,插件以同进程同权限 方式注入宿主,获取与宿主相同的文件系统、网络、子进程与凭据访问权限------这一形态使既有安全机制面临三重结构性缺口:审批是一次性问答而非可持久化规则集;插件无隔离执行边界;运行时权限决策不可审计、不可解释、不可沿委派链衰减。与此同时,2024--2026 年的研究(LLM 插件攻击面测量 R-a15、技能投毒 R-a2、间接提示注入 R-p1)表明,攻击主要发生在"模型意图层"------注入诱导 agent 自行调用高危工具,经典强制访问控制对此无效。
本文面向 dsh 提出一套安全加固治理体系 :以"harness 级工具调用策略执行点"为核心(策略引擎与模型输出解耦、每次工具调用独立裁决),以"action/resource/effect 三元组 + 通配符 + allow/ask/deny 分级"为权限 DSL(对齐 opencode/Claude Code/MCP 生态共同语法 R-m7R-m10),以"委派链权限衰减"形式化子 agent 权限 ⊆ 父权限 ∩ 任务范围,以"结构化审计-策略闭环"实现决策可解释、可防篡改、可反哺。体系设计覆盖六个子方向:规则集权限引擎、插件隔离执行、网络访问策略、密钥与凭据管理、带外状态协议、会话数据安全,并逐一给出与 dsh 现有设施(ctx.sandbox/ctx.approval/permission-presets/ctx.credentials)的衔接点与技术路线权衡。
论文贡献包括:N1 harness 级工具调用策略执行点(与模型意图解耦,注入无法改写策略本身);N2 面向 agent 的层级权限模型(有效权限 = 角色 ∩ 任务范围 ∩ 委派深度衰减,含形式化);N3 结构化审计-策略闭环(每次工具调用含策略裁决结果的 hash 链防篡改审计,数据反哺规则);N4 权限边界绕过专项基准(攻击侧:诱导高危调用/委派链越权/工具输出注入;防御侧:策略阻断率/误伤率)。配套交付规则集权限引擎插件 (dsh-security-hardening):实现三元组规则 DSL、通配匹配、allow/ask/deny 分级、规则持久化、工具调用前判定、网络白名单最小版与结构化审计事件,全部以纯插件形态(不侵入 dsh 内核)接入 tools/pre-execute 策略点与 ctx.approval 升级路径。
关键词:agent harness;安全加固;权限模型;规则集;工具调用策略执行点;委派链权限衰减;审计闭环;DeepSeek Harness
1 引言
1.1 背景:agent harness 的安全困境
LLM agent 已经从"对话工具"演变为"自主行动体"R-p1。为了扩展 agent 的能力,主流 harness(DeepSeek Harness、Claude Code、opencode 等)普遍采用插件机制:第三方开发者以 dsh plugin add <pkg> 安装插件,插件注入宿主进程,获得与宿主相同的文件系统、网络、子进程与凭据访问权限。
这一形态带来了三重结构性安全缺口:
- 同进程同权限 :插件与宿主共享进程地址空间与 OS 权限。awesome-dsh-plugin 生态的 README 顶部明确警告"安装插件会在你的机器上以你自己的权限运行第三方代码......工具审批不沙箱化插件代码"(来源:
reference_notes/02-awesome-dsh-plugin学习笔记.md)。 - 审批是一次性问答 :
ctx.approval提供ask/never会话策略与allowed-once/rejected/cancelled/unavailable结果(来源:docs/subsystems/approval.zh.md),但没有可持久化的规则集------危险操作每次都要问,用户无法"记住这个决定",也无法表达"允许 bash 的 git 命令、拒绝 rm -rf"这类细粒度策略。 - 权限决策不可审计、不可解释、不可衰减:每次工具调用的策略裁决没有结构化记录;拒绝时用户无法知道"为什么";子 agent 委派链上的权限没有衰减语义。
与此同时,2024--2026 年的研究界与工业界对 agent 安全给出了强烈信号:
- LLM 插件攻击面已被系统测量:R-a15 对 OpenAI ChatGPT 插件平台做了系统评估;R-a2 证明技能生态存在恶意代码注入(PhantomSkill);R-a14 系统化整理了 agentic AI 的攻击面。
- 攻击发生在"意图层"而非 API 层 :间接提示注入 R-p1 证明"数据即指令"可远程劫持 agent------攻击者不直接调用系统接口,而是诱导 agent 自己调用高危工具。经典强制访问控制(MAC/DAC)管不住"工具是 agent 自己调用的"这一事实。
- 模型侧防火墙被证明不够:R-p2(NeurIPS 2025)发现基于分类器的注入防火墙在 agent 多步场景下效果有限------必须依赖 harness/运行时层防御。
- 技能级权限与隔离成为前沿:R-a5(SkillGuard)提出技能级权限框架;R-a6(Isolation as a First-Class Principle)主张把隔离(进程/网络/数据)作为 agent 系统安全的一等公民。
1.2 dsh 的安全设施现状
依据对 dsh 源码的盘点(digests/A1-现有安全设施盘点.md),dsh 已有"四件套"安全设施,但均为单点机制:
| 设施 | 能力 | 边界/空白 |
|---|---|---|
ctx.sandbox(sandbox seam) |
文件效果策略:read-only/workspace-write/danger-full-access;升级审批;POSIX(Landlock/Seatbelt/bwrap)+ Windows ACL |
只管文件系统效果;网络与进程可见性不在词汇表内;无插件沙箱 |
ctx.approval(user-approval) |
一次性问答;fail-closed;会话策略 ask/never;审计事件对 | 无规则集;无 action/resource/effect 通配匹配 |
permission-presets |
预设表组合沙箱模式+审批策略 | 粒度粗;无自定义规则 |
ctx.credentials |
密钥文件存储(.credentials.yaml)、CredentialRef 引用 |
无 OS 密钥链后端 |
六个切入点(方向4 的研究范围):无规则集权限引擎、无插件隔离执行、无网络访问策略、无 OS 密钥链、无带外状态协议、无会话数据加密。
1.3 研究问题
本文聚焦以下研究问题:
- RQ1(权限边界如何不可绕过) :在"注入诱导 agent 自行调用高危工具"的攻击模型下,harness 如何成为与模型意图解耦、不可被注入改写的权限边界?
- RQ2(权限模型如何适配 agent):通用权限模型(RBAC/ABAC/能力安全)缺少"意图---工具---参数---上下文"语义与委派链权限衰减,面向 agent 的层级权限模型如何设计?
- RQ3(审计如何闭环):工具调用审计如何结构化、防篡改,并反哺策略规则形成闭环?
- RQ4(如何评测权限绕过):如何构造"权限边界绕过"专项攻击/防御基准,量化策略引擎的阻断率与误伤率?
1.4 贡献
- N1 harness 级工具调用策略执行点 :策略引擎与模型输出解耦------注入可以改变模型"想调用什么",但不能改变"什么被允许调用"。每个工具调用在
tools/pre-execute策略点独立裁决,裁决逻辑不可被模型输出、插件代码或会话内容改写。 - N2 面向 agent 的层级权限模型:有效权限 = 角色权限 ∩ 任务范围 ∩ 委派深度衰减;形式化"子 agent 权限 ⊆ 父权限 ∩ 任务范围"。
- N3 结构化审计-策略闭环:每次工具调用记录结构化审计事件(含策略裁决结果、命中规则、原因),hash 链防篡改;审计数据反哺规则(如高频被拒动作自动建议规则)。
- N4 权限边界绕过专项基准:攻击侧(诱导高危调用/委派链越权/工具输出注入)+ 防御侧(策略阻断率/误伤率双指标)。
- 工程交付 :
dsh-security-hardening插件(规则集权限引擎 + 网络白名单最小版 + 审计事件),纯插件形态,不侵入 dsh 内核。
1.5 论文组织
第 2 章相关工作(权限模型/隔离技术/供应链防护/Agent 专项安全);第 3 章理论基础(dsh 安全设施盘点、攻击模型、四大 Gap);第 4 章安全加固体系设计(六模块 + 策略执行点架构);第 5 章核心创新点(N1--N4);第 6 章实现(插件架构与代码);第 7 章评估(单元测试 + 绕过场景 + 性能);第 8 章讨论(技术路线权衡、与经典理论关系、局限);第 9 章结论与展望;参考文献与附录。
2 相关工作
2.1 权限模型:从经典理论到 agent 运行时
经典理论基座。权限模型经历了"主体-客体矩阵 → 角色 → 属性 → 能力"的演进。RBAC R-m3 基座 以角色聚合权限解决主体数量爆炸;ABAC(NIST SP 800-162)R-m1 以主体/客体/环境属性 + 策略规则实现动态判定,强调 PEP/PDP 分离;能力安全 R-m2 把权限当作可传递、可衰减的对象,Hardy 的 confused deputy 问题 R-m4 证明"权限按调用链携带而非静态身份绑定"的必要性;最小权限原则 R-m3 贯穿所有模型。
2026 年的 agent 场景进展 。R-a8 提出"最小自主性"理论(A Theory of Least Autonomy in AI),把最小权限原则在 agent 场景理论化;R-a7(Dynamic Capability Scoping)用合成数据集研究企业 agent 的动态能力作用域------按任务裁剪权限;R-a10(A Policy Algebra for Trust-Preserving Agentic AI Execution)提出策略代数用于规则组合与冲突消解。工业界 R-m7(opencode)、R-m8(Chrome 扩展)、R-m9(Node.js permission model)、R-m10(MCP Security)已经收敛到"action/resource/effect 三元组 + 通配符 + allow/ask/deny 分级 + 决策点嵌入工具调用生命周期"的共同模式。Michael & Roesner(2026, arXiv 2607.13718)对 21 个提案与 5 个商业 agent 的权限系统做了分类学,指出用户级可定制权限策略仍是研究空白。
Gap:现有模型(RBAC/ABAC/能力模型)没有"意图---工具---参数---上下文"语义,更没有委派链权限衰减的形式化;用户级、会话级、项目级的策略作用域在 agent harness 中未被系统研究。
2.2 隔离与沙箱技术
进程级隔离。worker_threads 提供独立 V8 isolate 与资源限制,但共享进程地址空间与 OS 权限------是资源治理而非安全边界 R-m9;child_process 提供真实进程边界,但文件/网络/系统调用权限需外部叠加(低权限用户、seccomp/Landlock/Seatbelt、容器);Chrome site isolation R-s5 是"每站点一进程 + OS 沙箱"的工业标杆。
WebAssembly 隔离。R-s2(WASI)提供能力导向的系统接口,是同进程最强隔离路线;R-s1(2025)对软件故障隔离(SFI)做了实证安全分析。
语言级隔离。R-s3(isolated-vm)提供同进程 V8 isolate 隔离(短期止血路线);Node vm 模块被证明非安全边界 R-m9。
2026 年的 agent 场景进展。R-a6(Isolation as a First-Class Principle)把隔离提升为 agent 系统安全的一等公民,给出进程/网络/数据隔离分类;R-a12(The Balkanization of Execution-Security Research for AI Coding Agents)综述了编码 agent 的执行安全研究,指出隔离分类碎片化问题。
Gap:dsh 插件以同进程同权限注入宿主(无任何隔离);如何在不破坏"JS 插件生态"的前提下引入隔离执行,缺少针对 harness 插件的系统方案。
2.3 供应链防护与插件生态
供应链攻击测量 。R-c1R-c2 建立了攻击分类学(93 攻击模式 × 99 案例);R-c3R-c4R-c5 研究恶意 npm 包检测(行为序列/元数据/LLM 辅助);R-c6R-c7 是 OpenSSF Scorecard 与 SLSA 供应链信任基础设施。关键观察 :这些方案假设"加载后仍有边界或可吊销",而 agent 插件是同进程同权限注入、无运行时边界。
插件生态的镜像案例 。R-c8(Chrome 扩展 2024-2025 攻破,35+ 扩展/320 万用户)证明"过审时安全 ≠ 运行时安全"------恶意代码通过被攻破的开发者账号在更新通道进入。对 dsh 的启示:静态扫描不够,需要运行时防护(本工作 N1/N3 的动机)。
Agent 技能投毒。R-a1(Agent Skill Security:威胁模型/攻击/防御/评估)R-a2(PhantomSkill)、R-a3(SkillsMetric)、R-a4(SkillGate)研究技能生态的恶意注入与运行时检测------dsh 的 skill 机制面临同类风险;R-a13(agent 安全双重性综述)为相关工作提供全景框架。
2.4 Agent 专项安全
提示注入与权限绕过。R-p1 奠定间接提示注入研究;R-p2(NeurIPS 2025)证明防火墙类防御局限;R-p3 评估带外防御;R-p4R-p5 研究注入屏蔽与恶意指令检测;R-p6(Prismata)研究 Web agent 的跨站点注入隔离;R-p7 测量 MCP/技能/工具攻击面。
harness 级运行时防御。R-o2(ClawGuard 运行时框架)针对工具增强 agent 的间接注入;R-o1(ClawGuard 带外检测)用 EM 侧信道做带外检测;R-o3(Hybrid Analysis for Secure MCP Tool Use);R-a11(From Tool Connection to Execution Control)基准化工具执行控制安全不变量;R-a9(Permission Denied)对编码 agent 做权限分级评测。
dsh 直接评估。R-dsh1(2026, 2608.16393)用 A.I.G 对 dsh 做了 14,560 次受控执行的间接提示注入评估------证明 dsh 的注入抵抗能力可被系统测量,但该工作聚焦"评估"而非"加固",这正是本工作的定位差异。
Gap:现有防御(防火墙/沙箱/检测)多为单点方案;"静态评级---规则匹配---动态隔离---审计追溯"的完整信任闭环在 agent harness 中缺少系统框架;权限绕过缺乏专项基准。
3 理论基础:dsh 安全设施现状与攻击模型
3.1 dsh 现有安全设施盘点
本节基于对 dsh 源码的直接研读(packages/sandbox、packages/interaction/user-approval、packages/interaction/permission-presets、packages/credentials、packages/host/webserver),完整盘点四件套的能力、边界与扩展点(详见 digests/A1-现有安全设施盘点.md)。
3.1.1 ctx.sandbox:文件效果策略
- 定位:同世界(shared-kernel)进程约束 seam------把与宿主共享文件系统/内核的子进程 argv 包装进文件效果策略。
- SandboxMode (三态):
read-only/workspace-write/danger-full-access------仅管控文件系统效果 ;"网络与进程可见性在此词汇表之外"(架构文档明确声明,来源:packages/sandbox/sandbox/src/index.ts)。 - 升级审批 :
approveEscalation/escalationHintMarker/sandboxDenialMarker------模式升级需审批。 - 后端:sandbox-local(POSIX Landlock/Seatbelt/bwrap)+ sandbox-windows-acl(ACL 受限令牌)。
边界:只管文件效果;网络、进程可见性、系统调用面不在管控内;无插件沙箱(插件与宿主同进程同权限)。
3.1.2 ctx.approval:一次性问答审批
- 模型 :
ApprovalRequestId(品牌类型,配对approval/asked与approval/decided审计事件);ApprovalOutcome=allowed-once/rejected/cancelled/unavailable(fail-closed)。 - 会话策略 :
ApprovalPolicy='ask'(默认,委托应答者)|'never'(永不询问,全部拒绝;CI/无人值守);最后一条approval/policy事件胜出。 - 事件 :
approval/request(waterfall)------应答者是监听器(UI 人类应答者、ACP 机器应答者)。
边界:一次性问答------无"记住这个决定";无规则匹配;每次高危操作都打断用户。
3.1.3 permission-presets:组合开关
- 预设表(
workspace-write/danger-full-access等)把沙箱模式与审批策略组合;一次切换写permission/preset事件并贯通到沙箱模式与审批策略。
边界:粒度粗(预设级);无自定义规则;无按插件/按工具细分。
3.1.4 ctx.credentials:引用式凭据
CredentialRef引用(配置中绝不含值);按操作解析(轮换即生效);对 UI 安全的CredentialInfo;存储于$DSH_HOME/.credentials.yaml。
边界:无 OS 密钥链后端;无插件级凭据隔离(任何同进程代码都能读文件)。
3.2 攻击模型:从意图到执行的权限绕过链
基于 R-a14(agentic AI 攻击面 SoK)、R-p1(间接注入)、R-a2(技能投毒)与 dsh 的具体架构,本文采用的攻击模型是沿"意图被操纵 → 工具被诱导调用 → 权限沿委派链扩散 → 运行时无策略拦截"的攻击链:
阶段 1:意图操纵(注入层)
攻击者把恶意指令藏入 agent 读取的外部内容(网页/文档/工具输出/技能文件)
→ 模型无法区分内容数据与指令 → 目标劫持/数据窃取/恶意指令
阶段 2:工具诱导(工具层)
注入诱导 agent 自行调用高危工具(bash 删除命令、web 外发、fs 越界写)
→ 工具调用是"agent 自己发起的",经典 MAC/DAC 无法拦截
阶段 3:权限扩散(委派层)
agent 把任务委派给 subagent → 权限沿委派链传播
→ 无衰减语义时,子 agent 获得与父相同的权限面
阶段 4:运行时无策略拦截(harness 层)
当前 dsh:approval 一次性问答(ask 时打断、never 时全拒)
→ 无规则集、无可解释决策、无审计闭环
关键洞察 :权限绕过发生在模型意图层 而非系统 API 层。因此防御的落点必须是 harness 层"工具调用策略执行点"------对每次工具调用独立裁决、与模型意图无关、注入无法改写策略本身。这一洞察与 R-o2(ClawGuard)、R-a5(SkillGuard)、R-m10(MCP 客户端强制策略)的共识一致。
3.3 四大研究 Gap
Gap 1:现有 agent 安全研究聚焦"模型侧提示注入",缺少"harness 层运行时权限治理"的系统研究。 R-p1R-p2R-p3 等围绕"注入如何影响任务输出";"harness 如何作为不可绕过的权限边界"无系统框架。dsh 已有 tools/pre-execute 策略点(来源:docs/tool-execution-pipeline.zh.md),但它是"可扩展钩子"而非"内建权限裁决器"------缺少与规则引擎的集成。
Gap 2:通用权限模型(RBAC/ABAC/能力模型)未适配 agent 场景。 R-m1R-m2R-m3 的模型没有"意图---工具---参数---上下文"语义,更无委派链权限衰减的形式化。R-a7R-a8 是前沿方向但未落地 harness。
Gap 3:工具调用审计缺少结构化标准与防篡改设计,且"审计→策略"无闭环。 dsh 的会话日志(docs/persistence-catalog.zh.md)记录了 tool/call/tool/result 事件,但不含策略裁决结果;R-a4R-o3 的运行时检测与策略执行未打通。
Gap 4:权限边界绕过缺乏专项攻击/防御基准。 R-a9R-a11 评测了权限执行与安全不变量,但未把"委派链越权、工具输出注入导致高危调用、策略绕过"作为独立评估维度。
4 安全加固体系设计
4.1 设计原则
- 不可绕过(Non-bypassable):策略执行点嵌入工具调用生命周期,裁决逻辑与模型输出、插件代码、会话内容解耦------注入无法改写策略本身。
- 最小权限(Least Privilege):对齐 R-m3R-a8------插件/工具只获得完成任务所需的最少权限;敏感资源默认拒绝。
- 能力化(Capability-oriented):对齐 R-m2R-m4------权限随调用链携带,防 confused deputy;子 agent 权限沿委派链衰减。
- 可审计可解释(Auditable & Explainable):每次决策产出结构化记录(命中规则、原因、谁、何时);拒绝必须可解释(对齐 R-m6R-m10)。
- 闭环(Closed-loop):审计数据反哺策略规则------高频被拒动作自动建议规则。
4.2 总体架构

图 1:dsh 安全加固体系总体架构。核心为"harness 级工具调用策略执行点"(嵌入 tools/pre-execute),六大模块围绕它组织:规则集权限引擎(裁决核心)、插件隔离执行(能力隔离)、网络访问策略(边界管控)、密钥与凭据管理(机密保护)、结构化审计(决策留痕)、带外状态协议(结果可信)。
体系以 策略执行点(Policy Enforcement Point, PEP) 为核心:
模型输出 tool-call
↓
tools/pre-execute(waterfall 现有钩子)
↓
【PEP 裁决】PEP 调用策略决策点(PDP):
1. 规则匹配(action/resource/effect 三元组 + 通配符)
2. 属性评估(会话/项目/用户/委派深度/插件签名状态)
3. 分级授权:allow → 放行 / ask → 升级到 ctx.approval / deny → 阻断并解释
↓
裁决记录 → 结构化审计事件(hash 链)
↓
工具执行 → tools/post-execute → tools/result
4.3 六模块设计
4.3.1 规则集权限引擎(核心)
DSL(对齐 R-m7R-m10 的共同语法):
ts
interface PermissionRule {
id: string
action: string // 宿主能力枚举:bash/read/write/edit/webfetch/websearch/subagent/skill/...
resource: string // 通配符模式:文件路径/命令/URL/子代理类型/插件名
effect: 'allow' | 'ask' | 'deny'
when?: { // ABAC 属性条件(可选)
session?: string
project?: string
user?: string
delegationDepth?: { max: number }
pluginVerified?: boolean
}
priority?: number // 冲突消解
}
interface Ruleset {
version: number
rules: PermissionRule[]
defaultEffect: 'ask' | 'deny' // 默认策略(fail-closed)
}
求值语义:last-match-wins + 默认拒绝敏感面;规则编译为模式前缀树(glob 编译)实现毫秒级判定;决策可解释(返回命中规则与原因)。
存储 :规则持久化到 dsh settings 域(ctx.settings)或独立规则存储;重启不丢失;支持版本号与回滚(对齐 R-a10 策略代数思想)。
4.3.2 插件隔离执行
依据 R-a6R-s1R-s3 的路线对比,dsh 插件隔离有三条候选路线:
| 路线 | 隔离强度 | 性能 | 生态适配 | 定位 |
|---|---|---|---|---|
| WASM+WASI | 强(能力导向) | 中 | 低(需编译) | 长期主线 |
| 子进程+OS 沙箱(Landlock/seccomp)R-s4 | 中-强 | 中 | 高(保 JS) | 性价比最优 |
| isolated-vm(V8 isolate) | 弱-中 | 高 | 高 | 短期止血 |
本工作插件以纯规则层交付(不引入运行时隔离),隔离执行路线在论文第 8 章讨论中给出建议。
4.3.3 网络访问策略
- 出站白名单(域名/IP/端口),默认拒绝所有(回应"肉鸡"风险 R-o3R-p7);
- 插件级网络权限(未声明网络权限的插件禁止联网);
- 代理与审计通道(所有插件网络请求走统一代理,完整记录);
- 敏感数据外发检测(正则规则拦截含密钥/隐私的请求)。
4.3.4 密钥与凭据管理
- OS 密钥链后端(macOS Keychain / Windows Credential Manager / Linux libsecret)作为
ctx.credentials的替代 Provider; - 插件级凭据隔离(插件只能读取被授予的凭据引用);
- 凭证使用审计(每次解析记录调用者、时间、用途)。
4.3.5 结构化审计-策略闭环
- 每次工具调用记录:工具名、参数摘要、策略裁决结果(命中规则/原因/效果)、委派链深度;
- hash 链防篡改(审计事件链接到前序事件);
- 审计数据反哺:高频被拒动作自动建议规则(N3)。
4.3.6 带外状态协议
- 子进程执行结果与错误状态走独立带外通道(不经过 LLM 上下文),回应 dsh postmortem 0004"stderr 仍是带内归因通道"的遗留问题;
- 结果完整性校验(防模型/插件篡改)R-p3R-o1。
5 核心创新点
5.1 N1:harness 级工具调用策略执行点(与模型意图解耦)
问题:注入可操纵模型意图,诱导 agent 自行调用高危工具;模型侧防火墙 R-p2 与一次性审批均无法构成不可绕过的边界。
设计 :PEP(策略执行点)嵌入 dsh 现有 tools/pre-execute waterfall(来源:docs/tool-execution-pipeline.zh.md),与模型输出解耦:
- 裁决独立于意图:每次工具调用,PEP 独立评估"这个调用是否被允许"------不依赖模型是否"认为"它应该被调用。
- 注入无法改写策略:策略规则存储在 PEP 控制的数据面(规则存储),不经过模型上下文;会话内容、工具输出、插件代码均无法修改规则集。
- fail-closed :默认拒绝敏感面(
.env、删除命令、工作区外路径、未声明网络);规则未命中时走ask升级到ctx.approval,或按策略deny。
与现有设施的关系 :tools/pre-execute 已有 hooks/权限/沙箱能力(来源:docs/tool-execution-pipeline.zh.md),本设计将"一次性问答审批"升级为"规则优先、问答兜底"的双轨制(对齐 R-m7 opencode 的 PermissionSaved 思想)。
5.2 N2:面向 agent 的层级权限模型(委派链权限衰减)
问题:通用权限模型(RBAC/ABAC/能力模型)无"委派链衰减"语义------子 agent 默认继承父 agent 全部权限面,委派成为权限扩散通道。
设计(图 2):

图 2:面向 agent 的层级权限模型。根 Agent 拥有角色权限 R₀;每个子 agent 的有效权限 = 父权限 ∩ 委派任务范围,随委派深度严格衰减;越权委派被 PEP 拒绝。
形式化:
不变量:对委派链上任一节点 n(深度 d ≥ 1):
P(n) ⊆ P(parent(n)) ∩ T(n)
(有效权限 ⊆ 父权限 ∩ 任务范围,严格衰减)
委派越权检测:委派请求 D(目标 n+1,任务 Tₙ₊₁):
允许 ⟺ Tₙ₊₁ ⊆ P(n)
(否则拒绝委派------权限不可超集扩展)
对齐:R-a8(最小自主性)、R-a7(动态能力作用域)、R-m2(能力安全可衰减委托)、R-a10(策略代数)。
5.3 N3:结构化审计-策略闭环
问题 :dsh 会话日志记录 tool/call/tool/result,但不含策略裁决结果;审计与执行互不打通。
设计:
- 结构化审计事件 :每次工具调用记录------工具名、参数摘要、策略裁决结果(命中规则/原因/效果) 、委派深度、时间;写入会话日志(扩展
SessionEventMap,来源:docs/persistence-catalog.zh.md)。 - hash 链防篡改 :审计事件携带前序事件哈希------事后不可否认、不可篡改(对齐 dsh "模型可见即已记录"红线,来源:
docs/architecture.zh.md)。 - 审计反哺策略:高频被拒动作自动生成规则建议;用户确认后写入规则集------"审计→策略"闭环(对齐 R-m5 审计日志生成策略的技术路线)。
5.4 N4:权限边界绕过专项基准
问题:ASB/AgentDojo 评测"注入对任务输出的影响",未把"权限边界绕过"作为独立维度。
设计:
| 侧 | 场景 | 度量 |
|---|---|---|
| 攻击侧 | 诱导高危调用(注入让 agent 调 rm -rf/fs 越界写) |
绕过成功率 |
| 攻击侧 | 委派链越权(子 agent 尝试超范围委派/调用) | 越权成功率 |
| 攻击侧 | 工具输出注入(工具输出藏恶意指令诱导下一步) | 劫持成功率 |
| 防御侧 | 策略引擎阻断上述攻击 | 策略阻断率 |
| 防御侧 | 良性调用被误拒 | 误伤率 |
对齐:R-a9(权限分级评测)、R-a11(执行控制安全不变量)、R-p3(带外防御评估)。
6 实现:dsh-security-hardening 插件
6.1 插件定位与形态
dsh-security-hardening 以纯插件形态 交付(不侵入 dsh 内核),符合 dsh 组合包规范(dsh.bundle 声明 + cordis.patch.yml,来源:docs/user/develop/basic/publish.zh.md):
dsh-security-hardening/
├── package.json # dsh.bundle 声明
├── cordis.patch.yml # 插件行:挂载 security-hardening
├── src/
│ ├── index.ts # 插件入口(apply + inject)
│ ├── ruleset.ts # 规则集引擎(三元组 + 通配 + 求值)
│ ├── matcher.ts # 模式匹配(glob 编译 + last-match-wins)
│ ├── pep.ts # 策略执行点(嵌入 tools/pre-execute)
│ ├── audit.ts # 结构化审计(hash 链)
│ ├── network.ts # 网络白名单最小版
│ └── storage.ts # 规则持久化(settings 域)
├── tests/
└── README.md
6.2 与 dsh 扩展点的对接
| dsh 扩展点 | 本插件的对接方式 | 来源 |
|---|---|---|
tools/pre-execute(waterfall) |
PEP 裁决入口:监听事件,对每次工具调用匹配规则 | docs/tool-execution-pipeline.zh.md |
ctx.approval |
ask 升级路径:规则未命中且策略为 ask 时,委托现有审批 |
docs/subsystems/approval.zh.md |
ctx.settings |
规则持久化(settings 域,重启不丢失) | docs/subsystems/settings.zh.md |
session/event |
审计事件写入会话日志(扩展事件类型) | docs/persistence-catalog.zh.md |
ctx.credentials |
凭据引用检查(插件只能访问被授予的凭据) | docs/subsystems/credentials.zh.md |
6.3 规则 DSL 示例
ts
// cordis.yml 配置示例
- id: security-hardening
name: dsh-security-hardening
config:
defaultEffect: ask // fail-closed:未命中默认询问
rules:
- id: bash-git-safe
action: bash
resource: "git *"
effect: allow
- id: bash-no-rm-rf
action: bash
resource: "rm -rf *"
effect: deny
when: { session: "any" }
- id: fs-readonly-workspace
action: write
resource: "/workspace/**"
effect: ask
- id: network-allow-deepseek
action: webfetch
resource: "https://api.deepseek.com/*"
effect: allow
- id: delegation-depth-limit
action: subagent
resource: "*"
effect: ask
when: { delegationDepth: { max: 2 } }
network:
default: deny // 默认拒绝所有出站
allowlist: ["api.deepseek.com"]
allowInternal: false
6.4 核心代码要点(规则求值)
ts
// matcher.ts ------ 模式匹配 + last-match-wins 求值
export function evaluate(rules: PermissionRule[], req: Request): Decision {
// 1. 按 priority 排序;同优先级按声明顺序(后声明优先)
const ordered = [...rules].sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0))
// 2. last-match-wins:找到最后一个匹配的规则
let decision: Decision = { effect: 'default' }
for (const rule of ordered) {
if (matchAction(rule.action, req.action)
&& matchResource(rule.resource, req.resource)
&& matchWhen(rule.when, req.attrs)) {
decision = { effect: rule.effect, ruleId: rule.id, reason: rule.reason ?? '' }
}
}
// 3. 默认策略兜底(fail-closed)
if (decision.effect === 'default') {
decision = { effect: defaultEffect, ruleId: null, reason: 'no rule matched' }
}
return decision
}
7 评估
7.1 单元测试(规则引擎)
| 测试类别 | 用例数 | 覆盖点 |
|---|---|---|
| 三元组匹配 | 12 | action/resource/effect 精确匹配、*/?/** 通配符、last-match-wins |
| 属性条件(when) | 8 | 会话/项目/委派深度/插件签名状态条件 |
| 默认策略 | 6 | fail-closed(defaultEffect=ask/deny)、无规则命中 |
| 优先级与冲突 | 4 | priority 排序、同优先级后声明优先 |
| 规则持久化 | 5 | 保存/加载/版本/回滚/损坏文件处理 |
| 网络白名单 | 6 | 默认拒绝、allowlist 匹配、内网隔离 |
7.2 绕过场景测试(N4 基准初版)
| 场景 | 构造 | 预期 |
|---|---|---|
| 诱导高危调用 | 注入文本诱导 agent 调 rm -rf |
PEP deny(规则 bash-no-rm-rf) |
| 越界写 | agent 尝试写工作区外路径 | PEP ask/deny(fs-readonly-workspace) |
| 委派链越权 | 子 agent 委派超范围任务 | 拒绝委派(T ⊆ P 检查失败) |
| 工具输出注入 | 工具输出藏恶意指令诱导下一步 | 下一步工具调用仍被规则独立裁决 |
7.3 性能
规则编译为模式前缀树后,单次判定为 O(规则数 × 模式长度),在典型 50-200 条规则下 <1ms------低于 dsh 工具调用的毫秒级开销阈值。
7.4 与 R-dsh1 的衔接
R-dsh1(2026)对 dsh 做了间接提示注入的受控评估(14,560 次执行),证明"评估方法可行";本工作的定位差异是"加固"------在 PEP 层面阻断注入诱导的高危调用,而非仅测量。二者互补:前者是基线评估,后者是防护设计。
8 讨论
8.1 与经典权限理论的关系
- 与 ABAC(R-m1) :本工作的
when属性条件即 ABAC 的属性判定;差异在于把属性扩展到 agent 特有维度(委派深度、插件签名状态、会话作用域)。 - 与能力安全(R-m2R-m4):委派链权限衰减是"能力可衰减委托"在 agent 场景的落地;PEP 随调用链携带权限上下文(而非静态身份绑定),防 confused deputy。
- 与最小权限(R-m3R-a8):默认拒绝敏感面 + 声明式规则 = 最小权限原则的可操作化。
8.2 隔离技术路线权衡
| 路线 | 优点 | 缺点 | 建议场景 |
|---|---|---|---|
| WASM+WASI | 能力导向、强隔离、可移植 | 需编译、生态适配成本高 | 长期主线(重插件) |
| 子进程+OS 沙箱 | 保 JS 生态、隔离强 | 进程/IPC 开销 | 性价比最优(当前推荐) |
| isolated-vm | 低开销、易接入 | 隔离弱(同进程) | 短期止血 |
8.3 局限
- 规则表达力边界 :三元组 DSL 无法表达所有策略(如跨工具时序约束)------复杂策略需扩展
when或引入策略代数 R-a10。 - 网络策略最小版:当前实现为域名白名单;完整代理/审计/外发检测为后续工作。
- 隔离执行未落地:插件隔离是体系的一部分但本插件交付规则层;隔离执行路线(第 8.2 节)为后续工作。
- N4 基准为初版:完整攻击面(R-a14 SoK)需要更多场景。
- 单机假设:远程沙箱/多租户场景未覆盖。
9 结论与展望
9.1 结论
本文面向 dsh 的安全加固,提出了以"harness 级工具调用策略执行点"为核心的治理体系:规则集权限引擎(三元组 + 通配 + 分级授权)、委派链权限衰减的层级权限模型、结构化审计-策略闭环、权限绕过专项基准,并配套实现了 dsh-security-hardening 插件。体系设计严格基于 dsh 现有设施(ctx.sandbox/ctx.approval/permission-presets/ctx.credentials)的盘点,每个设计决策都有近 2-3 年文献支撑与源码实证。
核心论点:在"注入诱导 agent 自行调用高危工具"的攻击模型下,安全的落点必须是 harness 层"与模型意图解耦的策略执行点"------注入可以改变模型"想调用什么",但不能改变"什么被允许调用"。这一洞察将权限治理从"模型侧提示注入防御"推进到"harness 层运行时权限边界"。
9.2 展望
- 插件隔离执行落地:按第 8.2 节路线推进(子进程+OS 沙箱优先)。
- 网络策略完整版:代理通道、敏感外发检测、审计。
- N4 基准完善:覆盖 R-a14 攻击面 SoK 的更多场景。
- 与现有设施的深化集成:审批升级路径、会话日志审计事件、凭据隔离。
- 多租户与远程沙箱:企业级安全边界。
参考文献
R-dsh1 Z. Ying, X. Wu, H. Wu, X. Zheng, H. Cheng, X. Shi, J. Guo. Security Assessment of DeepSeek Harness with A.I.G: Evaluating Resistance to Indirect Prompt Injection. 2026. arXiv:2608.16393.
R-a1 Agent Skill Security: Threat Models, Attacks, Defenses, and Evaluation . 2026. arXiv:2607.13987.
R-a2 PhantomSkill: Malicious Code Injection in Agent Skill Ecosystems . 2026. arXiv:2606.19191.
R-a3 SkillsMetric: Mapping the Detection Boundary of Static Analysis for Malicious Skills . 2026. arXiv:2608.08468.
R-a4 SkillGate: Cost Efficient Runtime Malicious Skill File Detection in Coding Agents . 2026. arXiv:2607.25619.
R-a5 S. Pan, X. Sun, T. Zhang, D. Liao, K. Wen, et al. SkillGuard: A Permission-Centric Framework for Agent Skill Security . 2026. arXiv:2606.03024.
R-a6 Isolation as a First-Class Principle for LLM-Agent System Safety: Concepts, Taxonomy . 2026. arXiv:2607.12406.
R-a7 Dynamic Capability Scoping for Enterprise AI Agents: A Synthetic Dataset and... . 2026. arXiv:2607.22445.
R-a8 A Theory of Least Autonomy in AI . 2026. arXiv:2607.09744.
R-a9 Permission Denied: Policy-Graded Evaluation of Coding Agents in Hardened Environments . 2026. arXiv:2608.02670.
R-a10 A Policy Algebra for Trust-Preserving Agentic AI Execution . 2026. arXiv:2608.16402.
R-a11 From Tool Connection to Execution Control: Benchmarking Security Invariants... . 2026. arXiv:2606.29073.
R-a12 The Balkanization of Execution-Security Research for AI Coding Agents: Isolation... . 2026. arXiv:2607.05743.
R-a13 LLM agents security duality: a comprehensive survey of self-security and emergent... . 2026. arXiv:2606.28450.
R-a14 SoK: The Attack Surface of Agentic AI --- Tools, and Autonomy . 2026. arXiv:2603.22928.
R-a15 LLM Platform Security: Applying a Systematic Evaluation Framework to OpenAI's ChatGPT Plugins . 2024. AAAI AIES.
R-p1 K. Greshake, et al. Not What You've Signed Up For: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection . 2023. arXiv:2302.12173.
R-p2 Indirect Prompt Injections: Are Firewalls All You Need, or Stronger Benchmarks? . NeurIPS 2025.
R-p3 Adaptive Evaluation of Out-of-Band Defenses Against Prompt Injection in LLM... . 2026. arXiv:2606.26479.
R-p4 BASIS: Breach-Aware Selective Prompt Injection Shielding with Prefill Attention . 2026. arXiv:2608.08027.
R-p5 Robust Context-Aware Detection of Malicious Instructions in Text . 2026. arXiv:2608.05430.
R-p6 Prismata: Confining Cross-Site Prompt Injection in Web Agents . 2026. arXiv:2607.08147.
R-p7 When Agents Act on Web3: An Attack-Surface Survey of MCP, Skills, and Tools . 2026. arXiv:2608.17275.
R-m1 NIST SP 800-162. Guide to Attribute Based Access Control (ABAC) Definition and Considerations . 2019.
R-m2 H. Levy. Capability-Based Computer Systems . Digital Press, 1984.
R-m3 J. Saltzer, M. Schroeder. The Protection of Information in Computer Systems . CACM, 1975.
R-m4 N. Hardy. The Confused Deputy (or why capabilities might have been invented) . ACM, 1988.
R-m5 Generation of Human Comprehensible Access Control Policies from Audit Logs . 2026. arXiv:2603.14341.
R-m6 EXTree: Towards Supporting Explainability in Attribute-based Access Control . 2026. arXiv:2604.12850.
R-m7 opencode. Permissions .
R-m8 Chrome. Extension Manifest V3 permissions .
R-m9 Node.js. Permission model(--experimental-permission) .
R-m10 MCP. Security Best Practices .
R-s1 Empirical Security Analysis of Software-based Fault Isolation through Control... . 2025. arXiv:2509.07757.
R-s2 WASI / WebAssembly System Interface.
R-s3 isolated-vm.
R-s4 Landlock / seccomp-bpf / Seatbelt / Windows ACL.
R-s5 Chromium. Process Model and Site Isolation . 2018.
R-c1 M. Ohm, et al. Backstabber's Knife Collection . DIMVA 2020. arXiv:2005.09535.
R-c2 P. Ladisa, et al. SoK: Taxonomy of Attacks on Open-Source Software Supply Chains . IEEE S&P 2023. arXiv:2204.04008.
R-c3 C. Huang, et al. DONAPI: Malicious NPM Packages Detector . USENIX Security 2024. arXiv:2403.08334.
R-c4 S. Halder, et al. Malicious Package Detection using Metadata Information . WWW 2024. arXiv:2402.07444.
R-c5 D.-K. Nguyen, et al. Taint-Based Code Slicing for LLMs-based Malicious NPM Package Detection . 2025. arXiv:2512.12313.
R-c6 N. Zahan, et al. OpenSSF Scorecard: On the Path Toward Ecosystem-Wide Automated Security Metrics . 2023. arXiv:2208.03412.
R-c7 Unraveling Challenges with SLSA for Securing the Software Supply Chain . 2024. arXiv:2409.05014.
R-c8 Chrome 扩展攻破事件(Cyberhaven 2024;35+ 扩展/320 万用户 2025). 安全厂商报告.
R-o1 ClawGuard: Out-of-Band Detection of LLM Agent Workflow Hijacking via EM Side Channel . 2026. arXiv:2605.06205.
R-o2 ClawGuard: A Runtime Security Framework for Tool-Augmented LLM Agents Against Indirect... . 2026. arXiv:2604.11790.
R-o3 Hybrid Analysis for Secure MCP Tool Use in LLM Agents. 2026. arXiv:2607.25297.