配图

WorkBuddy 权限与出口流量审计框架(完整版)

部署伙伴型 Agent(如 WorkBuddy)时,需在沙箱隔离基础上严格管控其网络出口(egress)与系统权限。本文基于 OpenClaw WorkBuddy v0.6.3 公开文档,给出上线前的分项审计标准与实施细则。

审计项 1:最小化权限分配

权限类型 通过标准 检查方法 典型风险场景
文件系统访问 仅允许读写 /var/claw/workbuddy/jobs/ 子目录 ls -l /proc/[PID]/fd 配置错误导致可读取/etc/shadow
网络出口 仅开放白名单域名(如 API 网关、SSE 事件流端点) iptables -L -n -v 恶意连接挖矿池
进程派生 禁止通过 fork()/exec() 创建子进程 strace -f -e process 通过shell转义执行任意命令
系统调用 拦截 ptracemount 等危险调用 seccomp-bpf 规则审计 利用内核漏洞提权
用户权限 禁止 sudo 权限,使用专用低权限账户 sudo -l -U workbuddy 通过 sudo 提权
环境变量 仅允许预设的特定环境变量 cat /proc/[PID]/environ 通过环境变量注入恶意代码

实施步骤: 1. 使用 setfacl 设置目录 ACL:

setfacl -Rm u:workbuddy:rwx /var/claw/workbuddy/jobs
setfacl -Rm default:u:workbuddy:rwx /var/claw/workbuddy/jobs
2. 通过 eBPF 监控违规行为:
SEC("tracepoint/syscalls/sys_enter_execve")
int handle_execve(struct trace_event_raw_sys_enter* ctx) {
  char comm[16];
  bpf_get_current_comm(&comm, sizeof(comm));
  if (strncmp(comm, "workbuddy", 9) == 0) {
    bpf_override_return(ctx, -EPERM);
  }
  return 0;
}
3. 创建专用用户:
useradd -r -s /sbin/nologin -d /var/claw/workbuddy workbuddy
passwd -l workbuddy

边界条件测试: - 尝试在受限目录外创建文件(预期:失败) - 尝试执行 /bin/bash(预期:被阻止) - 检查 dmesg 中是否有安全模块告警

审计项 2:出口流量(Egress)过滤

WorkBuddy 需通过 ClawBridge 网关代理出口流量,完整配置方案:

组件 配置项 参数示例 验证命令
ClawBridge 域名白名单 api.openclaw.org curl --resolve api.openclaw.org:443:127.0.0.1 https://api.openclaw.org/ping
协议限制 HTTPS/TLS1.2+ openssl s_client -connect api.openclaw.org:443 -tls1_2
IPTables 非白名单阻断 DROP iptables -L OUTPUT -n --line-numbers
日志审计 拒绝记录保存30天 journalctl -u clawbridge --since "30 days ago" grep "DENIED" /var/log/clawbridge/audit.log
流量限速 单个连接不超过 5Mbps tc qdisc add dev eth0 root tbf rate 5mbit latency 50ms burst 1540 tc -s qdisc show dev eth0
DNS 过滤 仅允许通过内部DNS解析 iptables -A OUTPUT -p udp --dport 53 -j REJECT dig +short example.com @8.8.8.8

常见问题排查: 1. 证书验证失败: - 检查 CA 证书是否包含在 /etc/ssl/certs/ca-certificates.crt - 验证证书链:openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt server.crt 2. DNS 污染: - 配置 resolv.conf 使用 8.8.8.8 并验证解析结果 - 检查 DNS 查询日志:tcpdump -i any -n port 53 3. 连接超时: - 通过 tcpping 测试端到端连通性 - 检查 MTU 设置:ip link show eth0

限速测试方法:

# 在测试服务器上启动 iperf 服务端
iperf3 -s
# 在 WorkBuddy 容器内运行
iperf3 -c test-server -t 30 -P 5
# 预期看到单个连接不超过 5Mbps

审计项 3:沙箱逃逸防护

深度防御方案对比:

防护层 开源方案 商业方案 实施成本 防护能力 兼容性
内核隔离 LXC + AppArmor gVisor ★★★★ ★★★★
能力限制 Linux Capabilities SELinux ★★★ ★★★★★
系统调用过滤 seccomp-bpf Falco ★★★★★ ★★★
内存防护 ASLR + NX Intel MPK ★★★★ ★★★★
文件系统 OverlayFS 只读层 Aqua Security ★★★★★ ★★

关键配置示例:

# 移除危险能力
setcap -r /usr/bin/workbuddy
# 启用内存保护
echo 2 > /proc/sys/kernel/randomize_va_space
# 限制CPU使用
cgcreate -g cpu:/workbuddy
echo 50000 > /sys/fs/cgroup/cpu/workbuddy/cpu.cfs_quota_us
# 设置只读文件系统
mount -t overlay overlay -o lowerdir=/lower,upperdir=/upper,workdir=/work,ro /merged

逃逸测试项目: 1. 尝试写入 /proc/self/mem(预期失败) 2. 尝试调用 unshare(CLONE_NEWUSER)(预期被 seccomp 拦截) 3. 检查是否有未过滤的危险系统调用:strace -f -e trace=all -p <PID>

回滚预案检查

应急操作清单:

故障类型 响应时间要求 操作步骤 验证方法
未授权访问 <1分钟 1. 切断网络
2. 冻结容器
3. 取证快照
检查iptables DROP规则
资源耗尽 <3分钟 1. 限制CPU
2. 隔离进程
3. 触发告警
top -p $(pgrep workbuddy)
数据泄露 <5分钟 1. 禁用账户
2. 轮换密钥
3. 审计日志
grep "SENSITIVE" /var/log/workbuddy*.log
服务不可用 <2分钟 1. 切换到备用实例
2. 回滚到上一个稳定版本
curl -I https://api.openclaw.org/health
配置错误 <5分钟 1. 应用备份配置
2. 验证功能
3. 更新配置管理系统
md5sum /etc/workbuddy.conf

预案演练计划: 1. 每月进行一次模拟攻击演练 2. 每季度测试回滚流程 3. 保留最近3个版本的备份镜像

实施案例:GitLab Runner 集成场景

CI/CD 环境特殊配置矩阵:

环境变量 处理方式 安全等级 替代方案 检测方法
CI_JOB_TOKEN 运行时擦除 高危 短期令牌+API网关 检查进程环境变量
ARTIFACT_PATH 符号链接重定向 加密存储卷 审计文件访问日志
DOCKER_AUTH 仅限内网仓库 严重 临时凭证服务 监控 registry 访问
SSH_KEY 会话级临时密钥 严重 跳板机+双因素认证 检查 ~/.ssh/目录
AWS_CREDENTIALS 即时吊销 严重 基于角色的访问控制 检查 CloudTrail 日志

分阶段上线计划: 1. 测试阶段(1-2周): - 在独立 Runner 上验证 OverlayFS 隔离 - 模拟 10 并发作业压力测试 - 测试最大文件描述符限制 2. 灰度阶段(1周): - 20% 生产流量引导至新 Agent - 监控 workbuddy_cpu_usage 指标 - 收集性能基准数据 3. 全量阶段: - 旧 Runner 下线检查清单: - 确认无遗留作业 - 迁移所有持久化数据 - 清除 ~/.ssh/known_hosts 记录 - 撤销所有关联的访问令牌

性能基准测试数据:

+-------------------+-----------+-----------+------------+
| 并发数           | 传统Runner | WorkBuddy | 差异率     |
+-------------------+-----------+-----------+------------+
| 10 jobs          | 32s       | 38s       | +18.75%    |
| 50 jobs          | 147s      | 163s      | +10.88%    |
| 网络吞吐量       | 1.2Gbps   | 850Mbps   | -29.17%    |
| 内存占用         | 320MB     | 420MB     | +31.25%    |
+-------------------+-----------+-----------+------------+

审计通过后,建议: 1. 在 staging 环境运行 72 小时压力测试 2. 检查内核日志是否有 seccomp 违规事件 3. 验证所有审计日志可被 SIEM 系统采集 4. 进行最终安全扫描: - 使用 Nessus 检查漏洞 - 运行静态代码分析 - 检查依赖项中的已知漏洞

完整配置模板见 ClawSDK 文档,包含: - 安全基线检查脚本 - 网络拓扑图(含DMZ部署方案) - 合规性证明文档模板 - 应急响应手册 - 第三方审计报告模板

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐