安全架构

设计原则:默认安全,按需增强。遵循 VS Code 工作区信任模型:将操作限制在本地,升级能力时明确提示,由用户在理解风险后解锁。


理念

AcaClaw 面向非安全专家的科研用户。安全模型应满足:

  1. 安全时无感 — 标准本地使用应顺畅
  2. 升级时醒目 — 任何扩大攻击面的操作必须有可见提示
  3. 默认关闭危险能力 — 危险能力默认禁用,需主动开启
  4. 分层而非二元 — 安全是一组可独立调节的控制
  5. 对齐 VS Code — 工作区信任模型成熟且足够

安全的两个维度

维度 保护对象 示例
数据安全 文件、科研数据、实验结果 误删、覆盖、损坏
信息安全 凭据、API 密钥、个人信息、科研 IP 凭据泄露、数据外泄、会话劫持

安全层级

AcaClaw 提供三个层级,从便利到隔离递增:层级 1 本地工作区(默认) 在内;层级 2 远程访问 在中间(可选);层级 3 Docker 沙箱 在外(可选)。

各层级概要

层级 缓解的威胁 主要机制 残余风险
层级 1(本地) 18/26 工作区限制、黑名单、域名白名单、凭据脱敏 命令注入、符号链接边界、无进程隔离
层级 2(远程) 20/26 层级 1 + TLS、令牌、受限日志查看 授权提升、Webhook 认证
层级 3(Docker) 25/26 容器隔离、network=none、降权、只读 rootfs 部分内核上 Docker no-new-privileges 兼容性

层级 1 — 本地工作区(默认)

所有操作限制在本地工作区。不暴露网络。不需要 Docker。

已实施的管控

管控 机制
工作区限制 tools.fs.workspaceOnly: true
工具黑名单 tools.deny(gateway、cron、sessions_spawn 等)
命令黑名单 15 类危险模式(rm -rf、chmod 777、curl 管道 sh 等)
网络白名单 出站限制在学术相关域名
修改前备份 每个会改文件的工具先触发备份
凭据脱敏 从 LLM 输出中剥离 12 类模式
注入检测 8 类提示注入模式被标记
审计日志 每次工具调用写入 ~/.acaclaw/audit/
仅 loopback 绑定 网关绑定 127.0.0.1

何时层级 1 足够

写论文、分析个人数据、管理引用;学生作业;文献检索;数据可信且仅本人操作的流程。


层级 2 — 远程访问(可选)

将网关暴露在 127.0.0.1 之外视为显著安全升级。

启用远程访问

展示安全说明、明确确认、写入审计、非 loopback 强制 TLS、必须认证令牌。

绑定模式

模式 绑定到 风险 建议场景
loopback(默认) 127.0.0.1 标准本地
tailnet Tailscale IP 自有设备
lan 0.0.0.0 可信局域网
custom 用户指定 高级用户

层级 3 — Docker 沙箱(可选)

所有工具执行在容器中隔离。

Docker 加固要点

丢弃能力、只读 root、network: none、Seccomp、非 root、仅挂载工作区、随会话销毁容器。


防护层

工具调用顺序:AcaClaw 策略层(备份、安全策略、审计)→ OpenClaw 工具策略执行层(标准:宿主机仅工作区;最高:Docker)。

凭据脱敏

剥离 OpenAI 密钥、GitHub PAT、AWS 密钥、JWT、PEM 等共 12 类模式。

提示注入检测

8 类模式被标记告警而非硬拦,减少误伤学术讨论。


网络策略

出站请求对照学术域名白名单(arXiv、Semantic Scholar、NCBI、CrossRef、npm、PyPI、GitHub 等)。可通过 plugins.acaclaw-security.customAllowedDomains 添加域名。


审计与日志

记录 tool_calltool_blockedcredential_scrubbedinjection_warningnetwork_blocked 等元数据;不记录消息全文、文件内容、凭据值。日志在 ~/.acaclaw/audit/,默认保留 90 天。


与 OpenClaw 上游对比

控制项 OpenClaw 默认 AcaClaw 标准 AcaClaw 最高
workspaceOnly false true true
工具/命令黑名单
网络白名单 学术域名 network: none
修改前备份 自动 自动
凭据脱敏与审计
Docker 沙箱 off off all