BakeLens/crust
🌟 Open Source AI Agent Security Infrastructure — intercepts and blocks dangerous agent behaviors before they happen. Just one command! Join us to build safer Human-AI Symbiosis!
Crust – AI代理的本地安全网关
是什么 – Crust 是一个开源、本地运行的代理,位于 AI 驱动的编码助手(或任何 LLM 支持的工具)与 LLM 提供商之间。它监控代理执行的每一次工具调用(文件读取、shell 命令、网络请求等),并阻止可能泄露密钥或损害主机的操作。
为何重要 – 现代 AI 代理与开发者的代码和凭证运行在同一台机器上。如果模型被欺骗(提示注入、恶意输出等),它可能会尝试读取 .env 文件、SSH 密钥、浏览器 Cookie,甚至执行危险的 shell 命令。Crust 在这些调用到达操作系统之前进行拦截,确保用户数据保留在设备上,且无需修改代理代码。
工作原理
| 入口点 | 命令 | 保护内容 |
|---|---|---|
| HTTP 代理 | crust start |
作为任何 OpenAI 兼容 API 的正向代理。扫描请求负载(对话历史)和响应(工具调用)中的密钥、危险命令、路径遍历等。 |
| MCP stdio 网关 | crust wrap -- <cmd> |
包装 Model Context Protocol (MCP) 服务器,拦截 tools/call 和 resources/read 消息。 |
| MCP HTTP 网关 | crust wrap -- <cmd> |
流式 HTTP MCP 服务器的反向代理。 |
| ACP stdio 代理 | crust wrap -- <cmd> |
包装 Agent Client Protocol (ACP) 代理(如 JetBrains AI、VS Code 扩展),并阻止文件系统或终端操作。 |
| 自动检测 | crust wrap -- <cmd> |
检测子进程是否使用 MCP 或 ACP,并应用相应过滤器。 |
所有入口点共享一个 17 步评估流水线,在微秒内完成:
- 自我保护(防止代理禁用 Crust)
- 输入净化
- Unicode 正则化
- 混淆检测
- DLP 密钥扫描
- 路径正则化
- 符号链接解析
- 规则匹配(42 个内置规则,51 个 DLP 模式) 9–17. 其他检查(大小限制、TLS 强制、日志记录等)
每个决策都会记录到加密的本地存储中,日志本身也由 OS 密钥环保护。
快速开始(桌面)
# macOS / Linux / BSD
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/BakeLens/crust/main/install.sh)"
# Windows (PowerShell)
irm https://raw.githubusercontent.com/BakeLens/crust/main/install.ps1 | iex
# Docker(可选)
docker compose up -d # 或手动构建/运行
然后启动代理:
crust start # 默认监听 0.0.0.0:9090
crust status # 验证是否正在运行
网关会根据模型名称自动检测 LLM 提供商,因此您可以保留现有的 API 密钥不变。
连接代理(示例)
将代理的基 URL 设置为 http://localhost:9090/v1(某些客户端可直接使用 http://localhost:9090)。README 列出了数十种支持的工具——Claude Code、OpenAI Codex CLI、Cursor、JetBrains AI、Continue、Aider 等。对于任何 OpenAI 兼容客户端,相同的环境变量均适用:
export OPENAI_BASE_URL=http://localhost:9090/v1 # 或 ANTHROPIC_BASE_URL 等
Crust 将转发请求,应用其规则引擎,并仅允许安全的工具调用到达提供方。
移动端 / iOS 集成
Crust 随附 Swift 包 CrustKit,可嵌入 iOS 15+ 应用。提供三种集成方式:
- 本地反向代理 – 在设备上运行小型 HTTP 代理,并将 AI SDK 指向它。
- URLProtocol – 注册
CrustURLProtocol,使任何URLSession自动通过引擎(零配置)。 - 直接评估 – 调用
engine.evaluateAsync(...)进行手动检查。 相同的规则集(包括 7 个移动端专用锁定规则)保护联系人、照片、钥匙串、剪贴板读取、危险 URL 方案、蓝牙/NFC、生物识别 API 和应用内购买。
内置保护规则
- 42 个安全规则(39 个锁定,3 个用户可禁用):涵盖凭证、系统认证文件、shell 历史、浏览器数据、包注册表令牌、Git 凭证、持久化机制、移动端 PII、钥匙串、剪贴板、URL 方案、硬件访问、加密钱包等。
- 51 个 DLP 模式:可识别真实 API 密钥、令牌、PEM 私钥、BIP-39 词典等。
- 规则以纯 YAML(
security.yaml)和 Go 代码定义,便于审计或扩展。 - 项目声称已通过 84 个真实世界 CVE 的验证,影响流行的 AI 助手(Cursor、GitHub Copilot、Claude Code、OpenAI Codex 等)。
自定义规则与插件
- 自定义规则 – 添加 YAML 文件:
crust add-rule my-rules.yaml。支持热重载,更改立即生效。 - 插件 – 可选的后期过滤器,在隔离进程中运行。通过换行分隔的 JSON 通信,可用任意语言编写,且具备电路断路器机制,三次失败后自动禁用异常插件。
- Python 示例插件展示了如何在允许文件访问前强制执行项目目录沙箱。
Crust 自身的安全姿态
- 仅监听本地回环地址;无外部网络暴露。
- 代理无法禁用或重新配置网关(硬编码预过滤)。
- 密钥和日志存储在 OS 密钥环和加密 SQLite 数据库中。
- 所有与 LLM 提供商的通信均使用 TLS 1.2+。
- CI 每次提交均运行 gosec、semgrep、模糊测试(46 个目标)、govulncheck 和 gitleaks。
参与方式
- 使用 Go 1.26+ 从源码构建(
go build .)。 - 通过拉取请求贡献新安全规则或插件。
- 通过 GitHub 问题追踪器或
SECURITY.md中描述的私密披露流程报告漏洞或安全问题。
许可证
Crust 采用 Elastic License 2.0 发布,允许使用、修改和分发,但禁止作为竞争服务提供。
总结 – Crust 为开发者提供了一个即插即用、本地运行的防护盾,可阻止 AI 代理意外(或恶意)泄露密钥、执行破坏性命令或访问特权资源,且无需修改代理代码。
相关
- 项目
- 项目
- 项目
- 项目
- 项目