nikodemus-eth/saoe-mvp

GitHub: nikodemus-eth/saoe-mvp

一个经过红队加固的安全多智能体运行环境框架,通过签名信封、默认拒绝工具网关和完整审计追踪,确保 AI Agent 的每一步操作都在受控范围内。

Stars: 0 | Forks: 0

# SAOE — 安全智能体运行环境 **v0.1.0 RT-Hardened** • MVP 发布候选版 一个能力受限、Schema 强制执行的多智能体 Pipeline。 每一个动作都由**签名 ExecutionPlan** 授权。每一条消息都在 **SATL envelope** 中传输。默认拒绝 ToolGate。完整审计追踪。红队验证通过。 ![Python](https://img.shields.io/badge/Python-3.12+-blue) ![License](https://img.shields.io/badge/license-MIT-green) ![Status](https://img.shields.io/badge/status-MVP--RC-orange) ## 快速开始(单命令 Docker 演示) ``` git clone https://github.com/nikodemus-eth/saoe-mvp.git cd saoe-mvp/examples/demo # Bootstrap 一次 docker compose run --rm setup # 启动 pipeline + 实时 Log Viewer docker compose up -d sanitization over-agent text-formatter image-filter deployment log-viewer # 触发博客文章(文本 + 可选 image) docker compose run --rm intake --text "Secure agents just got hardened." ``` 打开 `http://localhost:8080` → 查看实时审计追踪和最终生成的 HTML 文章。 ## SAOE 保障内容 (v0.1.0) - **SATL 传输层** — 签名信封,规范化模板库,无发送方信任 Schema - **确定性 ExecutionPlan** — 意图 → 签名计划 → 仅限 ToolGate - **ToolGate** — 默认拒绝,显式允许列表,参数 Schema 验证 - **重放与篡改保护** — `envelope_id` UNIQUE + 签名验证 - **输出控制** — 正则验证的 `session_id`,realpath,最终 bleach 再清理(RT-2.3 & RT-3.1 已修复) - **红队加固** — +32 个对抗性测试,150/150 通过,2 个高危漏洞已修复 参见 [SECURITY_INVARIANTS.md](SECURITY_INVARIANTS.md)(16 条强制不变量)和 [docs/threat_model.md](docs/threat_model.md)。 ## 5 分钟本地演示(非 Docker) ### 前置条件 - macOS(在 macOS 14+ 上测试) - Python 3.12+(推荐 `python3.13 -m venv`) - `age` CLI:`brew install age` ### 步骤 1:设置 ``` git clone https://github.com/nikodemus-eth/saoe-mvp cd saoe-mvp python3.13 -m venv .venv source .venv/bin/activate pip install -e saoe-core -e saoe-openclaw python examples/demo/setup_demo.py ``` 设置将生成密钥,将模板加密存入 Vault,并写入 `examples/demo/demo_config.json`。 ### 步骤 2:启动 Agent 在单独的终端中(或使用 `&` 置于后台): ``` source .venv/bin/activate cd examples/demo/agents python sanitization_agent.py & python over_agent.py & python text_formatter_agent.py & python image_filter_agent.py & python deployment_agent.py & python ../serve_log_viewer.py --db /tmp/saoe/events.db & ``` ### 步骤 3:提交有效意图 → 验证输出 ``` python examples/demo/agents/intake_agent.py --title "Hello SAOE" --markdown "# Hello world" ``` 大约 3 秒内: ``` ls /tmp/saoe/output/ open http://localhost:8080 ``` 预期结果:`/tmp/saoe/output/` 中生成一个 `.html` 文件;审计日志显示 8 个事件(validated, forwarded×3, tool_executed, validated at deployment)。 ### 步骤 4:篡改信封 → 拒绝记录 ``` python examples/attacks/tamper_signature.py ``` 预期输出结尾为:`BLOCKED: Tampered envelope rejected at step 3 (signature verification).` ### 步骤 5:重放信封 → 拒绝记录 ``` python examples/attacks/replay_attack.py ``` 预期输出结尾为:`BLOCKED: Replay rejected at step 12 (SQLite UNIQUE constraint on validated events).` ### 步骤 6:路径遍历尝试 → 拒绝记录 ``` python examples/attacks/path_traversal.py ``` 预期输出结尾为:`BLOCKED: All traversal attempts rejected. Path enforcement held.` ### 步骤 7:伪造计划签名 → 工具未被调用 ``` python examples/attacks/invalid_plan_signature.py ``` 预期输出结尾为:`BLOCKED: Forged plan rejected at plan signature verification (before any tool call).` ## 运行测试 ``` pytest saoe-core/tests/ -v ``` 150 个测试(77 个单元测试 + 6 个 E2E + 32 个对抗性测试 + 35 个确认性测试)。全部通过。 ## 仓库结构 ``` saoe-core/ Core library (validator, vault, toolgate, audit, safe_fs) saoe_core/ util/safe_fs.py Path traversal + TOCTOU guard crypto/keyring.py Ed25519 + pinned key hash crypto/age_vault.py Read-only encrypted vault satl/envelope.py SATL envelope dataclass + signing satl/validator.py 12-step default-deny validation audit/events_sqlite.py WAL SQLite audit log + replay guard toolgate/toolgate.py Signed ExecutionPlan enforcement publisher.py Template publish with sha256 confirmation gate tests/ unit/ 77 unit tests (FT-001 through FT-010 + more) e2e/ 6 end-to-end tests demo/ 32 adversarial + 35 confirmatory security tests saoe-openclaw/ AgentShim (polling loop, send/receive, quarantine) examples/ demo/ agents/ 6 demo agents + intake CLI setup_demo.py Key generation + vault initialisation serve_log_viewer.py Audit log web viewer (bleach + CSP) attacks/ 4 adversarial demonstration scripts docs/ threat_model.md Threat model v1.1 (RT-Hardened) — invariants + test mapping production_gaps.md Explicit list of MVP limitations testing/ UNIT_TEST_PLAN.md E2E_TEST_PLAN.md BUILD_TEST_PLAN.md logs/ INSTALL_LOG.md LESSONS_LEARNED_LOG.md TESTING_LOG.md ``` ## 生产环境差距(诚实且明确说明) 这是一个架构演示器,而非生产级软件。完整列表请参见 [docs/production_gaps.md](docs/production_gaps.md)(无 HSM,无 mTLS,无容器沙箱等)。 ## 红队加固摘要 | | | |---|---| | 红队测试前 | 118 个测试 | | 红队测试后 | 150 个测试(+32 个对抗性) | | 通过率 | 150/150 | 关键修复: - **RT-2.3 路径遍历** → 针对 `session_id` 的严格正则 + realpath - **RT-3.1 XSS** → `deployment_agent` 中的最终再清理 完整详情 → [docs/threat_model.md](docs/threat_model.md) 和 [logs/TESTING.md](logs/TESTING.md) ## 安全不变量 16+ 条强制不变量及通过测试。完整列表及测试引用请参见 [docs/threat_model.md](docs/threat_model.md)。 ## 后续步骤(路线图) - 不可变 Merkle 审计账本 - mTLS + WireGuard 智能体间传输 - 每 Agent 容器隔离 - Vault 支持的密钥轮换 欢迎贡献 — 参见 CONTRIBUTING.md(将在 v0.1.1 中推出)。 为 OpenClaw 用户、自托管者以及任何希望智能体不会悄悄执行恶意操作的人而制作。 ⭐ 如果这对安全智能体 Pipeline 有所助益,请点个 Star。
标签:DevSecOps, DNS 反向解析, Docker, NIDS, Python, SATL, Schema校验, Streamlit, ToolGate, Web报告查看器, 上游代理, 企业安全, 参数净化, 多代理管道, 安全MVP, 安全代理环境, 安全操作系统, 安全防御评估, 审计日志, 容器化, 意图识别, 执行计划签名, 数据清洗, 无后门, 篡改检测, 红队验证, 网络安全, 网络资产管理, 访问控制, 请求拦截, 重放攻击防护, 隐私保护, 默认拒绝策略