siyad01/agentbox

GitHub: siyad01/agentbox

AgentBox 是一个面向 AI 智能体的开源沙箱运行时,通过 gVisor 内核级隔离、加密凭证库和不可变审计日志,从根本上解决 AI 智能体运行时的安全隔离与行为可控性问题。

Stars: 0 | Forks: 0

# 🛡️ AgentBox **面向 AI 智能体的开源沙箱运行时** *充满自信地运行 AI 智能体。每个智能体都拥有其独立的权限范围、凭证库、审计日志和紧急停止开关。* [![构建](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/b5f71e0a2b173550.svg)](https://github.com/siyad01/agentbox/actions/workflows/build.yml) [![许可证:Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) [![Go 版本](https://img.shields.io/badge/Go-1.26-00ADD8?logo=go)](go.mod) [![测试](https://img.shields.io/badge/Tests-27%20passing-22c55e)](internal/) [![平台](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-0ea5e9)](#download)
## AgentBox 存在的意义 在 2026 年 1 月 27 日,**CVE-2026-25253** 成为有史以来第一个被分配给自主 AI 系统的 CVE(通用漏洞披露)。OpenClaw 中的一个严重 WebSocket 劫持漏洞实现了针对任何暴露实例的一键式远程代码执行——包括那些仅绑定到 localhost 的实例。 在同一周,**ClawHavoc 攻击活动**将 341 个以上的恶意技能潜入到 OpenClaw 的市场中。从 ClawHub 安装的每个技能都拥有与 OpenClaw 本身相同的权限——完整的磁盘访问权限、OAuth token、API 密钥。没有沙箱。没有审计日志。没有紧急停止开关。 **这些数字:** - 仅在 2026 年,OpenClaw 就有 138 个以上的 CVE - 遍布 82 个国家的 135,000 多个暴露实例 - 341 个被确认的恶意技能(占整个注册表的 12%) - 150 万个智能体 API token 以明文形式暴露 - Microsoft:*“在标准的个人或企业机器上运行它是不合适的。”* AgentBox 是从结构层面解决此问题的方案。不是一个补丁——而是一个运行时。 ## AgentBox 的作用 你运行的每个智能体都会获得: | 保护措施 | 实现方式 | |-----------|-----| | **零信任权限** | 智能体准确声明它们需要什么。其他一切均不可访问。 | | **内核级隔离** | gVisor 拦截每一次 syscall。Prompt 注入无法跨越此边界。 | | **凭证库** | AES-256-GCM 加密。智能体永远看不到原始机密——只能看到限定范围的 token。 | | **不可变审计日志** | SHA-256 哈希链。记录每一个操作。防篡改。 | | **紧急停止开关** | 在 100 毫秒内终止任何智能体。超出限制时自动终止。 | | **资源限制** | 时间、内存、请求计数——在运行时强制执行,而非在配置中。 | ``` Before AgentBox After AgentBox ───────────────── ────────────── Agent → full disk ❌ Agent → allowed paths only ✅ Agent → all network ❌ Agent → allowed hosts only ✅ Agent → raw secrets ❌ Agent → scoped tokens ✅ No audit trail ❌ Every action logged ✅ No kill switch ❌ Kill in <100ms ✅ Skills run as root ❌ Kernel-isolated sandbox ✅ ``` ## 快速开始 ``` # 安装 go install github.com/siyad01/agentbox/cmd/agentbox@latest # 运行前验证 manifest agentbox validate manifests/email-sorter.yaml # 在沙箱中运行 agent agentbox run --manifest manifests/email-sorter.yaml python agent.py # 查看 agent 的操作 agentbox audit --log logs/email-sorter-audit.log # 验证日志未被篡改 agentbox verify logs/email-sorter-audit.log # 管理 secrets agentbox vault add ANTHROPIC_API_KEY agentbox vault list ``` ## 清单(Manifest) 每个智能体会准确声明它需要什么。**未列出的内容均不可访问。** ``` name: "email-sorter" version: "1.0.0" description: "Reads inbox, categorizes emails, writes to sorted folder" runtime: docker # or: gvisor (kernel-level), firecracker (MicroVM) permissions: filesystem: read: - "~/Documents/inbox" write: - "~/Documents/sorted" deny: # ALWAYS blocked — even if in read list - "~/.ssh" - "~/.aws" - "~/.config" - "/etc" network: allow: - "api.anthropic.com" - "gmail.googleapis.com" deny: - "*" # block everything else tools: allow: - "read_file" - "write_file" - "list_*" deny: - "execute_shell" # no shell access, ever - "*_delete" # no deletion tools credentials: - ANTHROPIC_API_KEY # injected from vault at runtime - GMAIL_TOKEN # agent never sees the raw value limits: max_tokens: 50000 # LLM token budget max_duration: "30m" # killed after 30 minutes max_memory_mb: 256 # RAM ceiling max_requests: 500 # max tool invocations audit: log_level: full alert_on: - filesystem_deny - network_deny - token_budget_80pct log_path: "logs/email-sorter-audit.log" ``` ## 工作原理 ``` agentbox run --manifest agent.yaml python agent.py │ ▼ ┌─────────────────────────────────────────────────────┐ │ Policy Engine │ │ Parses manifest → builds allow/deny lists │ │ Validates signatures → rejects unsigned skills │ │ Injects credentials from vault │ └──────────────────────┬──────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────┐ │ Isolation Layer │ │ │ │ Docker → container + seccomp + cap-drop │ │ gVisor → user-space kernel, syscall interception │ │ Firecracker → dedicated MicroVM kernel per agent │ │ │ │ Filesystem: only declared paths mounted │ │ Network: only declared hosts reachable │ │ Capabilities: ALL dropped, none added back │ └──────────────────────┬──────────────────────────────┘ │ ┌────────────┼────────────┐ ▼ ▼ ▼ Audit Logger Credential Resource (hash-chain) Vault Monitor every action AES-256-GCM auto-kill logged scoped tokens on limit ``` ### gVisor 为何能阻止 Prompt 注入 所有其他沙箱都停留在容器边界。利用内核漏洞的智能体可以逃逸。 gVisor 在**每一个 syscall 到达宿主机内核之前**对其进行拦截: ``` Agent tries: write("/home/user/.ssh/id_rsa") │ ▼ gVisor user-space kernel │ Path in deny list? → YES │ ▼ EPERM returned immediately Host kernel never sees this syscall Prompt injection cannot cross this layer ``` ## CLI 参考 ``` agentbox [options] Commands: run Run an agent in a sandbox validate Validate a manifest file kill Terminate a running agent audit View agent audit logs verify Verify audit log integrity vault Manage encrypted credentials serve Start the REST API server version Show version Examples: agentbox validate manifests/email-sorter.yaml agentbox run --manifest manifests/email-sorter.yaml python agent.py agentbox kill agent-abc123 agentbox audit --log logs/email-sorter.log --deny agentbox audit --log logs/email-sorter.log --last 1h agentbox verify logs/email-sorter.log agentbox vault add ANTHROPIC_API_KEY agentbox vault list agentbox vault delete OLD_KEY agentbox serve :8081 ``` ## REST API 使用 `agentbox serve` 启动(默认:`:8081`)。 | 方法 | Endpoint | 描述 | |--------|----------|-------------| | GET | `/health` | 健康检查 | | GET | `/dashboard` | Web 仪表板 | | GET | `/api/agents` | 列出所有智能体 | | POST | `/api/agents` | 启动新的智能体 | | DELETE | `/api/agents/:id` | 终止智能体 | | GET | `/api/audit` | 查询审计日志 | ``` # 列出正在运行的 agent curl http://localhost:8081/api/agents # 启动一个 agent curl -X POST http://localhost:8081/api/agents \ -H "Content-Type: application/json" \ -d '{"manifest":"manifests/email-sorter.yaml","command":["python","agent.py"]}' # 终止一个 agent curl -X DELETE http://localhost:8081/api/agents/abc123 # 查询审计日志 curl "http://localhost:8081/api/audit?deny=true&agent=email-sorter" ``` ## 审计日志 每个智能体操作都会被记录在一个仅追加的、哈希链式的 JSON Lines 文件中: ``` {"id":1,"hash":"a3f2...","prev_hash":"genesis","timestamp":"2026-05-05T09:00:00Z","agent_id":"abc123","agent_name":"email-sorter","event_type":"agent_start","allowed":true,"resource":"manifests/email-sorter.yaml"} {"id":2,"hash":"b7c1...","prev_hash":"a3f2...","timestamp":"2026-05-05T09:00:01Z","agent_id":"abc123","agent_name":"email-sorter","event_type":"filesystem_allow","allowed":true,"resource":"read:/home/user/Documents/inbox/mail.txt","rule":"filesystem.read: ~/Documents/inbox"} {"id":3,"hash":"d9e4...","prev_hash":"b7c1...","timestamp":"2026-05-05T09:00:01Z","agent_id":"abc123","agent_name":"email-sorter","event_type":"filesystem_deny","allowed":false,"resource":"read:/home/user/.ssh/id_rsa","rule":"filesystem.deny: ~/.ssh","reason":"path is explicitly denied"} ``` **篡改检测:** ``` agentbox verify logs/email-sorter-audit.log ✅ Audit log is intact Entries: 47 (IDs 1–47) Hash chain: unbroken ``` 更改任何条目中的任何字符,验证都会立即失败——链条被破坏。 ## 凭证库 ``` # 存储一个 secret (绝不记录日志,绝不在环境变量中以明文形式存在) agentbox vault add ANTHROPIC_API_KEY # 列出已存储的 credential 名称 (值永远不可见) agentbox vault list # 验证 credential 是否可被解密 agentbox vault test ANTHROPIC_API_KEY # 轮换一个 credential agentbox vault add ANTHROPIC_API_KEY # add updates existing ``` 凭证使用 AES-256-GCM 进行加密。主密钥由你的库密码派生——从不存储在磁盘上。在智能体启动时,AgentBox 将凭证作为限定范围的变量注入到环境中。智能体像往常一样调用 `os.getenv("ANTHROPIC_API_KEY")`——它从不接触凭证库。 ## 资源限制 AgentBox 会终止超出其声明限制的智能体: ``` # 此 agent 配置为 max_duration: 5s agentbox run --manifest manifests/timeout-test.yaml python long_running_agent.py Agent started tick 1 tick 2 tick 3 tick 4 tick 5 🛑 Killing agent timeout-test: duration limit exceeded: 5s ⚠️ Agent timeout-test exited code 137 in 5.2s ``` 退出码 137 = SIGKILL。干净关闭,并写入最终的审计条目。 ## 从源码构建 ``` # 克隆 git clone https://github.com/siyad01/agentbox cd agentbox # 构建 go build -o agentbox ./cmd/agentbox/ # 运行测试 (27 个测试,全部通过) go test ./... # 全局安装 go install ./cmd/agentbox/ ``` **要求:** - Go 1.26+ - Docker(用于 Docker 和 gVisor 后端) - Linux 内核 5.15+(用于 gVisor——自动检测,回退至 Docker) ## 项目结构 ``` agentbox/ ├── cmd/agentbox/main.go ← CLI entry point ├── internal/ │ ├── policy/ │ │ ├── manifest.go ← YAML manifest schema │ │ ├── parser.go ← validation + defaults │ │ └── engine.go ← deny-first decision engine (20 tests) │ ├── audit/ │ │ ├── logger.go ← append-only SHA-256 hash-chained log │ │ ├── verifier.go ← tamper detection │ │ └── reader.go ← query + filter │ ├── vault/ │ │ ├── store.go ← AES-256-GCM encrypted credential store │ │ └── injector.go ← runtime injection (7 tests) │ ├── sandbox/ │ │ ├── sandbox.go ← Sandbox interface │ │ ├── docker.go ← Docker backend │ │ ├── gvisor.go ← gVisor backend (kernel-level) │ │ ├── manager.go ← agent lifecycle management │ │ └── util.go ← WSL2 detection, path helpers │ ├── monitor/ │ │ └── enforcer.go ← resource limits + auto-kill │ └── api/ │ └── server.go ← REST API on :8081 └── manifests/ ├── email-sorter.yaml ← production example └── timeout-test.yaml ← limit enforcement example ``` ## 安全模型 **默认拒绝优先。** 智能体以零权限启动。每一项能力都必须被明确声明。 **拒绝列表始终优先。** 即使一个路径同时出现在读取列表和拒绝列表中,拒绝列表也拥有优先权。没有例外。 **基于 gVisor 的内核级强制执行。** Seccomp 过滤器和 capability dropping 在 syscall 边界运行。模型输出——这是攻击者可控制的——在用户空间中运行,无法修改内核级策略。 **凭证隔离。** 凭证库主密钥从不存储在磁盘上。凭证在沙箱启动时作为短期的限定范围 token 注入,并在退出时被丢弃。智能体进程的泄露不会导致凭证库的泄露。 **不可变审计日志。** SHA-256 哈希链意味着可以检测到追溯性的日志修改。对任何条目的任何更改都会破坏从该点开始的链条。 有关漏洞报告,请参阅 [SECURITY.md](SECURITY.md)。 ## 对比 | 功能 | AgentBox | OpenClaw sandbox | 仅 Docker | AccuKnox | |---------|----------|-----------------|-------------|----------| | 开源 (Apache 2.0) | ✅ | ✅ | ✅ | ❌ | | 可自主托管 | ✅ | ✅ | ✅ | 仅限 K8s | | gVisor / 内核隔离 | ✅ | ❌ | ❌ | ✅ | | 凭证库 | ✅ | ❌ | ❌ | ✅ | | 不可变审计日志 | ✅ | ❌ | ❌ | ✅ | | 超限自动终止 | ✅ | ❌ | ❌ | ✅ | | 框架无关 | ✅ | ❌(仅限 OpenClaw) | ✅ | ✅ | | 单二进制文件部署 | ✅ | ❌ | ✅ | ❌ | ## 路线图 - [ ] Firecracker MicroVM 后端(每个智能体专用 Linux 内核) - [ ] eBPF syscall 监控(实时行为分析) - [ ] OPA/Rego 策略即代码(Git 中的复杂规则集) - [ ] Prometheus metrics endpoint - [ ] AgentBox Cloud(托管托管服务,符合 SOC2 标准) - [ ] Manifest 签名(Ed25519,来源验证) - [ ] DLP(数据防泄漏——扫描智能体输出中的 PII) ## 许可证 Apache 2.0——可免费使用、修改和分发。详见 [LICENSE](LICENSE)。
基于 Go 构建 · 核心安全功能零外部依赖 · 一条命令即可实现自托管 **如果 CVE-2026-25253 让你感到担忧,这就是解决方案。请给它一个 ⭐**
标签:AI Agent安全, AI基础设施, API安全, CISA项目, CVE-2026-25253, Docker, EVTX分析, Go语言, gVisor, IP 地址批量处理, JSON输出, WebSocket劫持防护, 代理运行时, 代码分析, 内核级隔离, 凭证管理, 安全沙箱, 安全防御评估, 审计日志, 日志审计, 权限控制, 沙箱运行时, 程序破解, 终止开关, 请求拦截, 远程代码执行防护, 隔离运行环境, 零信任架构