Jest-Test-Team/Agentic-Defense-Matrix-ADM

GitHub: Jest-Test-Team/Agentic-Defense-Matrix-ADM

一套针对自主 AI 代理设计的纵深防御系统,通过操作系统底层遥测、动态权限管控与 SIEM 关联引擎,限制 AI 代理的爆炸半径并防范提示词注入等攻击。

Stars: 0 | Forks: 0

# Agentic Defense Matrix (ADM) 一个针对具备自主规划与工具调用能力的 Agentic AI 所设计的纵深防御系统。本项目摒弃传统仅依赖“提示词过滤”的无效防护,通过操作系统底层遥测、动态权限管控与状态感知 SIEM,彻底限制 AI 代理的爆炸半径。 ## 🔴🔵🟢 实时演示 完整的红蓝绿对抗演练在免费云层级上持续运行: - **仪表板(实时):** https://jest-test-team.github.io/Agentic-Defense-Matrix-ADM/ — 服务健康状态、战斗计分板、单一技术拆解、实时事件流 (英文 / 繁體中文)。 - **API (HTTPS):** `https://api.dennisleehappy.org` — `/api/stats`, `/api/timeline`, `/api/stream` (SSE), `/health`, `/ready`。 红队向网关发射了数千个对抗性提示词和工具调用尝试;蓝队在边界将其拦截;绿队负责补救任何落网的攻击。每个事件都会被记录到 Postgres 中并进行实时评分。请参阅 **[实时部署 — 基础设施与服务](docs/architecture/live-deployment.md)** 了解完整的架构(OCI micro + Neon + Bonsai + Groq + Caddy + GitHub Pages), 以及 **[对抗演练编排](docs/battle-orchestration.md)** 了解演练的运作方式。 ## 目标 构建涵盖从 L7 API Gateway 到 OS Endpoint 层级的防御矩阵。确保当代理面临 **间接提示词注入(Indirect Prompt Injection,数据投毒)**、**混淆代理攻击** 或 **状态漂移** 时,系统能够主动识别语义异常,并在操作系统层级拦截未经授权的 syscall 和数据外泄。 ## 方法 蓝队检测 + 绿队隔离: 1. **跨维度遥测:** 结合网关语义分析与操作系统层级(WFP / macOS Endpoint Security)的进程/网络拦截。 2. **有状态 SIEM:** 将自然语言意图与底层 syscall 进行时间序列关联。 3. **零信任与微分段:** 结合临时代理沙箱,实施动态 IAM 权限降级。 ## 限制条件 - **性能:** 网络拦截与 SIEM 关联所增加的延迟须保持在 50ms 以内。 - **无状态代理:** 所有状态均由外部管理,以实现容器的即时销毁。 - **出站过滤:** 默认拒绝所有出站连接,白名单 API 除外。 ## 技术栈 | 组件 | 技术 | 用途 | |-----------|-----------|---------| | API Gateway | Go (Echo) | 请求拦截、语义分析、路由 | | 代理服务 | Go + gRPC | 规划器、执行器、摘要器(独立容器) | | LLM 后端 | Ollama | 本地推理:llama3.1:8b, qwen2.5:7b, mistral | | Endpoint Watchdog | Rust | macOS ES + Windows WFP syscall 拦截 | | SIEM 引擎 | Go | 关联引擎 + Redis Streams | | 策略引擎 | OPA + SPIRE | Rego 策略 + 工作负载身份 | | 沙箱 | Docker API | 临时单代理容器 | | 存储 | Redis 7 | SIEM 热路径(热数据 7天 / 冷数据 180天) | | 可观测性 | OpenTelemetry | 链路追踪、指标、日志 | | CI/CD | GitHub Actions | 矩阵构建:windows/amd64, darwin/amd64+arm64, linux/amd64 | ## 仓库结构 ``` agentic-defense-matrix/ ├── .github/ │ └── workflows/ │ ├── ci.yml # Go & Rust tests + lint │ ├── release.yml # Cross-platform packaging │ └── red_team_fuzz.yml # Red team attack suite ├── cmd/ │ ├── gateway/ # API Gateway + semantic middleware │ ├── siem_engine/ # SIEM correlation engine │ ├── control_plane/ # Auto-update server │ └── agent/ │ ├── planner/ # Task decomposition agent │ ├── executor/ # Tool execution agent │ └── summarizer/ # Response summarization agent ├── pkg/ │ ├── auth/ # OPA + SPIRE client, JWT management │ ├── semantic/ # Prompt vectorization + intent comparison │ ├── telemetry/ # OTel instrumentation helpers │ ├── ollama/ # Ollama HTTP API wrapper │ ├── policy/ # OPA Rego evaluation client │ ├── ringbuffer/ # Lock-free SPSC ring buffer │ └── proto/ # Protobuf service definitions ├── agents/ │ └── schemas/ # OpenAI-compatible tool definitions ├── daemon_watchdog/ # Rust endpoint watchdog │ ├── Cargo.toml │ └── src/ │ ├── main.rs │ ├── wfp_filter.rs # Windows Filtering Platform │ ├── macos_es.rs # macOS Endpoint Security │ ├── egress_blocker.rs # Dynamic egress blocking │ ├── policy_enforcer.rs # OPA policy evaluation │ └── telemetry.rs # OTel event export ├── deploy/ │ ├── docker-compose.yml # Full stack orchestration │ ├── Dockerfile.services # Multi-stage Go build │ ├── Dockerfile.rust # Rust watchdog build │ ├── Dockerfile.opa # OPA sidecar │ ├── watchdog.toml # Watchdog configuration │ ├── otel-collector.yaml # OTel Collector config │ ├── packaging/ # Platform installers │ │ ├── windows/ # MSI + PowerShell │ │ ├── macos/ # .pkg + launchd │ │ └── linux/ # tar.gz + systemd │ └── spire/ # SPIRE + OPA policies ├── docs/ │ ├── architecture/ │ │ ├── system-overview.md # Mermaid architecture diagrams │ │ ├── c4-container.puml # PlantUML C4 model │ │ ├── deployment.md # Deployment architecture │ │ ├── data-flow.md # Data flow diagrams │ │ └── security.md # Security architecture │ ├── threat-model.md # MITRE ATLAS threat mapping │ └── adr/ # Architecture Decision Records │ ├── 001-opa-spire-auth.md │ ├── 002-redis-streams-siem.md │ ├── 003-separate-agent-services.md │ ├── 004-rust-watchdog.md │ └── 005-ollama-llm.md ├── analysis/ # Rust battle-analysis engine (axum + Postgres + Elastic) + dashboard API ├── dashboard/ # Realtime Next.js dashboard (static, GitHub Pages, EN/繁中) ├── worker/ # (deprecated) Cloudflare Worker HTTPS proxy — superseded by Caddy ├── tests/ │ ├── integration/ # Blue/green team integration tests │ └── redteam/ # Red team attack harnesses ├── scripts/ │ └── setup-dev.sh # Development environment setup ├── .editorconfig ├── .golangci.yml ├── Makefile ├── buf.yaml # Protobuf lint config ├── buf.gen.yaml # Protobuf code generation ├── go.mod └── README.md ``` ## 实现方法 1. **L7 语义防御(网关):** Go 中间件拦截所有代理请求,计算短窗口内的语义相似度,以阻断自动化探测。 2. **OS 行为遏制(端点):** 带有 WFP/ES 过滤器的 Rust watchdog daemon 将代理的 socket 连接绑定到会话 ID。 3. **绿队自动响应:** SIEM 触发 webhook → 网关撤销会话 IAM → Watchdog 对容器发出 SIGKILL 并阻断出站流量。 ## 实施计划 ### 第一阶段:架构与沙箱(第 1-2 周) - 分离代理对话与执行模块 - 构建 Docker 临时执行环境 - 支持工具调用的 Ollama 封装器 - Protobuf 服务定义 - Docker Compose 编排 ### 第二阶段:端点拦截器(第 3-4 周) - 结合 macOS Endpoint Security 的 Rust watchdog - Windows WFP 过滤器实现 - 结合动态白名单的出站阻断 - 跨平台打包(MSI, .pkg, tar.gz) ### 第三阶段:SIEM 关联引擎(第 5-6 周) - 用于热路径摄取的无锁环形缓冲区 - 用于事件持久化的 Redis Streams - 基于 MITRE ATLAS 的关联规则 - OTel 监测插桩 ### 第四阶段:动态权限与自动响应(第 7-8 周) - OPA + SPIRE 集成 - 威胁检测时的 Token 撤销 - 异常行为下的出站流量丢弃 - 端到端集成测试 ## 验收标准 | 阶段 | 攻击(红队) | 预期防御(蓝/绿队) | 通过标准 | |-------|-------------------|-------------------------------|---------------| | 阶段 1:API 边界 | 高频语义提示词注入 | 网关检测到语义异常 | 触发限流,95% 的探测被阻断 | | 阶段 2:逻辑滥用 | 混淆代理:串联 read_secret → external_send | Watchdog 捕获异常,SIEM 触发规则 | IAM 被撤销,出站流量被沙箱拒绝 | | 阶段 3:系统渗透 | RAG 投毒 → 反向 shell 生成 | macOS ES / WFP 拦截未授权执行(例如 `bash -i`) | 进程创建失败,容器被销毁 | ## 红队测试套件 位于 `tests/redteam/`,使用 Go/Rust 实现: | ID | 攻击 | 技术 | |----|--------|-----------| | RT-001 | 提示词注入 | 通过 RAG 上下文进行间接注入 | | RT-002 | 工具链调用 | read_secret → external_send 链 | | RT-003 | RAG 投毒 | 向知识库注入恶意 URL | | RT-004 | 反向 Shell | 通过工具调用执行 `bash -i >& /dev/tcp/...` | | RT-005 | 混淆代理 | 欺骗代理进行权限提升 | | RT-006 | Token 窃取 | 重放捕获的 JWT | | RT-007 | 数据外泄 | DNS 隧道 / 向外部发送 HTTP POST | | RT-008 | 容器逃逸 | 尝试挂载主机文件系统 | | RT-009 | 频率滥用 | 1000 req/min 自动化探测 | | RT-010 | 状态漂移 | 在会话中途修改代理上下文 | | RT-011 | LLM 供应链 | 受害的 Ollama 模型 | | RT-012 | 日志注入 | 用户输入中的精心构造的 payload | | RT-013 | TOCTOU 竞争 | 策略检查中的竞争条件 | | RT-014 | DNS 重绑定 | 通过 DNS 绕过出站过滤器 | | RT-015 | 权限提升 | 利用 Watchdog → root | | RT-016 | 间接工具输出 | 在工具输出中注入恶意指令 | | RT-017 | 多轮上下文 | 建立信任后跨轮次利用 | | RT-018 | 编码注入 | Base64/十六进制编码的 payload | | RT-019 | 多语言 | 使用多种语言进行注入 | | RT-020 | 嵌套注入 | 嵌套的 system/user/assistant 标记 | | RT-021 | 社会工程学 | 伪造管理员/紧急命令 | | RT-022 | Payload 混淆 | 变量拆分、拼接 | | RT-023 | 供应链 | 恶意软件包安装 | | RT-024 | 基于时间 | 延迟触发注入 | | RT-025 | 资源耗尽 | 巨大 payload、并发请求 | | RT-026 | 记忆体投毒 | 污染代理对话记忆体 | | RT-027 | 跨会话 | 污染其他会话 | | RT-028 | Token 提取 | 提取 API 密钥/token | | RT-029 | 拒绝服务 | 过度生成 Token | | RT-030 | 侧信道 | 通过编码进行数据外泄 | ## 快速开始 ``` # 设置开发环境 ./scripts/setup-dev.sh # 启动基础设施 docker compose up -d redis ollama # 拉取 LLM model ollama pull llama3.1:8b # 构建全部 make build # 运行测试 make test # 启动 full stack make docker-up ``` ## 自动更新系统 网关包含内置的自动更新客户端,会轮询 GitHub Releases: - **后台检查**:每 1 小时检查一次新版本 - **SHA256 校验**:在应用前验证校验和 - **二进制替换**:下载并原地替换二进制文件 - **服务重启**:更新后重启服务(systemd/launchd) **管理员端点:** - `GET /v1/version` — 当前版本 - `POST /v1/admin/update/check` — 检查更新 **环境变量:** - `ADM_GITHUB_OWNER` — GitHub 仓库所有者(默认:`Jest-Test-Team`) - `ADM_GITHUB_REPO` — GitHub 仓库名称(默认:`Agentic-Defense-Matrix-ADM-`) ## 部署 ### Docker Compose(推荐) ``` # 启动 full stack docker compose up -d # 以开发模式启动 docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d ``` ### 平台安装程序 | 平台 | 安装程序 | 服务管理器 | |----------|-----------|-----------------| | Windows | `deploy/packaging/windows/install.ps1` | Windows Service | | macOS | `deploy/packaging/macos/install.sh` | launchd | | Linux | `deploy/packaging/linux/install.sh` | systemd | ### Oracle Cloud Terraform GitHub Actions 工作流:`.github/workflows/terraform-oci.yml` 必需的仓库 Secrets: | Secret | 描述 | |--------|-------------| | `OCI_TENANCY_OCID` | OCI 租户 OCID | | `OCI_USER_OCID` | OCI API 用户 OCID | | `OCI_FINGERPRINT` | OCI API 密钥指纹 | | `OCI_PRIVATE_KEY` | OCI API 私钥的 PEM 内容 | | `ADM_SSH_PUBLIC_KEY` | 安装在 ADM 实例上的 SSH 公钥 | 可选的仓库设置: | 设置 | 类型 | 默认值 | |---------|------|---------| | `OCI_REGION` | Secret | `us-ashburn-1` | | `ADM_EXISTING_SUBNET_ID` | Variable | 空;设置为复用现有的 OCI 子网,而不是创建 VCN | | `ADM_OCPUS` | Variable | `4` | | `ADM_MEMORY_IN_GBS` | Variable | `24` | | `ADM_VOLUME_SIZE_GBS` | Variable | `100` | | `ADM_DOCKER_COMPOSE_VERSION` | Variable | `v2.29.1` | Pull request 会运行 `terraform fmt`、`init` 和 `validate`。推送到 `main` 分支会执行 plan。使用手动的 **Terraform OCI** 工作流调度,并设置 `action=apply` 和 `auto_approve=true` 以部署到 OCI,或设置 `action=destroy` 和 `auto_approve=true` 将其拆除。 当前的 Terraform backend 是本地的,因此工作流会在手动运行之间缓存 `terraform.tfstate`。对于长期使用或共享的基础设施,在依赖多个分支或操作者之前,请将状态迁移到真正的远程 backend。 ### 手动安装 ``` # 从源码构建 make build # 安装 binaries sudo cp bin/* /usr/local/bin/ # 创建 systemd service sudo cp deploy/packaging/linux/adm.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable adm sudo systemctl start adm ``` ## 文档 - [实时部署 — 基础设施与服务](docs/architecture/live-deployment.md) — 生产环境拓扑(OCI + Neon + Bonsai + Groq + Caddy + Pages) - [仪表板](dashboard/README.md) — 实时 Next.js 控制台(英文 / 繁中) - [系统架构](docs/architecture/system-overview.md) — Mermaid 图表 - [C4 容器模型](docs/architecture/c4-container.puml) — PlantUML - [部署架构](docs/architecture/deployment.md) — 服务矩阵 - [数据流](docs/architecture/data-flow.md) — 事件流水线 - [安全架构](docs/architecture/security.md) — 零信任模型 - [威胁模型](docs/threat-model.md) — MITRE ATLAS 映射 - [对抗演练编排](docs/battle-orchestration.md) — 红蓝绿对抗演练 + 分析引擎(db/be/fe) - [OCI 部署使用](docs/instruction.md) — 连接并操作已部署的堆栈 - [ADR](docs/adr/) — 架构决策记录 ## 参考资料 1. [MITRE ATLAS](https://atlas.mitre.org/) — 威胁战术 (AML.T0051,ML.T0052, AML.T0054) 2. [OWASP LLM 应用 Top 10](https://owasp.org/www-project-top-10-for-large-language-model-applications/) — LLM01, LLM06, LLM08 3. [BIML 架构风险分析](https://berryvilleiml.com/) — 数据/指令边界原则 4. [CSA AI 安全指南](https://cloudsecurityalliance.org/) — 动态 IAM、微服务隔离 5. [哈佛 CS 2881:AI 安全](https://cs2881.seas.harvard.edu/) — 模型规范、红蓝队、越狱理论
标签:AI安全, AI风险缓解, Chat Copilot, CISA项目, EDR, EVTX分析, IP 地址批量处理, JSONLines, Python工具, 可视化界面, 搜索引擎查询, 日志审计, 测试用例, 用户代理, 纵深防御, 脆弱性评估, 请求拦截, 零信任