albertdobmeyer/openclaw-vault
GitHub: albertdobmeyer/openclaw-vault
OpenClaw-Vault 是一个加固容器封装方案,通过代理侧密钥注入与网络隔离,解决本地运行大模型代理时的密钥泄露与供应链风险。
Stars: 1 | Forks: 0
# OpenClaw-Vault
[](LICENSE)
你已决定运行 [OpenClaw](https://github.com/anthropics/openclaw)。这会让你的决定不太可能毁掉你的一天。
**作者**: [@albertdobmeyer](https://github.com/albertdobmeyer)
**核心特性**: 你的 API 密钥保持在容器外部。一个代理 sidecar 在网络层注入它到出站请求。即使容器被完全 compromise,`env | grep API` 也返回空。没有其他加固指南能做到这一点。
### 什么是 OpenClaw?
三个名称,三个层次,一个生态系统:
- **OpenClaw** 是代理运行时——一个开源的自治 AI 助手,运行在你的机器上。它拥有工具、记忆,并能代表你采取行动。你安装它、配置它,并指向一个 LLM 提供商。此前曾叫 Clawdbot,后来短暂叫 Moltbot,现在是 OpenClaw——都在几天内。旧教程会混用这三个名称。
- **ClawHub** 是技能注册表——一个人们发布插件(“技能”)的包索引,为 OpenClaw 提供新能力。可以把它看作 agent 动作的 npm。在 ClawHavoc 事件中,11.9% 的已发布技能是恶意软件,传播了 Atomic Stealer。因此金库默认屏蔽 ClawHub。
- **Moltbook** 是代理社交网络——一个 AI 代理发布、关注、评论和互动的平台。你不会在本地运行 Moltbook;你的 OpenClaw 代理通过 API 连接到它。可以把它看作机器人的 Twitter。
这些层次叠加:ClawHub 提供能力 → OpenClaw 运行代理 → Moltbook 连接代理彼此。命名令人困惑,因为整个生态系统在一周内从零变成热点,随后的快速重命名在各类教程和博客中留下了术语混乱。
**金库的作用**:它将 OpenClaw 运行时封装在一个加固容器中,这样你就可以尝试这一切——运行 Moltbook 代理、测试技能、观察生态系统——而无需将未经验证的自治进程的 API 密钥、文件或无限制网络访问权限交给你。
```
HOST (your machine)
│
│ no shared credentials ── no host mounts ── no Docker socket
│
├── Hardened Container (Podman or Docker)
│ read-only root · ALL caps dropped · custom seccomp
│ no-new-privileges · 4GB RAM · 256 PIDs · non-root user
│ ↓ (internal network only — no default gateway)
│
├── Network Proxy (mitmproxy sidecar)
│ API key injection · domain allowlist · exfiltration alerts
│ request/response logging (JSON on host) · custom seccomp
│
└── Kill Switch
--soft (stop, preserve) --hard (nuke containers) --nuclear (destroy VM)
```
`)。请求会返回 404,但 GitHub 服务器会记录路径。如果不需要此域名,请在允许列表中注释掉。
**即使在容器内,`npm install` 也是供应链风险。** 注册表域名 `registry.npmjs.org` 默认在允许列表中被注释掉。如果取消注释,npm 包在安装时可能通过生命周期脚本(`preinstall`、`postinstall`)执行任意代码,而 Node.js 的 `require()` 会加载并执行 JavaScript,无论 noexec 挂载标志如何(noexec 仅阻止 ELF 二进制文件,不阻止解释代码)。恶意 npm 包因此可能在容器内安装时运行代码。容器的其他限制(无网络(除允许域名外)、无主机挂载、无能力)限制了爆炸半径,但这确实是一个真实缺口。**只安装你已审查的 npm 包。**
**容器 kill 并不保证完全清理。** 当你运行 `kill.sh --hard` 时,容器、卷和网络被销毁。代理的工作空间随之消失。但容器运行时在主机上存储的层缓存和镜像元数据仍然存在(这些不包含你的 API 密钥,因为代理侧注入确保了这一点),可能包含会话日志或代理活动元数据。为了彻底清理 OpenClaw-Vault 使用完毕后的所有内容,还需删除克隆的仓库目录并清理容器运行时:`man system prune -a` 或 `docker system prune -a`。
## 项目结构
```
openclaw-vault/
├── Containerfile # Hardened image (multi-stage, stripped)
├── compose.yml # Container + proxy orchestration
├── Makefile # 17 make targets (setup, verify, test, tools-status, etc.)
├── component.yml # Lobster-TrApp manifest contract
├── config/
│ ├── tool-manifest.yml # Source of truth — all 26 tools, risk levels, injection vectors
│ ├── openclaw-hardening.json5 # Active agent config (baked into image)
│ ├── hard-shell.json5 # Hard Shell preset config
│ ├── split-shell.json5 # Split Shell preset config
│ ├── soft-shell.json5 # Soft Shell preset config (the safari)
│ ├── hard-shell-allowlist.txt # Hard Shell domain template
│ ├── vault-seccomp.json # Custom syscall filter (vault container)
│ └── vault-proxy-seccomp.json # Custom syscall filter (proxy container)
├── docs/
│ ├── openclaw-reference.md # How OpenClaw works — tools, config, Telegram, sessions
│ ├── openclaw-internals.md # Source code analysis (verified from dist/ bundles)
│ ├── roadmap.md # Phased development plan (all 5 phases complete)
│ ├── setup-guide.md # Non-technical user setup guide
│ ├── definitions.md # OpenClaw ecosystem terminology
│ ├── phase1-findings.md # Phase 1 compatibility test results
│ ├── research/ # Official docs research notes
│ └── specs/ # Feature specs (tool control, skill installation, etc.)
├── proxy/
│ ├── vault-proxy.py # Key injection + domain allowlist + request logging
│ └── allowlist.txt # Active domain allowlist (managed by tool-control)
├── scripts/
│ ├── tool-control.sh # Per-tool whitelisting/blacklisting
│ ├── tool-control-core.py # Config generator core (python3)
│ ├── verify.sh # 24-point security verification
│ ├── vault-audit.sh # Workspace audit (files, memory, network, tools, injection)
│ ├── read-chat.sh # Read Telegram conversation from transcripts
│ ├── install-skill.sh # Install forge-vetted skills into workspace
│ ├── run-tests.sh # Test runner (13 test scripts)
│ ├── log-rotate.sh # Proxy log rotation + transcript size monitoring
│ ├── setup.sh / setup.ps1 # One-command setup
│ ├── kill.sh / kill.ps1 # Three-level kill switch
│ ├── entrypoint.sh # Container startup (config + CA cert + auth)
│ └── switch-shell.sh # DEPRECATED — use tool-control.sh
├── monitoring/
│ ├── network-log-parser.py # Proxy log anomaly detection
│ └── session-report.py # Post-session activity summary
├── tests/ # 13 test scripts (12 non-destructive + 1 kill-switch)
│ ├── test-tool-control.sh # 47 tests for config generation + security enforcement
│ ├── test-config-integrity.sh # Running config verification
│ ├── test-network-isolation.sh # Proxy and direct access tests
│ └── ... # Capability, escape, filesystem, key, seccomp, etc.
└── phase2-vm-isolation/ # [Planned] WSL2/Hyper-V isolation layer
```
## 背景
这始于安全研究,而非容器项目。理解 OpenClaw 的架构、映射其威胁景观,并记录使其在未隔离状态下运行危险的事件——这些研究指导了设计。
配套研究仓库完整记录了这段旅程:
- [openclaw-research](https://github.com/albertdobmeyer/openclaw-research) — 安全分析、威胁建模、生态系统探索以及 24 个已发布的 ClawHub 技能
OpenClaw-Vault 是从理解问题空间中产生的基础设施。
## 免责声明
## 许可证
MIT。安全工具,而非安全保证。
标签:AI 代理, API key protection, ClawHub, container hardening, Cutter, env security, Hardened container, JSONLines, Linux 容器, Moltbook, OpenClaw, Sidecar proxy, Web截图, 代理网关, 威胁情报, 安全合规, 安全强化, 安全架构, 容器安全, 密钥外置, 密钥注入, 开发者工具, 网络代理, 网络安全, 网络隔离, 请求拦截, 进程隔离, 逆向工具, 隐私保护, 零信任