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, 企业知识平台安全, 取证日志, 可扩展安全测试, 多模型基准测试, 大语言模型安全, 客户支持机器人安全, 对抗性攻击, 提示注入, 机密管理, 模块化架构, 模型鲁棒性评估, 漏洞评分卡, 红队自动化, 自动化渗透测试, 自动驾驶代理安全, 证据驱动安全, 金融决策系统安全, 集群管理, 零手动干预, 高可重复性测试