OC0421 · Security Profile · Ontology v5.1

安全机制全景(Security Profile)

OC0421_WithOfficialCC — OpenClaw v2026.4.21 五维安全画像

Dim-1 · 攻击面(Attack Surface)
攻击面评估
CRITICAL
攻击面严重程度证据
工作区文件系统(SOUL/USER/MEMORY/HEARTBEAT 等 8 文件直接注入系统提示词)CRITICALdist/system-prompt-BRx_74d7.js:CONTEXT_FILE_ORDER
20+ 渠道消息入口(每条消息体均流经 LLM 上下文)HIGHdist/message-hook-mappers-DZ_jp2sF.js:BodyForCommands
Gmail allowUnsafeExternalContent(邮件 HTML 全文无净化传递)HIGHdangerous-config-flags:hooks.gmail.allowUnsafeExternalContent
BOOTSTRAP.md 冷启动优先注入(覆盖系统提示词前缀)HIGHdist/bootstrap-prompt-4ZAPcOdz.js
Cron / 心跳调度(攻击者通过写 HEARTBEAT.md 实现定时 C2)HIGHdist/heartbeat-wake-B8UNwbeh.js
Webhook HTTP 入口(速率限制仅内存,重启清零)MEDdist/webhook-memory-guards-0h6_GER-.js:WEBHOOK_RATE_LIMIT_DEFAULTS
Dim-2 · 权限模型(Permission Model)
权限模型评估
HIGH RISK(无 Docker 时 = CRITICAL)
配置项风险
exec(无 Docker)security"full"(全权限)CRITICAL
exec(无 Docker)ask"off"(不询问)CRITICAL
bypassPermissions mode--permission-mode bypassPermissions→ 跳过全部 tool-policyCRITICAL
tools.fs.workspaceOnly=false文件系统工具可操作工作区外HIGH
tools.exec.applyPatch.workspaceOnly=falseapply_patch 可操作任意文件HIGH
hooks.allowRequestSessionKey=trueWebhook 可获取 session keyHIGH
browser.ssrfPolicy.dangerouslyAllowPrivateNetwork=true内网 SSRFHIGH
gateway.controlUi.dangerouslyDisableDeviceAuth=true禁用 Control UI 鉴权HIGH

证据:dist/dangerous-config-flags-lTz7t-pV.js:collectEnabledInsecureOrDangerousFlags · dist/exec-defaults-F2zQAtOd.js · dist/cli-shared-BybrVDQR.js

Dim-3 · GuardRail 状态
安全检查器评估
WEAK(规则级,无模型级)
sanitizeForPromptLiteral
RulesChecker
绕过方式:仅过滤控制字符(CR/LF/NUL/bidi/ZWJ),不过滤指令语义文本
dist/system-prompt-BRx_74d7.js:sanitizeForPromptLiteral
wrapUntrustedPromptDataBlock
RulesChecker
绕过方式:仅对特定字段生效(非全量),LLM 可被诱导忽略 <untrusted-text> 边界
dist/system-prompt-BRx_74d7.js:wrapUntrustedPromptDataBlock
tool-policy-pipeline
RulesChecker
绕过方式:bypassPermissions 模式全绕过;通配符 allowlist
dist/tool-policy-pipeline-CIlYYZSa.js
allowFrom 渠道鉴权
RulesChecker
绕过方式:allowWhenEmpty=true(未配置时任意发件人通过);hasWildcard=true
dist/allow-from-ClF_LMu8.js:isSenderIdAllowed
Webhook 速率限制
RulesChecker
绕过方式:仅内存(重启清零);maxRequests=120/min 可低速绕过
dist/webhook-memory-guards-0h6_GER-.js:WEBHOOK_RATE_LIMIT_DEFAULTS
GuardRail(模型级)
不存在
Agent.guard_rail = None — 无任何 LLM-based 检测
OUTPUT 层检查
不存在
模型输出直接发送到渠道,无拦截机会
SC-GAP-NO-GUARDRAIL
无独立模型级 GuardRail。所有安全检查均为规则级,可被语义注入绕过。
SC-GAP-NO-OUTPUT-CHECK
无输出层检查。恶意外发内容无法在送达渠道前被拦截。
SC-GAP-WORKSPACE-INJECTION
工作区 .md 文件注入系统提示词时无语义过滤。sanitizeForPromptLiteral 仅处理控制字符。攻击者植入的 Markdown/指令文本被 LLM 完整解析。
Dim-4 · 持久化能力
持久化向量评估
HIGH
MEMORY.md 写入(Plugin 记忆)
跨会话持久
SOUL.md / USER.md 篡改
跨会话持久
HEARTBEAT.md C2 注入
周期性触发(心跳每次重读)
Cron 任务创建
无限持续(croner 定时)
BOOTSTRAP.md 植入
跨重启持久(冷启动优先执行)
Dim-5 · 扩展危害能力
危害能力矩阵
CRITICAL
任意命令执行
exec(无 Docker → full + no-ask)→ 宿主系统控制
凭证外渗
read + message 跨 20+ 渠道外发敏感文件
超级广播攻击
message 工具统一发送给所有渠道联系人/群组
文件系统任意读写
workspaceOnly=false → 超出工作区操作宿主文件
LLM 上下文持久污染
SOUL/USER/MEMORY 篡改 → 影响所有后续会话
会话劫持
allowRequestSessionKey → session key 外渗
v2026.4.21 安全修复(已缓解项)
修复项状态
enforceOwnerForCommands 绕过 (#69774)✅ 已修复
MINIMAX_API_HOST 工作区 env 注入✅ 已修复
OPENCLAW_* 密钥被不受信任 .env 植入✅ 已修复
gateway 工具配置变异(沙箱/plugin trust/TLS/SSRF policy)✅ 已修复(保护范围扩展)
WebSocket broadcast scope-gating✅ 已修复
SSRF guard QQBot 直传 URL✅ 已修复