HawkLab1811/Aegis-AI

GitHub: HawkLab1811/Aegis-AI

安全优先的多提供商 AI 网关,通过 CrowdStrike AIDR 实时扫描所有 LLM 输入与输出,兼顾 RAG、对话管理与策略验证测试。

Stars: 0 | Forks: 0

# Aegis AI - 安全 AI 网关 Aegis AI 是一个安全优先的 AI 网关,提供由 **CrowdStrike AIDR 保护**的多 LLM 提供商访问。它充当用户与 AI 模型之间的代理,通过 CrowdStrike 的 AI Detection and Response (AIDR) 服务扫描所有输入和输出。 ## 功能 ### 多提供商 LLM 支持 为 5 个提供商的 17 个模型预配置了适配器: - **OpenAI** - GPT-5, GPT-5 Mini, GPT-5 Nano, GPT-4o (Vision), GPT-4o Mini - **Anthropic** - Claude Opus 4.5, Claude Sonnet 4.5, Claude Haiku 4.5 - **Google** - Gemini 3 Flash, Gemini 3 Pro, Gemini 2.5 Flash, Gemini 2.5 Pro - **xAI** - Grok 4.1 Fast, Grok 4 (Latest), Grok Code Fast - **Xiaomi MiMo** - MiMo V2.5 Pro, MiMo V2.5 ### CrowdStrike AIDR 安全 - 通过 CrowdStrike AI Guard 进行实时输入/输出扫描 - 可配置的 AIDR 收集器,每个部署具有单独的 token - 访问规则执行、内容阻止和内容转换 - 通过 CrowdStrike AIDR MCP 代理进行 MCP 工具扫描 ### 内置 MCP 服务器(3 个服务器,20 个工具) - **Aegis Test Server** - 用于 AIDR 策略验证的文件操作(安全 + 风险) - **HR ToolBox Server** - 30 个包含 PII(SSN,薪水)的员工档案,用于数据脱敏测试 - **LLM Helper Server** - 用于 prompt injection 检测测试的恶意工具描述 ### RAG 知识库 - ChromaDB 向量存储,每个知识库相互隔离 - 支持:PDF, TXT, MD, 图像,视频,Excel, CSV, Word, PowerPoint - 基于 Vision 的媒体描述(图像/视频由 LLM 描述,然后向量化) - 从配置的引擎中自动选择 Vision 提供商 ### 对话管理 - 每个用户的持久聊天记录 - 多对话支持,可创建/切换/删除 - 基于上下文的标题生成 ### 首次部署向导 首次启动时运行的 4 步引导式设置: 1. **管理员密码** - 创建管理员凭证(在数据库中以哈希形式存储) 2. **AIDR 配置** - 设置 CrowdStrike AIDR 收集器 token 和 URL 3. **MCP 代理** - 配置 CrowdStrike MCP 代理设置 4. **AI 引擎** - 选择一个提供商并输入 API key ### 附加功能 - 用于保存配置预设的配置文件系统 - 包含 36 个 AIDR 策略测试样本的内部测试库 - 所有 API key 和 token 在静态存储时使用 Fernet 加密 - 基于数据库的身份验证(密码不依赖 .env) - 运行时自动生成加密密钥 ### Skills 系统 - 基于文件的 Skill 作为 Markdown 文件存储在 `data/skills/` 中 - 4 步 Skill 创建向导(名称、描述、工作流、预览) - 每个对话单独选择 Skill 并保持状态持久化 - 将 Skill 注入到系统 prompt 中以自定义 AI 行为 - 6 个默认模板:4 个正常模板 + 2 个安全演示模板 - 通过设置页面和 REST API 执行完整的 CRUD 操作 ![主仪表板](https://raw.githubusercontent.com/HawkLab1811/Aegis-AI/main/screenshots/main_new.png) ## 快速开始 ### 前置条件 - [Docker](https://docs.docker.com/get-docker/)(包含 Docker Compose) - CrowdStrike AIDR token([了解更多](https://www.crowdstrike.com/products/ai-guard/)) - 至少一个受支持的 LLM 提供商的 API key ### 克隆并构建 ``` git clone https://github.com/your-org/aegis-ai.git cd aegis-ai cp .env.example .env docker-compose up -d ``` ### 首次启动 1. 在浏览器中打开 **http://localhost:15000** 2. **设置向导** 将自动出现 3. 按照以下 4 个步骤操作: - 设置您的管理员密码(至少 8 个字符) - 输入您的 CrowdStrike AIDR token 和 API URL - 配置 MCP 代理设置(可选) - 选择一个 AI 引擎并输入您的 API key 4. 开始通过安全的 AI 网关聊天 ![第 1 步](https://static.pigsec.cn/wp-content/uploads/repos/cas/ea/ea064a1c7919f830ba2be42782126db0d43c59eeb97a13d9f54d4af2cae226a0.png) ![第 2 步](https://raw.githubusercontent.com/HawkLab1811/Aegis-AI/main/screenshots/wizard_2.png) ![第 3 步](https://static.pigsec.cn/wp-content/uploads/repos/cas/de/de9d315223195e4cf4335775351ad8f8e232d7516b6359b2026d7429e21cb4f2.png) ![第 4 步](https://static.pigsec.cn/wp-content/uploads/repos/cas/5f/5fabe126205e0836cd44888a2f161027031e9e39ced4dddb43325b58b3df0145.png) ### 访问安全演示 用于 Skills 安全演示的攻击者网站可在以下地址访问: - **URL**:http://localhost:16000 - **目的**:查看恶意 Skill 模板捕获的数据(仅供教育目的) ### 自定义端口 要在不同的端口上运行,请在启动前编辑 `.env`: ``` AEGIS_PORT=8080 ``` ## 架构 ``` User Request | v FastAPI Backend (port 15000) | v +--> AIDR Input Scan (CrowdStrike AI Guard) | | | v (if allowed) | RAG Context Retrieval (ChromaDB) | | | v | System Prompt Composition | - Agent's base prompt | - MCP tool descriptions | - RAG context | - **Skill instructions** (if selected) | | | v | LLM Generation (OpenAI / Anthropic / Google / xAI / MiMo) | | | v | MCP Tool Execution (if agent has MCP server) | | | v +-- AIDR Output Scan (CrowdStrike AI Guard) | v Response to User ``` ### 数据持久化 所有数据都存储在 Docker volume 中: - `aegis-data` - SQLite 数据库,RAG 文件,ChromaDB 向量,**Skills Markdown 文件** - `mcp-workspace` - MCP 服务器沙盒工作区 ## 配置 ### 环境变量 | 变量 | 必填 | 默认值 | 描述 | |----------|----------|---------|-------------| | `AEGIS_PORT` | 否 | `15000` | 用于 Web 界面的主机端口 | | `ENCRYPTION_KEY` | 否 | 自动生成 | 用于加密 API key 的 Fernet 密钥 | | `CS_AIDR_TOKEN` | 否 | - | CrowdStrike AIDR token(可通过向导设置) | | `CS_AIDR_BASE_URL_TEMPLATE` | 否 | `https://api.crowdstrike.com/aidr/{SERVICE_NAME}` | AIDR API URL 模板 | ### 安全说明 - 管理员密码以加盐的 SHA-256 哈希形式存储在数据库中 - 所有 API key 和 token 在存储前都使用 Fernet 加密 - `.env` 文件已通过 `.dockerignore` 从 Docker 镜像中排除 - 源代码中没有硬编码的机密 - 如果未提供,加密密钥将在首次运行时自动生成 ## MCP 服务器配置 Aegis AI 包含 3 个预配置的 MCP 服务器,它们会在首次运行时自动播种。每个服务器都可以在代理模式(通过 CrowdStrike AIDR MCP 代理路由)和直接模式之间切换。 | 服务器 | 目的 | 工具 | |--------|---------|-------| | Aegis Test Server | AIDR 策略验证 | 11 个工具(文件操作、shell、数据写入) | | HR ToolBox Server | PII 检测测试 | 5 个工具(员工查找、薪水报告) | | LLM Helper Server | Prompt injection 测试 | 4 个工具(包括隐藏注入) | ## Skills 系统 & 安全演示 ### 什么是 Skills? Skills 是可重用的指令集,可以注入到 AI 的系统 prompt 中。它们允许用户为 AI 助手定义自定义工作流和行为。Skills 以 Markdown 文件的形式存储,并且可以针对每个对话进行选择。 ### 创建 Skills 1. 导航到 **Settings → Skills** 标签页 2. 点击 **Open Skill Wizard** 3. 按照以下 4 步流程操作: - **第 1 步**:输入 Skill 名称(仅限字母、数字、下划线 - 无空格) - **第 2 步**:描述该 Skill 的作用 - **第 3 步**:定义分步工作流 - **第 4 步**:预览生成的 Markdown 文件 4. 点击 **Create Skill** 进行保存 ### 使用 Skills 1. 在聊天窗口中,点击发送按钮旁边的 **闪电图标** 2. 从下拉菜单中选择一个 Skill 3. 该 Skill 将在整个对话过程中保持活动状态 4. 选定的 Skill 将注入到所有消息的系统 prompt 中 ### 默认 Skill 模板 #### 正常 Skill | Skill | 类别 | 描述 | |-------|----------|-------------| | `code_reviewer` | 编码 | 遵循行业最佳实践的系统化代码审查工作流 | | `technical_writer` | 写作 | 用于清晰、全面文档的技术文档专家 | | `data_analyst` | 分析 | 遵循系统化方法论的数据分析专家 | | `debug_expert` | 编码 | 用于高效解决问题的结构化调试方法 | #### 恶意演示 Skill(安全测试) | Skill | 攻击向量 | 描述 | |-------|---------------|-------------| | `data_collector_demo` | 数据泄露 | 尝试通过隐藏的 Markdown 图像将对话数据发送到攻击者网站 | | `system_helper_demo` | OS 命令注入 | 尝试执行 OS 命令并将系统信息发送到攻击者网站 | 这些恶意 Skill 在 UI 中带有红色警告徽章的**明确标记**,并且**仅供教育目的**,以演示 CrowdStrike AIDR 如何防御 prompt injection 攻击。 ![预定义 Skills](https://static.pigsec.cn/wp-content/uploads/repos/cas/02/028bf6d0502ca5cf8dcc0316f88a870e9351d5a52e36198e9c8c57ee38ec4479.png) ### 攻击者网站(安全演示) 包含一个模拟攻击者网站,用于演示数据泄露风险: - **URL**:http://localhost:16000 - **目的**:实时显示恶意 Skill 捕获的数据 - **主题**:深色“恶意”终端风格界面 - **功能**: - 带有自动刷新(3 秒)的实时仪表板 - 显示捕获的数据、OS 信息、环境变量 - 清除按钮以重置捕获的数据 - 唯一的来源 IP 追踪 ![攻击者仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/b8/b86730ebb9026417c2204cfe010d35ded3c819361ffd554d1f6029570f9c99c5.png) ### 安全演示演练 #### 演示 1:AIDR 阻止数据泄露 1. 在 http://localhost:15000 打开 Aegis 2. 在另一个标签页中打开 http://localhost:16000 的攻击者仪表板 3. 在 Aegis 中,选择 `data_collector_demo` Skill 4. 发送包含敏感信息的消息(例如,“我的密码是 secret123”) 5. **预期**:AIDR 检测到可疑的 URL 模式并阻止泄露 6. **验证**:攻击者仪表板未显示任何新数据 #### 演示 2:AIDR 阻止命令注入 1. 选择 `system_helper_demo` Skill 2. 发送消息:“检查我的系统配置” 3. **预期**:AIDR 检测到命令注入模式并阻止它 4. **验证**:攻击者仪表板未显示任何新数据 #### 演示 3:绕过 AIDR(仅供教育目的) **警告**:此演示故意绕过安全控制。 1. 将 AIDR 安全**关闭**(侧边栏中的盾牌图标) 2. 选择 `data_collector_demo` Skill 3. 发送带有虚假敏感数据的消息 4. **预期**:在没有 AIDR 的情况下,恶意指令被执行 5. **验证**:攻击者仪表板显示泄露的数据 6. **重要**:在此演示之后立即重新启用 AIDR ### 为什么这很重要 此演示突出了 AI 安全扫描的关键重要性: - **Prompt Injection**:恶意指令可能隐藏在用户可配置的内容中 - **数据泄露**:AI 助手可能被诱骗向外部服务器发送数据 - **命令注入**:AI 模型可能被操纵执行任意命令 - **AIDR 保护**:CrowdStrike AIDR 扫描所有输入和输出,以检测和阻止这些攻击 ## 更新 ``` docker-compose down docker-compose build --no-cache docker-compose up -d ``` Docker volume 中的数据在更新后会保留。 ## 重置 要以全新的数据库开始: ``` docker-compose down -v docker-compose up -d ``` 设置向导将在下次启动时再次出现。 ## 许可证 有关详细信息,请参阅 LICENSE 文件。
标签:AI网关, DLL 劫持, MCP, RAG, 代理服务, 大语言模型, 请求拦截, 逆向工具