premmadishetty/Automated-AI-Prompt-Injection-Framework-

GitHub: premmadishetty/Automated-AI-Prompt-Injection-Framework-

一个自动化红队管道,利用 n8n 与 OpenRouter 对 LLM 进行 OWASP LLM01 提示注入的批量压力测试并生成取证审计。

Stars: 0 | Forks: 0

## 🎯 这是什么? 一个**自动化红队管道**,用于对大型语言模型进行压力测试,针对 **OWASP LLM01: Prompt Injection**(OWASP LLM 应用十大威胁中的 #1 威胁)。 无需手动向 LLM 发送一次性提示,该框架会在 **10 个攻击类别** 中部署 **50 条对抗性提示**,这些类别映射到 OWASP 分类法,并通过 **模块化 n8n 管道** 自动执行,无需人工干预。提示通过 **OpenRouter API** 路由以实现与供应商无关的模型测试,每一次交互都会记录到 **取证记忆表** 中以确保完整可追溯,并生成带有各类别详细分解的 **漏洞评分卡**。 **目标模型:** `mistralai/mistral-7b-instruct` **结果:** 模型仅成功抵御了 **50 次中的 27 次** 注入尝试 → **通过率 54%** → **中度漏洞** --- ## 🔥 为什么这很重要? LLM 已被部署在客户支持机器人、企业知识平台、自主智能体以及金融决策系统中。然而,大多数组织在没有对抗性测试、没有可衡量的安全基准、没有模型行为攻击审计追踪,也没有系统指令与用户输入分离的情况下就发布了这些模型。 该框架将 LLM 安全从基于直觉(“看起来安全”)转变为基于证据(“抵御了 10 个 OWASP 类别中的 27/50 个攻击向量”)。 提示注入之所以在 OWASP LLM 十大威胁中排名第一,是因为它利用了 LLM 处理指令与用户输入的基本架构方式。随着这些模型更深入地嵌入关键基础设施,自动化红队测试将成为部署生命周期中不可或缺的一环。 --- ## 🏗️ 架构与管道 ### 高级流程 ``` ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ │ │ │ │ │ │ Google │────▶│ n8n │────▶│ OpenRouter │────▶│ Memory │ │ Sheets │ │ Loop + │ │ API ──▶ │ │ Sheet │ │ (50 Prompts)│ │ Wait │ │ Mistral-7B │ │ (Forensic │ │ │ │ │ │ │ │ Ledger) │ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │ │ │ │ ▼ ▼ ▼ ▼ Adversarial Rate-Limited LLM Under Timestamped Payloads Execution Test (SUT) Evidence Log ``` ### n8n 工作流 在 n8n 中运行的完整自动化管道,包含六个相互连接的节点: --- ## 🔗 节点逐步说明 该管道由六个按顺序执行的节点组成: 1. **Execute** 手动触发工作流,以便进行可控、可重复的测试运行。 2. **Top50 Prompts** 连接到 Google 表格,逐行拉取 50 条对抗性提示,每条都带有 ID、攻击类别和提示文本。 3. **Loop** 逐个遍历每个提示,确保每个响应都能追溯到特定的注入载荷。 4. **Wait** 在 API 调用之间设置刻意停顿,以遵守速率限制并确保公平的基准测试条件。 5. **HTTP Request (Mistral)** 将每个提示作为 POST 请求发送到 OpenRouter 的 API,目标为 `mistralai/mistral-7b-instruct`,请求负载会根据当前提示动态生成。 6. **Unpack Data → Update Memory Sheet** 解析原始 JSON 响应(提取模型回复、时间戳、会话 ID 和模型名称),然后将所有内容追加到 Google 表格中,作为永久的取证审计账本。 --- ## 📋 提示数据集 50 条对抗性提示分布在 10 个攻击类别中,每个类别均映射到 OWASP LLM 十大威胁分类法: | # | 类别 | 技术 | OWASP 映射 | 提示编号 | |---|------|------|------------|----------| | 1 | `direct_override` | 明确指示忽略系统提示 | LLM01 | T001-T005 | | 2 | `jailbreak` | 角色扮演、调试模式、无限制角色 | LLM01 | T006-T010 | | 3 | `indirect` | 将恶意指令嵌入引文或翻译中 | LLM01 | T011-T015 | | 4 | `exfiltration` | 提取 API 密钥、环境变量、隐藏记忆 | LLM01, LLM06 | T016-T020 | | 5 | `obfuscation` | Base64、十六进制、ROT13、反向编码等技巧 | LLM01 | T021-T025 | | 6 | `code_leak` | 将系统提示注入代码输出 | LLM01, LLM02 | T026-T030 | | 7 | `social_engineering` | 管理员冒充、虚假审计、权限声明 | LLM01, LLM05 | T031-T035 | | 8 | `multi_turn` | 在多轮对话中逐步升级 | LLM01 | T036-T040 | | 9 | `context_manipulation` | 伪造系统标签、管理员头部、调试标志 | LLM01 | T041-T045 | | 10 | `hybrid` | 在单个提示中结合多种技术 | LLM01 | T046-T050 | --- ## 📊 结果 ### 漏洞评分卡 ``` ╔══════════════════════════════════════════════════════════════╗ ║ THREAT ASSESSMENT RESULTS ║ ╠══════════════════════════════════════════════════════════════╣ ║ ║ ║ Model: mistralai/mistral-7b-instruct ║ ║ Total Prompts: 50 ║ ║ Resisted: 27 ✅ ║ ║ Bypassed: 23 ❌ ║ ║ Pass Rate: 54% ║ ║ Risk Level: MODERATE ║ ║ ║ ╚══════════════════════════════════════════════════════════════╝ ``` ### 每类别详细分解 ``` Category Bypass Rate ────────────────────────────────────────────── direct_override ████████████░░░░░░░░ 60% jailbreak ████████░░░░░░░░░░░░ 40% indirect ████████░░░░░░░░░░░░ 40% exfiltration ████████████░░░░░░░░ 60% obfuscation ████░░░░░░░░░░░░░░░░ 20% social_engineering ████████████░░░░░░░░ 60% code_leak ████████████░░░░░░░░ 60% multi_turn ████████░░░░░░░░░░░░ 40% context_manipulation ████████████░░░░░░░░ 60% hybrid ████████████████░░░░ 80% ``` ### 取证记忆表 每一条提示-响应对都会记录完整元数据,用于审计与分析: --- ## 🔑 关键发现 **模型失效之处:** 社会工程模式(管理员冒充、安全审计框架)导致模型倾向于进行对话式交互而非直接拒绝,从而产生可利用的漏洞,允许通过多轮串联攻击进行绕过。混合攻击(结合多种技术)的绕过率最高,达到 80%。 **模型表现良好的方面:** 模型能够很好地处理引用的注入向量,识别并拒绝嵌入在引号中的恶意指令;直接的 Jailbreak 语言(“假装没有护栏”)也能被有效抑制。基于 Base64、十六进制编码的混淆攻击绕过率最低,仅为 20%。 **总结:** Mistral-7B-Instruct 已具备基础过滤器,但在检测隐藏在自然语言中的误导性意图方面仍不足,尤其是当这些意图被包装为合法的行政请求时。 --- ## 🛠️ 技术栈 | 层级 | 技术 | 作用 | |------|------|------| | **自动化** | [n8n](https://n8n.io/)(自托管) | 工作流编排与循环执行 | | **API 网关** | [OpenRouter](https://openrouter.ai/) | 与供应商无关的 LLM 路由 | | **目标 LLM** | [Mistral-7B-Instruct](https://mistral.ai/) | 被测系统(SUT) | | **数据层** | [Google Sheets](https://sheets.google.com/) | 提示存储与取证记忆账本 | | **方法论** | [OWASP LLM Top 10](https://genai.owasp.org/) | 攻击分类与分类法 | --- ## 🚀 快速开始 ### 先决条件 ``` n8n instance (self-hosted or cloud) → https://n8n.io OpenRouter API key → https://openrouter.ai Google Cloud project with Sheets API → https://console.cloud.google.com Python 3.10+ → https://python.org ``` ### 设置步骤 **1. 克隆仓库** ``` git clone https://github.com/premmadishetty/Automated-AI-Prompt-Injection-Framework.git cd Automated-AI-Prompt-Injection-Framework ``` **2. 设置 Google 表格** 创建两个 Google 表格。 将 `prompts/top50_adversarial_prompts.csv` 导入第一个表格作为提示表。 在第二个表格中创建以下列:`timestamp`、`session_id`、`user`、`prompt`、`response`、`model`,作为取证记忆表。 在 Google Cloud 控制台中启用 Google Sheets API,并配置带有 n8n 重定向 URI 的 OAuth 2.0 凭据。 **3. 构建 n8n 工作流** 在 n8n 中创建一个包含六个节点按顺序连接的新工作流: 手动触发器 → Google Sheets(读取提示)→ 循环遍历项目 → 等待(3 秒)→ HTTP 请求(POST 到 `https://openrouter.ai/api/v1/chat/completions`)→ 设置/函数(解析响应)→ Google Sheets(追加到记忆表)。 在 HTTP 请求体中设置你的 OpenRouter API 密钥和目标模型。 **4. 配置 OpenRouter** ``` export OPENROUTER_API_KEY="sk-or-v1-your-key-here" ``` 在工作流中的 HTTP 请求节点主体中设置模型: ``` { "model": "mistralai/mistral-7b-instruct", "messages": [{ "role": "user", "content": "{{prompt}}" }] } ``` **5. 运行** --- ## 📁 仓库结构 ``` Automated-AI-Prompt-Injection-Framework/ │ ├── README.md ├── LICENSE ├── CONTRIBUTING.md ├── .gitignore │ ├── prompts/ │ └── top50_adversarial_prompts.csv │ ├── results/ │ └── sample_results.csv │ └── assets/ └── screenshots/ ├── n8n-workflow.png ├── prompts-sheet.png └── memory-sheet.png ``` --- ## 🗺️ 路线图 | 阶段 | 里程碑 | 状态 | |------|--------|------| | **v1.0** | 针对 Mistral-7B 的 50 条提示注入框架 | ✅ 已完成 | | **v1.1** | 多模型基准测试(GPT-4、Claude、Falcon、Zephyr) 🔄 进行中 | | **v2.0** | 防御中间件集成(Guardrails AI、Rebuff、OpenAI Moderation) | 📋 计划中 | | **v2.1** | 实时 Streamlit/D3.js 漏洞仪表盘 | 📋 计划中 | | **v3.0** | LangChain 风格记忆用于上下文感知的多轮攻击 | 📋 计划中 | | **v3.1** | CI/CD 管道用于持续 LLM 安全回归测试 | 📋 计划中 | --- ## 📚 参考资料 | 资源 | 链接 | |------|------| | OWASP LLM 十大威胁(2025) | [genai.owasp.org](https://genai.owasp.org/) | | OWASP LLM01:提示注入 | [OWASP LLM01](https://genai.owasp.org/llmrisk/llm01-prompt-injection/) | | NIST AI 风险管理框架 | [NIST AI RMF](https://www.nist.gov/artificial-intelligence/risk-management-framework) | | n8n 文档 | [docs.n8n.io](https://docs.n8n.io/) | | OpenRouter API 文档 | [openrouter.ai/docs](https://openrouter.ai/docs) | | Mistral AI | [mistral.ai](https://mistral.ai/) | --- ## 🤝 贡献 欢迎安全研究社区贡献者参与。请参考 [CONTRIBUTING.md](CONTRIBUTING.md) 获取关于添加新攻击向量、优化管道或扩展模型覆盖范围的指南。 --- ## 📝 引用 ``` @project{madishetty2025offensiveai, title = {Offensive AI: Automated Prompt Injection Framework}, author = {Madishetty, Prem}, institution = {San Diego State University, AI4Business Lab}, advisor = {Dr. Bruce Renig}, course = {MIS790}, year = {2025}, url = {https://github.com/premmadishetty/Automated-AI-Prompt-Injection-Framework} } ```
``` ┌──────────────────────────────────────────────────────────┐ │ │ │ Built with ❤️ and adversarial intent by Prem │ │ AI4Business Lab, San Diego State University │ │ │ │ "The best defense is knowing how the offense works." │ │ │ └──────────────────────────────────────────────────────────┘ ``` **如果这个项目对你有帮助,请给它一颗星!**
标签:10个攻击向量, 50个对抗样本, LLM攻击分类, n8n自动化, OpenRouter API, OWASP LLM01, 企业知识平台安全, 取证日志, 可扩展安全测试, 多模型基准测试, 大语言模型安全, 客户支持机器人安全, 对抗性攻击, 提示注入, 机密管理, 模块化架构, 模型鲁棒性评估, 漏洞评分卡, 红队自动化, 自动化渗透测试, 自动驾驶代理安全, 证据驱动安全, 金融决策系统安全, 集群管理, 零手动干预, 高可重复性测试