你的 AI agent 是一个滴答作响的定时炸弹。以下是如何拆除它。
Source: Dev.to
请提供您希望翻译的具体文本内容,我将在保持原有格式、Markdown 语法和技术术语不变的前提下,将其翻译成简体中文。
AI 代理实际上能做什么
现代 AI 编码代理不仅仅是写代码。它们可以运行 shell 命令、读取文件、发起网络请求,并写入你的文件系统——实际上拥有与你相同的权限。
- 读取
.env文件 - 对它们能访问的任何内容执行
rm -rf - 使用
curl将数据发送到外部服务器 - 写入
/etc/passwd、.ssh/authorized_keys或其他任何敏感路径
这些并非理论上的威胁;它们是实际代理在正常运行中进行的工具调用——常常是意外触发,有时是因为不良提示导致的。
促发此事的惊险一幕
我在使用 OpenClaw 重构一些 API 路由时,途中它读取了我的 .env 文件。它并不是恶意的——可能只是想在代码中查找环境变量名——但它本不该触碰凭证。我是在检查日志后才发现的。
这让我思考:**AI 代理工具调用根本没有相当于防火墙的机制。**没有办法说“你可以写代码,但不能触碰凭证”。也没有办法强制执行——只能靠感觉和运气。
ClawWall
ClawWall 是一个用于 AI 代理的策略防火墙。它在每个工具调用执行之前进行拦截,并决定 允许、拒绝 或 暂停并询问 您。
npm install -g clawwall
clawwall start
CLAWWALL_ENABLED=true openclaw
工作原理
ClawWall 与 OpenClaw 的 before-tool-call 钩子集成。代理想要执行的每一个操作——写文件、运行命令、浏览 URL——都会先经过 ClawWall 的策略引擎。
Agent → before-tool-call hook → POST /policy/check → ClawWall daemon
↓
allow (ms) ← Rule Engine → deny (ms)
↓
ask → Dashboard
- ALLOW 与 DENY 决策在亚毫秒级完成,几乎不增加延迟。
- ASK 决策会暂停代理,并在仪表盘中显示,您可以点击 Allow(允许)或 Deny(拒绝)。此时代理会等待。
六条规则,默认激活
无需配置;这些在安装时即生效。
| 规则 | 决策 | 捕获内容 |
|---|---|---|
dangerous_command | DENY | rm -rf, mkfs, shutdown, dd |
credential_read | DENY | .env, .aws/credentials, id_rsa |
exfiltration | DENY | curl -d, wget --post, nc -e |
sensitive_write | DENY | .env, .ssh/, /etc/passwd |
outside_workspace | DENY | 项目目录之外的路径 |
internal_network | ASK | localhost, 127.x, 192.168.x |
硬阻断规则不可覆盖;代理无法绕过它们,无论提示如何。
仪表板的外观
ALLOW 847
DENY 12
ASK 3
LIVE FEED
09:41:03 ✓ write src/api/routes.ts allow
09:41:05 ✗ read .env deny credential_read
09:41:07 ✓ exec npm test allow
09:41:09 ✗ exec rm -rf /tmp/build deny dangerous_command
09:41:11 ? browse localhost:5173 ask internal_network
为什么不直接信任代理?
现代模型相当不错,但“总体上小心”并不是一种安全姿态。
- 提示注入:文件中出现的恶意字符串可能会重定向代理的行为。
- 模型漂移:今天表现谨慎的模型在版本更新后可能表现不同。
- 边缘情况:在冗长、复杂的会话中,代理可能会做出意想不到的事情。
- 最小特权:你不会仅因为新员工看起来可信就给他们 root 权限。
重点不在于 AI 代理是恶意的;而在于它们强大且以机器速度运行。没有防火墙,你就是在赌它们的工具调用永远不会出错。
开始使用
npm install -g clawwall
clawwall start
CLAWWALL_ENABLED=true openclaw
或使用 curl:
curl -fsSL https://clawwall.dev/install.sh | bash
你见过 AI 代理尝试做的最可疑的事情是什么?在评论中告诉我们吧。