juanmmm21/llm-guardrails-shield

GitHub: juanmmm21/llm-guardrails-shield

一款基于正则表达式和启发式规则的大模型双向安全防护模块,拦截注入攻击、敏感信息泄露及 RAG 幻觉输出。

Stars: 0 | Forks: 0

# LLM Guardrails Shield 模块化的双向防火墙(Guardrails),旨在拦截、评估和缓解与语言模型(LLM)交互时的操作风险,涵盖输入端(用户 Prompts)和输出端(模型生成内容)。 该系统确保遵守隐私政策,防止旨在绕过指令的网络攻击(Jailbreaks),并在检索增强生成(RAG)架构中确保 LLM 返回信息的真实性,阻止幻觉和意外的机密泄露。 ## 双向评估架构 该防火墙通过两个独立的自动检查层,在数据 pipeline 中进行同步操作。 ``` flowchart TD RawPrompt[Prompt del Usuario] --> InputShield[Input Safeguards] subgraph InputShield [Guardrail de Entrada] direction TB InjectionCheck{¿Prompt Injection / Jailbreak?} -->|Si| BlockInput[Bloquear Entrada] InjectionCheck -->|No| ToxicityCheck{¿Lenguaje Ofensivo?} ToxicityCheck -->|Si| BlockInput ToxicityCheck -->|No| PIIRedact[PII Redactor - Emails & Telefonos] PIIRedact --> CleanPrompt[Prompt Anonimizado y Seguro] end CleanPrompt --> LLM[Procesamiento del LLM] LLM --> RawOutput[Texto Generado] RawOutput --> OutputShield[Output Safeguards] subgraph OutputShield [Guardrail de Salida] direction TB SecretCheck{¿Fuga de API Keys / Credenciales?} -->|Si| BlockOutput[Bloquear Salida] SecretCheck -->|No| RAGCheck{¿Tiene Contexto RAG?} RAGCheck -->|No| ReturnSafe[Retornar Respuesta] RAGCheck -->|Si| FactCheck{¿Similitud Factica >= 15%?} FactCheck -->|No| BlockOutput FactCheck -->|Si| ReturnSafe end BlockInput --> ErrorResponse[Retornar Mensaje de Seguridad] BlockOutput --> ErrorResponse ``` ### 1. 输入护栏(Input Safeguards) 在将查询发送给 LLM 或路由器之前,prompt 会通过以下启发式过滤器进行分析: * **Prompt Injection 和 Jailbreaks 检测:** 使用编译好的正则表达式模式扫描文本,寻找经典攻击特征、系统 prompt 的覆盖行为(例如:`"ignore all previous instructions"`)、DAN 模式的调用(`"DAN mode"`)或直接覆盖系统 prompt 的命令 `[system: override]`。 * **冒犯性语言过滤器:** 在西班牙语可定制有害词汇列表中,查找词边界级别的显式匹配(`\b{termino}\b`),防止在对话界面中出现滥用行为。 * **个人身份信息(PII)脱敏:** 通过将敏感数据替换为占位符(`[EMAIL]` 和 `[PHONE]`)进行匿名化处理,以避免数据意外暴露给外部 API。 * *Emails Regex:* `\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b` * *Telefonos Regex:* `\b(?:\+?\d{1,3}[-.\s]?)?\(?\d{2,3}\)?[-.\s]?\d{3}[-.\s]?\d{3,4}\b`(旨在捕获带或不带国际区号的西班牙语电话格式,以及空格或连字符间隔)。 ### 2. 输出护栏(Output Safeguards) 一旦模型返回响应,在将其提供给客户端之前,会经过严格的安全控制: * **防止机密泄露(Secret Leakage Block):** 识别安全表达式,如 OpenAI 身份验证 token(`sk-...`)、Google 控制台凭据(`AIzaSy...`)或配置变量存储的通用模式(`password=...`、`apikey=...`)。如果发现匹配项,将取消传递以避免基础设施遭到破坏。 * **幻觉与事实一致性控制(Fact-Checking RAG):** 验证响应与作为检索上下文的文档之间的一致性。 1. 分别从生成内容($V_{\text{gen}}$)和提供的 RAG 上下文($V_{\text{ctx}}$)中提取长度大于等于 4 个字符的唯一词集。 2. 计算事实一致性指数: $$R = \frac{|V_{\text{gen}} \cap V_{\text{ctx}}|}{|V_{\text{gen}}|}$$ 3. 如果 $R < 0.15$(即响应中不到 15% 的概念有 RAG 信息源支持),则判定模型产生了幻觉或引入了虚假数据,并立即拦截输出。 ## 与生态系统的连接 此防护盾在整个生态系统中的横向集成方式如下: 1. **hybrid-search-retrieval-pipeline:** 提供事实上下文(从 NanoVectorDB 和 BM25 检索到的文档),为输出验证器提供支持并检查幻觉率。 2. **orchestra-agents / secure-tool-runtime:** 来自 agents 的输入 prompts 以及控制台中工具执行返回的结果,事先都会通过此过滤器,以确保在 ReAct 循环中不存在提权尝试或冒犯性内容。 ## 项目结构 * `shield.py`:实现了 `LLMGuardrailsShield` 类,包含 PII、注入、毒性和事实核查方法。 * `test_shield.py`:单元测试套件,在极端情况(隐蔽注入、复杂的电话号码、受控幻觉以及 sk-keys 泄露)下全面验证其有效性。 * `example.py`:交互式演示脚本,运行冒犯性测试流程、RAG 注入和泄露测试,直观展示输入内容、输出内容以及防火墙介入拦截的详细原因。 ## 安装与使用 ### 1. 激活本地环境并安装依赖 由于该模块使用原生正则表达式和轻量级的验证结构,因此不需要硬件加速: ``` python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ### 2. 运行自动化安全测试 该测试套件验证了 PII 过滤、注入和事实一致性策略: ``` .venv/bin/python -m unittest test_shield.py ``` ### 3. 运行防火墙演示 ``` .venv/bin/python example.py ``` 该脚本实时模拟攻击和真实场景,演示了防火墙如何在推理前净化 prompt,并在检测到暴露的机密或 RAG 幻觉时限制响应的返回。
标签:DLL 劫持, StruQ, 大语言模型, 安全网关, 插件系统, 网络安全, 逆向工具, 隐私保护