pantherstar/clawguard
GitHub: pantherstar/clawguard
面向 OpenClaw 代理的安全中间件,通过分级检测与链上威胁共享防御提示注入攻击。
Stars: 1 | Forks: 0
# ClawGuard
面向 OpenClaw 代理的安全中间件。防御文本、图像、PDF 和音频中的提示注入攻击。通过 Base Sepolia 将威胁情报上链共享。
为黑客松构建 — 演示可用,非生产环境。
## 架构
```
Inbound Content → Extraction → Detection Pipeline → Verdict
↓ ↓
OCR / PDF / Whisper Rules → Classifier → LLM Judge
HTML / Email parse ↓
On-chain threat cache (instant block)
↓
Base Sepolia registry (shared intel)
```
**检测流水线** 短路执行:如果正则规则足够自信(严重性 >= 0.9),则在调用分类器或 LLM 评判器之前直接拦截。ML 分类器(deepset/prompt-injections distilbert)处理规则遗漏的情况。LLM 评判器(Claude Haiku)仅在存在模糊情况时介入。
## 快速启动
```
cd clawguard
# 1. 安装依赖
make setup
# 2. 配置密钥
cp .env.example .env
# 至少填写 ANTHROPIC_API_KEY
# 3. 生成攻击固件
make fixtures
# 4. 运行演示
make demo
```
### 完整仪表板演示
```
# 终端 1: API 服务器
make api
# 终端 2: 仪表板
make dashboard
# 终端 3: 运行演示代理
make demo
# 打开 http://localhost:5175
```
## 环境变量
| 变量 | 是否必需 | 描述 |
|---|---|---|
| `ANTHROPIC_API_KEY` | 是 | 用于 LLM 评判器和视觉模型 |
| `BASE_SEPOLIA_RPC_URL` | 否 | 默认:`https://sepolia.base.org` |
| `CLAWGUARD_PRIVATE_KEY` | 否 | 用于发布到链上注册表 |
| `CLAWGUARD_REGISTRY_ADDRESS` | 否 | 已部署的 `ThreatRegistry` 地址(旧环境变量名) |
| `ALPACA_API_KEY` | 否 | Alpaca 纸面交易(仅演示) |
| `ALPACA_SECRET_KEY` | 否 | Alpaca 纸面交易(仅演示) |
演示可在无链上或 Alpaca 组件的情况下运行,这些组件会优雅降级。
## 合约部署(可选)
```
# 安装 Foundry
curl -L https://foundry.paradigm.xyz | bash && foundryup
# 部署到 Base Sepolia
make contracts
# 将部署地址复制到 .env 作为 CLAWGUARD_REGISTRY_ADDRESS
```
## 分阶段攻击
`demo/attacks/` 中包含三个攻击样本:
1. **`bloomberg_email.eml`** — 伪造的 Bloomberg 收益预警,在 HTML 注释和 `display:none` 的 `
` 中注入指令,指示代理清仓。
2. **`chart_injection.png`** — 包含几乎肉眼不可见的白底白字(“SELL ALL AAPL”)的股票图表,可通过反色 OCR 与视觉模型捕获。
3. **`earnings_report.pdf`** — 收益报告 PDF,含隐藏文本层(白字、1pt 字号)与 PDF 元数据字段中的注入。
## 检测规则
30 条正则规则,覆盖以下类别:
- 指令覆盖(“忽略之前”、“新指令”)
- 角色操纵(“你是”、“扮演”、DAN/越狱)
- 系统提示标记(``、`[INST]`、提示边界)
- 混淆(Base64 块、十六进制/Unicode 转义)
- 隐写(零宽字符、混写脚本)
- 标记注入(HTML 注释、隐藏 `
`、脚本标签)
- 金融特定(“清仓所有持仓”、紧迫性+交易组合)
- 上下文操纵(伪造错误、伪造用户消息、分隔符)
- 分隔符滥用(反引号系统标签、XML 标签注入)
- 泄露(Markdown 图像数据外泄)
## 设计决策
- **短路流水线**:规则快速且免费。分类器需要下载模型(约 250MB)但本地运行。LLM 评判器产生 API 调用 — 仅在不确定时触发。此顺序最小化成本与延迟。
- **多通道 OCR**:标准 OCR 难以捕获白底白字。通过反色与边缘检测通道捕捉对抗性文本,接受一定误报(对安全场景可接受)。
- **哈希优先缓存检查**:在运行任何检测前,先对提取文本计算 SHA-256 哈希,并与本地 SQLite 缓存中的链上威胁比对。已知攻击在微秒级被拦截。
- **优雅降级**:每个组件(Whisper、Tesseract、transformers、web3、Alpaca)均为可选。仅安装 `anthropic` 时技能仍可用 — 正则规则始终运行,LLM 评判器可替代分类器。
- **仪表板无认证**:仅限本地回环,黑客松范围。API 不设认证。
- **SQLite 替代 Postgres**:零配置、单文件,足以支撑演示吞吐量。
## 项目结构(SENTINEL 栈合并)
原有的 `SENTINEL/` 后端已提升至此仓库:`zk/`、`config/`、`schemas/`、`detector/on_chain/`(IsolationForest + LSTM)、`blockchain/defense_agent/`、基于 Redis 的事件总线 `store/` 以及 Foundry 合约(`ThreatRegistry`、`DefenseProtocol`、`ConsensusVoting` 等)。详见 `absolute-docs/09_implementation_map.md`。
```
clawguard/
skill/ # OpenClaw entrypoints + FastAPI shim
extractor/ # Multimodal text extraction
detector/ # rules + classifier + llm_judge + verdict + on_chain/
blockchain/ # web3 client, mempool, preemptive, counterfactual, defense_agent
learning/ # Red/Blue MLP loop, rule_extractor, publisher
network/ # poller + applier
store/ # SQLite + Redis Streams (sentinel_streams)
zk/ # RISC Zero host + guests (+ prover.py wrapper)
api/gateway.py # Extends skill.api with /api/v1/* routes
contracts/src/ # ThreatRegistry, DefenseProtocol, ConsensusVoting, …
config/ schemas/ infra/ # From SENTINEL
demo/ dashboard/ # Demo agent + React UI
```
标签:API服务器, Base网络, Claude, CVE检测, LLM裁判, Make工具, OCR, PDF解析, Sepolia, 中间件, 云计算, 仪表板, 依赖管理, 共享情报, 区块链威胁情报, 去中心化注册表, 图像检测, 多模态, 安全防护, 开发演示, 快速演示, 提示注入防御, 搜索引擎查询, 文本检测, 本地开发, 机器学习分类器, 深度集提示注入, 源代码安全, 环境配置, 规则引擎, 逆向工具, 零日漏洞检测, 音频转录