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工具, 可视化界面, 搜索引擎查询, 日志审计, 测试用例, 用户代理, 纵深防御, 脆弱性评估, 请求拦截, 零信任