krishddd/SEC_Guardrails_Agent

GitHub: krishddd/SEC_Guardrails_Agent

面向 LLM 自治 agent 的七层运行时安全防护反向代理网关,通过纵深防御架构阻断提示注入、工具滥用和数据外泄等攻击。

Stars: 1 | Forks: 0

# SEC_Guardrails_Agent [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/krishddd/SEC_Guardrails_Agent/actions/workflows/ci.yml) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](#license) [![Python 3.11](https://img.shields.io/badge/python-3.11-blue.svg)](pyproject.toml) 为 **Odysseus** 自治 agent 提供的防御性、从零构建的 **7 层运行时 guardrails**(Docker,本地端口 `7000`,由 Mistral 提供支持)。一个非侵入式的反向代理 **guardrail 网关** 运行在 Odysseus 前方的端口 `7100` 上,在每一轮对话中强制执行一条 rail 链,并为每个 rail 决策生成一条 OpenTelemetry trace 以及一条仅追加的(append-only)审计记录。 ## 为什么需要 一个能够进行规划、运行工具(bash、文档创建、web/API 调用)、读取不受信任的外部数据并保持记忆的 LLM agent 具有很大的攻击面——包括 prompt 注入、工具滥用、memory 投毒、数据泄露。Guardrails 是一个运行时控制平面,它在每个边界上决定 agent 即将 **读取、说出或执行** 的操作是否被允许。该设计贯穿两个原则:**纵深防御**(不信任任何单一检查)和 **将所有外部内容视为不受信任**(来源标签 + 污点追踪)。 ## 架构 ``` client │ ▼ ┌─────────────────────────────┐ │ Guardrail Gateway :7100 │ FastAPI reverse-proxy │ ── input rails (L1, <30ms) │ secrets · PI/jailbreak · PII · spotlighting │ ── dialog rails (L2, <200ms)│ Task-Shield · deny-by-default topics │ │ │ │ ▼ forward (token)│ │ Odysseus :7000 ────────┼──▶ tool trace (export hook, ADR-0005) │ │ ◀─────────────┤ L4 tool · L5 memory · multi-agent rails │ ▼ │ │ ── output rails (L6, <50ms) │ schema · content · grounding · redact · sanitize │ ── oversight critic (L7) │ └─────────────────────────────┘ │ every decision → OTel span + append-only audit ▼ client ``` **7 个控制层**:L1 输入 · L2 对话/主题 · L3 推理/IFC(双 LLM + 污点) · L4 工具/动作 · L5 检索/memory · 多 agent 通信 · L7 验证/监督 ·(+ L6 输出) · 横切可观测性。每一层都映射到其防御的特定攻击——参见 [`docs/architecture/odysseus-guardrails.md`](docs/architecture/odysseus-guardrails.md)。 ## 多语言技术栈——各取所长 | 语言 | 角色 | 原因 | |---|---|---| | **Python 3.11** | 控制平面:FastAPI 网关、分类器编排、eval harness | 粘合剂 + ML 生态系统 | | **Rust** (PyO3/maturin → `guardrails_core`) | 确定性安全核心:密钥扫描器、spotlighting、URL/HTML sanitizer、**L4 policy-DSL 解析器 + 评估器**、污点原语 | 在信任边界处,内存安全 *本身* 就是一项安全属性;满足 <30 ms 的预算。包含纯 Python 回退方案 | | **TypeScript/React** (Vite, `web/`) | HITL 审批应用 + 可观测性/审计仪表板 | 无头服务无法提供的人机交互界面。客户端不包含任何安全逻辑 | | **Rego/OPA** | L4 策略 v2 路径 | 当内部 DSL 无法满足需求时,提供基于 Git 版本控制、可进行 CI 测试的策略 | 参见 [ADR-0006](docs/architecture/adr/0006-polyglot-rust-core.md) 和 [ADR-0007](docs/architecture/adr/0007-typescript-frontend.md)。 ## 生态系统(兄弟项目——复用而非重造) - **攻击性 oracle** — `Agent_security_testing/Security_module` (ASI01–10 + ext01–17)。评估 guardrail 所抵御的攻击套件(A/B:直接攻击 vs 通过网关攻击)。 - **评分器** — `Agent eval pipeline`(Odysseus 质量/安全指标,基础验证评判器)。 - **目标** — `odysseus/`(受保护的 agent)。 ## 构建方式——研究文档驱动 pipeline 每个阶段都在 Claude Code skills 的驱动下,在 `docs/` 下读取/写入结构化的 markdown 产物: ``` research/ → docs/specs/ → docs/architecture/ (+adr) → docs/plans/ → code /research-distill → /explore → /design → /plan → /scaffold → /implement → /test → /review → /docs-sync → /ship ``` ## 快速开始 ``` # 1. 安装(control plane;Rust core + ML detectors 为额外组件) python -m pip install -e ".[dev]" # add ".[ml]" for deberta/Presidio, ".[bench]" for AgentDojo # 2. 测试 + lint pytest -q # 230+ pass; Rust↔Python parity runs in CI ruff check . && ruff format --check . # 3. 查看每一层 end-to-end 触发(无需外部服务) python scripts/demo.py # 4. 在 Odysseus :7000 前面的 :7100 端口上运行 guardrail gateway python scripts/run_gateway.py # → 将 Odysseus 指向它:GUARDRAIL_TRACE_URL=http://localhost:7100/api/_trace # 5. 实时 A/B 测试(red-team 直接测试对比通过 engine 测试)以及 AgentDojo benchmark python scripts/run_ab_live.py # AB_USE_ML=1 to use the deberta backend python scripts/run_benchmark_live.py ``` 通过环境变量进行配置(参见 [`.env.example`](.env.example));`.env` 永远不会被提交。复用 eval pipeline 中的 `ODYSSEUS_TOKEN` + `OPENAI_API_KEY` —— **在使用前请轮换 OpenAI 密钥**。 ## 仓库布局 | 路径 | 用途 | |---|---| | `research/` | 原始研究 / 产出摘要 | | `docs/specs/` | 提炼的、结构化的规范 | | `docs/architecture/` | 探索性笔记、架构文档、ADR | | `docs/plans/` | 有序、可检查的任务列表 (`T1–T40`) | | `src/gateway/` | FastAPI 反向代理网关 (`:7100`) | | `src/rails/` | Rail 实现(输入/对话/输出/工具/memory/推理/多 agent/监督) | | `src/core/` | Rail 框架、配置、审计、可观测性 | | `src/eval/` | A/B 攻击 harness、AgentDojo 基准驱动程序、延迟/FPR 报告 | | `src/agent/` | 运行在引擎 *之下* 的参考工具执行 agent(进程内 trace) | | `docs/eval/` | 实测的 A/B、基准、延迟及防御升级结果 | | `crates/guardrails-core/` | Rust 安全核心(PyO3/maturin → `guardrails_core`) | | `web/` | TypeScript/React HITL 审批 + 可观测性仪表板 | | `tests/` | 单元测试 + 对抗性 fixtures,离线 Odysseus stub | | `.claude/` | Skills、子 agent、编辑前 guard hook、设置 | ## 评估与结果 安全指标始终 **分开** 报告——攻击成功率 (ASR) / 拦截率和误报率 (FPR) / 效用分别报告,**绝不混合为单一的 F1**。A/B harness 运行 Security_module 攻击,对比直接攻击与通过网关攻击针对真实的 Odysseus;AgentDojo 作为复用的外部基准运行。完整报告详见 [`docs/eval/`](docs/eval/)。 **针对真实 Odysseus 的实测结果**(拦截率 = 被硬阻断的攻击比例;这是确定性的、可归因的指标): | 套件 | 指标 | 结果 | |---|---|---| | Security_module (红队) | 总体拦截率,启发式 → ML | **0.19 → 0.47** | | Security_module | 角色重定向拦截率(检测器升级后) | **0.00 → 1.00** | | AgentDojo (银行/slack/旅行/工作区) | 注入拦截率 | **1.00** (12/12) | | 所有套件 | **FPR / 过度拒绝** | **0.00** | | 通过投毒工具结果进行的间接注入 (XPIA) | 在网关被捕获,实时 | ✅ | 延迟:确定性输入 rail < 15 ms p50;ML 检测器(deberta-v3,323 ms CPU)仅通过条件性第二阶段在灰带(gray-band)输入上运行,因此良性流量几乎无需付出代价(~0)(参见 [`docs/architecture/T7-latency-spike.md`](docs/architecture/T7-latency-spike.md))。 ## 状态 - ✅ **基础架构、全部 7 层 rail、Rust 核心、React HITL/仪表板、CI** —— 完整的安全网。 - ✅ **统一的 `GuardrailEngine`** + 参考受保护 agent;与 agent 无关的 `guard_*` API。 - ✅ **实时集成** —— `:7100` 网关位于 Odysseus 前方;工具 trace 摄取(`/api/_trace`),实时 A/B (Security_module) 和 AgentDojo 基准测试,真实 ML 模型带来的延迟峰值。 - ✅ **防御研发 (D1–D5)** —— 检测器召回率升级、条件性第二阶段、集成 + PromptGuard 2 后端,以及已在实时环境中验证的工具输出(间接/XPIA)扫描。 运行 `python scripts/demo.py` 以查看每一层的端到端触发。在 [`docs/plans/odysseus-guardrails-plan.md`](docs/plans/odysseus-guardrails-plan.md) 中跟踪详细信息,并在 [`docs/plans/defense-improvements.md`](docs/plans/defense-improvements.md) 中查看防御路线图。 ## 安全性 发现漏洞?请参见 [`SECURITY.md`](SECURITY.md)。对于敏感报告,请勿创建公开的 issue。 ## 许可证 许可证:**TBD** —— 在添加许可证文件之前,作者保留所有权利。
标签:AI安全, Chat Copilot, DLL 劫持, LLM防护栏, XSS注入, 反向代理, 可视化界面, 大语言模型, 深度防御, 用户代理, 请求拦截, 逆向工具