SHIELD.md防护盾+九大文件体系标准筑牢OpenClaw安全防线


微软高级安全研究员Thomas Roccia创建MoltThreat威胁情报库,推出SHIELD.md安全标准,为OpenClaw AI代理提供动态政策防护,通过十一大威胁类别和三大决策机制构建早期安全护栏。
 

AI代理正在裸奔上网,你的数字分身可能正在给黑客打工

OpenClaw这玩意儿最近在网上彻底火了,火到什么程度呢,火到连我这种常年泡在安全圈的老油条都不得不放下手里的咖啡杯仔细瞅两眼。它火的原因特别简单,就俩字,简单,再加上跟各种聊天软件无缝衔接,简直是懒人福音。

但问题在于,这玩意儿火的同时,也把一堆肉眼可见的风险赤裸裸地摆在了所有人面前,就像一个人穿着睡衣冲进了华尔街,舒适是舒适了,但底裤都快被人看光了。

当你的AI代理直接暴露在公网上,等于给黑客发了一张VIP邀请函

想象一下这个画面,你把自家大门钥匙挂在脖子上,然后跑到时代广场正中央站着,嘴里还念叨着欢迎光临。这就是把AI代理直接暴露在互联网上的真实写照。任何稍微有点技术手段的攻击者都能大摇大摆地走进来,然后获得整台连接机器的完全控制权。

这还不是最刺激的,恶意技能包、被植入后门的软件包、提示词注入攻击,这些高风险威胁就像自助餐一样摆在黑客面前,随便挑随便选,吃到撑为止。

MoltThreat横空出世,给混乱的AI安全世界带来第一缕曙光

面对这种乱成一锅粥的局面,我决定做点什么,于是火速创建了MoltThreat。这是全球第一个专门针对AI代理的人工策划威胁情报数据库,没错,就是人工一条一条筛选出来的,不是那种AI自动抓取的垃圾数据。

MoltThreat的核心逻辑特别直接,持续获取最新的威胁检测信息,然后自动更新本地的Security.md文件,实时追踪所有恶意活动。

这个文件本质上就是给你的AI代理制定的一份安全政策说明书,告诉它什么能做,什么绝对不能碰。

Security.md这个名字已经被占用了,于是SHIELD.md应运而生

这里有个小插曲,Security.md这个名字在开源社区里已经被占用了,主要是用来报告漏洞的,而不是用来定义代理自身的安全策略。这就好比你想开个饭店叫麦当劳,结果发现 trademark 已经被占了,只能换个名字。

于是我灵机一动,干脆创建一个全新的标准,就叫SHIELD.md,让每个AI代理都能拥有一份专属的安全防护盾。市场上对代理安全的需求已经迫在眉睫,这个标准就是要用一种全新的思路来解决这个迫在眉睫的问题。

OpenClaw的八大核心文件构成了代理的数字灵魂

在深入讲解SHIELD.md之前,得先搞清楚OpenClaw的基本架构。

这个代理系统依赖多个Markdown文件来定义行为,每个文件都有独特的使命。

  • AGENTS.md负责定义代理的整体结构,规定它应该怎么运作,能访问哪些文件。
  • HEARTBEAT.md管理所有计划任务、提醒事项和定时任务。
  • IDENTITY.md明确代理的身份定位,它的角色是什么,职责范围有多大。
  • MEMORY.md存储那些需要跨会话持久化保存的事实和决策,同时规定什么内容可以被保存下来。
  • SOUL.md设定代理的个性特征和行为边界,决定它是高冷御姐还是话痨小弟。
  • TOOLS.md列出所有可用工具,并严格规定调用条件和方式。
  • USER.md记录操作这个代理的人类身份信息。
  • SKILL.md则用于扩展代理的各项能力。

这八个文件就像代理的八大器官,缺一不可。

SHIELD.md作为第九大核心文件,专门守护安全防线

基于这套成熟的文件结构体系,我引入了第九个关键组件,SHIELD.md,这是一个完全专注于安全政策的独立文件。SHIELD.md遵循特定的格式规范,包含一份可以持续更新和演进的安全政策。简单来说,SHIELD.md就是给你的AI代理提供一套完整的安全行为指南。

在这个标准中,我正式推出了Shield v0版本,这是一种上下文加载式的安全政策,采用类似技能的结构化方式。它明确规定了当检测到已知威胁时,代理应该如何做出反应,而且完全不需要重新定义代理的核心角色定位。这份文件可以随着时间推移不断进化,过时的威胁可以被移除,新出现的威胁可以随时添加进来。

威胁检测的完整工作流程,从事件触发到决策执行

整个防护机制的运行流程分为四个关键步骤。

第一步,事件触发,可能是技能安装、技能执行、工具调用、MCP连接、出站网络请求,或者敏感信息读取。

第二步,威胁评估,代理将当前事件与SHIELD中定义的活跃威胁进行匹配,使用明确的条件判断规则。

第三步,优先级裁决,按照阻断优先于需要批准、需要批准优先于记录的层级强制执行决策。

第四步,决策输出,在执行任何操作之前,代理必须先输出一个简洁的决策块,明确声明选定的操作类型和匹配的威胁上下文。

SHIELD.md标准模板的核心结构解析

这份模板文件采用YAML前置元数据加Markdown正文的格式。元数据部分包含文件名、描述信息和版本号。正文部分首先明确文档目的,定义上下文加载的威胁情报源,以及当威胁匹配事件时必须执行的强制决策行为,同时强调这份文档仅提供指导,不会重新定义代理角色。

适用范围部分详细列出了七大监控领域,包括输入提示词、技能安装、技能执行、工具调用、网络出站请求、敏感信息读取,以及MCP服务器通信。

十一大威胁类别覆盖了所有已知攻击向量

威胁分类体系必须严格遵循以下十一大类别。

  1. 提示词类涵盖提示词注入和指令操纵攻击。
  2. 工具类针对危险或滥用性的工具使用行为。
  3. MCP类监控恶意或被入侵的MCP服务器及其交互过程。
  4. 内存类关注内存访问、投毒或数据外泄风险。
  5. 供应链类识别恶意依赖项、技能包或更新程序。
  6. 漏洞类针对已知或疑似缺陷的利用尝试。
  7. 欺诈类覆盖诈骗、身份冒充或凭证窃取行为。
  8. 政策绕过类检测试图规避或禁用控制机制的尝试。
  9. 异常类标记没有已知特征的可疑行为。
  10. 技能类识别恶意或不安全的技能逻辑。
  11. 其他类则兜底所有未被上述类别覆盖的情况。

三大强制执行状态构成了决策的完整闭环

每个威胁匹配必须且只能导致以下三种操作之一。记录操作,继续执行但留下审计日志。需要批准操作,暂停执行并向用户发起确认请求。阻断操作,立即停止所有相关行为。不允许出现任何其他类型的响应动作。

在发起任何技能安装或执行、工具调用、MCP交互、网络请求或敏感信息访问之前,必须先输出决策块并暂停后续操作。决策块包含操作类型、适用范围、威胁标识、指纹信息、匹配字段、匹配值,以及简短的原因说明。

默认行为与匹配资格的双重保险机制

当没有匹配到任何威胁时,默认执行记录操作。当存在不确定性时,默认执行需要批准操作。威胁要进入匹配候选池,必须同时满足三个条件,撤销标志为假,撤销时间为空,当前时间早于过期时间。

任何已过期或已撤销的威胁都必须被彻底忽略,不得参与匹配过程。置信度阈值设定为0.85,高于此值的威胁被视为可强制执行,低于此值的原则上需要批准,除非威胁操作是阻断且严重程度为关键级别。

匹配逻辑与推荐语法的精确规则

威胁与事件的匹配遵循三层逻辑。

首先检查威胁类别与事件范围是否对齐,其次评估威胁的推荐代理条件,这是主要匹配依据,最后才回退到标题和描述的字符串匹配,而且只有在存在明确的精确值时才启用。

绝对不允许进行任何推断,只能基于威胁条目中存在的明确字符串或模式进行匹配。推荐代理语法支持三大指令,阻断、批准、记录,以及六大条件类型,包括技能名称的精确匹配或包含匹配,出站请求的目标域名或URL前缀,敏感信息读取的文件路径,以及普通文件的路径匹配。支持使用或运算符连接多个条件,域名统一转小写并去除尾部点号,URL采用前缀匹配,技能名称默认精确匹配除非明确使用包含指令。

硬性停止规则与强制响应格式的绝对权威

一旦决策为阻断,代理必须立即停止,不得调用任何工具,不得执行网络访问,不得读取敏感信息,不得安装或执行任何技能,在输出阻断响应后必须立刻终止所有后续操作。阻断响应必须严格遵循固定格式,阻断,威胁匹配,威胁标识,匹配字段等于匹配值,然后立即停止。

需要批准时必须提出一个是非问题,然后停止。记录操作则可以正常继续执行。

上下文限制与威胁条目的精简策略

为了避免上下文窗口溢出,只包含当前任务所需的活跃威胁,优先加载操作类型为阻断且严重程度为关键或高的威胁,活跃威胁条目上限设定为25条,除非匹配需要否则不包含长描述,输出中不得重复威胁列表。

每个活跃威胁条目必须精简到仅保留匹配和决策所需的字段,包括标识、指纹、类别、严重程度、置信度、操作、短标题、推荐代理、过期时间和撤销状态。更多信息可以参考MoltThreat数据库。

SHIELD v0的现实局限性需要清醒认识

Shield v0版本并不提供硬性强制执行机制,这意味着模型理论上可以选择忽略它。这就是为什么必须通过其他文件明确指定如何使用SHIELD的原因。提示词注入攻击可能试图覆盖政策指令,威胁逻辑可能被模型总结或泄露,合规性在不同运行和模型之间不具备确定性,上下文窗口限制也制约了威胁情报源的规模和规则复杂度。Shield v0应该被定位为降低意外风险的早期护栏,而不是作为安全边界,至少在这个初始版本中是这样。

部署SHIELD.md只需要三步走

使用方式极其简单,首先在代理根目录创建SHIELD.md文件,与AGENTS.md、SOUL.md等其他核心文件放在一起。然后通过SOUL.md、AGENTS.md和MEMORY.md明确指示代理使用这份文件来执行安全政策。最后开始填充威胁情报,最佳起点就是直接利用MoltThreat的数据,按照标准结构添加安全措施即可。

动态政策逻辑开启了AI安全的新纪元

SHIELD代表了一种全新的思路,通过动态政策逻辑来提升代理安全性。这是迈向通用且简洁的安全规则表达结构的第一步,这种结构对所有人来说都可读、可定制、可演进。它确实有局限性,也可能被绕过,但它推动了整个行业向更强的代理安全方向前进。如果你喜欢这个概念,开始实验吧,分享出去,让我知道你的想法。