乐于分享
好东西不私藏

OpenClaw 4.11 安全加固

OpenClaw 4.11 安全加固

OpenClaw v2026.4.11今天发布,我仔细研究了release notes,发现这次更新在安全方面做了不少重要改进。

作为一个AI助手平台,安全不仅仅是"不泄露密码"那么简单。它涉及到信息边界、权限控制、数据隔离等多个层面。这次更新,OpenClaw在这些方面都有所加强。

安全改进一:子Agent信息泄露修复

问题描述

在ACP(Agent Control Protocol)架构中,父会话可以创建子Agent来执行特定任务。之前存在一个严重问题:子Agent的内部运行注释会泄露到父会话中。

具体表现

Python
# 之前:父会话能看到这些内部信息
[子Agent] 正在分析用户需求...
[子Agent] 正在生成代码结构...
[子Agent] 正在编写具体实现...
[子Agent] 任务完成,返回结果
 
# 现在:父会话只看到最终结果
[任务完成] 这里是生成的代码...

安全风险

1信息过载:用户不需要看到这些内部过程
2敏感信息泄露:子Agent的内部逻辑可能包含敏感信息
3攻击面扩大:攻击者可能通过这些信息了解系统内部结构

修复效果

现在这些内部进度信息被正确屏蔽。父会话只接收最终结果,实现了更好的信息隔离。

安全改进二:外部嵌入内容审核

新功能

Control UI新增了[embed ...]标签,支持在对话中嵌入富内容(网页预览、交互组件等)。

安全机制

Yaml
# 配置示例
security:
 embed_urls:
   allowlist:
     - https://docs.openclaw.ai/*
     - https://github.com/openclaw/*
   blocklist:
     - http://localhost/*
     - file:///*

安全考虑

1来源审核:嵌入的URL必须经过配置审核
2协议限制:可以限制只允许HTTPS
3域名白名单:只允许信任的域名
4本地资源隔离:禁止嵌入本地文件系统资源

实际意义

这个功能在提供丰富交互体验的同时,防止了恶意内容的注入。比如,攻击者不能通过AI回复嵌入一个钓鱼网站。

安全改进三:插件系统权限声明

新架构

插件现在可以通过manifest声明所需的权限和配置步骤。

权限声明示例

Json
{
 "name": "database-plugin",
 "version": "1.0",
 "permissions": {
   "required": ["read_database", "write_database"],
   "optional": ["admin_access"],
   "setup_steps": [
     {
       "name": "数据库连接配置",
       "description": "配置数据库连接信息",
       "fields": ["host", "port", "username", "password"]
     }
   ]
 }
}

安全优势

1最小权限原则:插件只能请求必要的权限
2透明配置:用户清楚知道插件需要什么
3分步授权:可以按需授权,而不是一次性给所有权限
4审计追踪:权限授予有明确记录

安全改进四:Microsoft Teams反应权限分离

技术细节

Microsoft Teams插件现在支持反应(reactions)功能,但实现上做了权限分离:

  • 读取路径:使用应用级认证(不需要用户授权)
  • 写入路径:使用委托OAuth(需要用户授权)

安全设计

Yaml
teams:
 reactions:
   read: app_auth  # 任何人都可以读取反应
   write: delegated_oauth  # 只有授权用户可以发送反应

安全意义

1权限最小化:不同操作使用不同权限级别
2用户控制:发送反应需要用户明确授权
3防止滥用:未授权用户不能发送恶意反应

安全改进五:音频转录DNS安全加固

问题背景

之前音频转录功能(OpenAI、Groq、Mistral)因为DNS问题失效。

安全修复

Python
# 修复前:所有请求都用pinned DNS
def make_request(url, data):
   # 使用pinned DNS,但配置有问题
   return requests.post(url, data, dns_config=pinned_dns)
 
# 修复后:只有multipart请求用pinned DNS
def make_request(url, data):
   if is_multipart(data):
       # multipart请求用pinned DNS
       return requests.post(url, data, dns_config=pinned_dns)
   else:
       # 其他请求用系统DNS
       return requests.post(url, data)

安全考虑

1针对性防护:只在必要时使用安全DNS
2性能平衡:不影响正常请求的性能
3故障隔离:一个服务的DNS问题不影响其他服务

安全改进六:配置验证增强

新功能

配置系统现在会验证asyncCompletion字段。

技术细节

Typescript
// 配置schema现在包含asyncCompletion
const configSchema = z.object({
 // ... 其他字段
 asyncCompletion: z.boolean().optional(),
 // ... 其他字段
})

安全意义

1配置验证:防止无效配置导致安全漏洞
2类型安全:确保配置值的类型正确
3文档同步:配置字段和文档保持一致

安全改进七:QA测试中的安全检查

新测试

QA测试现在包含"信息泄露"场景检查。

测试内容

Yaml
security_tests:
 - name: "子Agent信息泄露"
   scenario: "创建子Agent执行任务"
   check: "父会话不应看到子Agent内部注释"
   severity: "high"
 
 - name: "配置信息泄露"
   scenario: "请求系统信息"
   check: "响应不应包含敏感配置"
   severity: "medium"

安全价值

1自动化检查:每次发布前自动运行安全测试
2持续监控:确保安全修复不会回退
3质量门禁:安全测试失败会阻止发布

安全最佳实践建议

基于这次更新,我总结了几个安全最佳实践:

1. 及时更新

Bash
# 定期检查更新
openclaw update --check
 
# 应用安全更新
openclaw update

2. 配置审核

Yaml
# 检查安全相关配置
security:
 embed_urls:
   allowlist: [/* 只添加信任的域名 */]
 
 plugins:
   review_permissions: true  # 审核插件权限

3. 权限管理

  • 使用最小权限原则
  • 定期审查插件权限
  • 禁用不需要的插件

4. 监控日志

Bash
# 查看安全相关日志
openclaw logs --filter security

总结

OpenClaw v2026.4.11-beta.1在安全方面的改进主要集中在:

1信息边界:修复子Agent信息泄露
2内容安全:外部嵌入内容审核
3权限控制:插件权限声明和分离
4配置安全:配置验证增强
5测试覆盖:QA测试包含安全检查

这些改进体现了OpenClaw团队对安全问题的重视。作为一个AI助手平台,安全不是一次性工作,而是持续的过程。

这次更新虽然标着beta,但安全修复的质量很高。建议所有用户,特别是企业用户,认真考虑升级。


安全是一个持续的过程。如果你在使用OpenClaw时发现任何安全问题,建议及时向开发团队反馈。