WorkBuddy 伙伴 Agent 上线审计清单:权限与出口流量管控要点

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转义执行任意命令 |
| 系统调用 | 拦截 ptrace、mount 等危险调用 |
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部署方案) - 合规性证明文档模板 - 应急响应手册 - 第三方审计报告模板
更多推荐




所有评论(0)