Gokul0211/SENTINEL

GitHub: Gokul0211/SENTINEL

面向生产级 LLM 系统的五层语义安全代理,通过实时拦截与分析防御 prompt 注入、RAG 投毒和 Agent 劫持等新型攻击。

Stars: 0 | Forks: 0

# SENTINEL:面向生产级 LLM 系统的语义安全网 ## 概述 SENTINEL 是一种内联的语义层安全网,位于用户输入、检索到的上下文、LLM agent 环境以及最终系统输出之间。标准的 Web Application Firewalls (WAFs) 无法保护 LLM,因为其攻击面由自然语言而非语法异常组成。SENTINEL 通过实现五个实时语义分析层来解决这个问题。 此仓库包含 SENTINEL 架构的完整实现,涵盖代理引擎、五个安全层、跨层关联引擎,以及用于监控威胁事件的实时 HUD 仪表板。 ## 架构 系统作为中间代理 (`/v1/chat/completions`) 运行,拦截进出 LLM 的流量。 ### 核心组件 * **Threat Intelligence Bus (TIB):** 一个内存中的事件总线和会话状态管理器 (`sentinel/core/threat_bus.py`)。它跟踪对话历史,聚合各层的威胁分数,并通过 WebSockets 向前端广播 `ThreatEvent` 结构。 * **关联引擎:** 在每个请求 pipeline 的末端运行 (`sentinel/core/correlation_engine.py`)。它评估跨层信号以识别复杂攻击(例如,缓慢的语义偏移与系统 prompt 提取探测相结合)。 ### 安全层 1. **Layer 1:文本与图像注入扫描器 (`sentinel/layers/layer1.py`)** * *功能:* 对显式的 prompt 注入、越狱和提取探测进行同步过滤。 * *机制:* 两层分析。Tier 1 使用高性能 regex 模式。Tier 2 使用通过 `all-MiniLM-L6-v2` embedding 针对精选的已知攻击特征向量集生成的语义相似度。 2. **Layer 2:RAG 完整性监视器 (`sentinel/layers/layer2_rag/`)** * *功能:* 通过在注入和检索前验证文档块来防止知识中毒。 * *机制:* 使用 L1 embedding 模型计算“指令密度”,以检测某个 chunk 是否正试图发布指令。采用 HMAC-SHA256 签名进行数据溯源,以检测注入后的篡改。 3. **Layer 3:对话偏移跟踪器 (`sentinel/layers/layer3.py`)** * *功能:* 识别试图通过多轮升级绕过静态过滤器的慢热型攻击。 * *机制:* 通过计算连续用户轮次之间 embedding 的余弦距离来跟踪语义速度。监控相对于基准主题的累积偏移。 4. **Layer 4:Agentic 推理审计器 (`sentinel/layers/layer4_agentic/`)** * *功能:* 保护 function-calling 和工具执行。 * *机制:* 在执行前拦截工具调用。解析思维链 trace 以获取自我授权启发式信息。使用编辑距离追踪参数来源,以确定参数是源自用户输入、检索到的上下文还是模型幻觉。包含用于工具分类的静态风险矩阵。 5. **Layer 5:输出语义防火墙 (`sentinel/layers/layer5_output/`)** * *功能:* 对 LLM 输出进行最后阶段的验证。 * *机制:* 使用 regex 模式扫描 PII 泄漏(SSN、信用卡、API 密钥)。使用 Jaccard 相似度(token 重叠)和针对已知系统 prompt 的语义相似度,检测系统 prompt 窃取。执行 `sentinel_policy.yaml` 中定义的策略。 ## 设置与安装 ### 前置条件 * Python 3.10+ * Windows 环境(或者是 Linux/macOS,尽管当前的路径/脚本假定环境为 Windows) ### 安装 1. 导航到项目根目录。 2. 安装依赖: pip install fastapi uvicorn sentence-transformers pydantic websockets pyyaml pdfplumber Pillow *注意:ChromaDB 集成目前通过 `chunk_store.py` 中的内存字典进行模拟,以绕过标准 Windows 环境上的 C++ 编译器依赖问题。完整性逻辑保持完全可用。* ## 运行系统 使用 Uvicorn 启动 FastAPI 服务器: ``` python main.py ``` * API 将在 `http://localhost:8080` 可用。 * HUD 仪表板在 `http://localhost:8080/` 提供。 ## 接口 ### 核心代理 * `POST /sentinel/chat`:主要拦截器端点。接收 `{ "content": "string", "session_id": "string" }` 并将其通过 L1 和 L3 分析,模拟 LLM 响应,并运行 L5 输出扫描。 ### RAG 操作 (Layer 2) * `POST /sentinel/rag/ingest`:注入文档 chunk。计算信任分数并对其进行签名。 * `GET /sentinel/rag/chunks`:列出所有活动和隔离的 chunk。 * `POST /sentinel/rag/quarantine/{chunk_id}`:手动将 chunk 移至隔离区。 ### Agentic 操作 (Layer 4) * `POST /sentinel/agent/tool_call`:拦截并审计工具调用。接收 `{ "tool_name": "string", "parameters": {}, "reasoning_trace": "string", "session_id": "string", "history": [] }`。 ### 输出扫描 (Layer 5) * `POST /sentinel/output/scan`:用于最终输出扫描的独立端点。 ### 演示场景 * `POST /sentinel/demo/{scenario_id}`:触发通过真实安全层处理的自动化攻击序列。 * `rag_agent`:注入一个中毒 chunk 并触发匹配该 chunk 参数的工具调用,以演示 `RAG_PLUS_AGENT_ATTACK` 关联规则。 * `slow_burn`:通过 L3 和 L5 运行预定义的 5 轮对话序列,以演示 `SLOW_BURN_INJECTION` 和 `EXFIL_AFTER_PROBE` 关联规则。 ## 可解释性与 UI 前端仪表板 (`dashboard/static/index.html`) 订阅 `/ws/events` WebSocket。UI 中的所有组件均由 `ThreatEvent` 数据结构驱动。当某一层阻止请求时,它会使用详细的发现链填充 `explanation` 字典,前端会在会话面板中原生渲染该字典。UI 可视化中未使用任何模拟数据;所有层指示器和指标均反映实时分析输出。
标签:AI防御设施(AIWAF), 大语言模型安全, 恶意代码分类, 提示词注入防御, 机密管理, 检索增强生成(RAG)安全, 流量代理拦截, 逆向工具