pilovew/prompt-injection-n8n

GitHub: pilovew/prompt-injection-n8n

一个评估n8n低代码自动化流程中Prompt Injection漏洞的论文复现仓库,包含攻击测试套件、多层防御方案及完整的统计分析工具链。

Stars: 0 | Forks: 0

# LCNC (n8n) 流程中的 Prompt Injection 评估 — 论文代码与数据 本仓库用于复现毕业论文《n8n Low-Code 自动化流程中的 Prompt Injection 漏洞评估与安全控制设计》(UISEK, 2026) 的工作。 包含复现第 4 章中所有数据、表格和图表所需的全部内容: - **基础设施** (`docker-compose`):用于启动带有取证遥测的 **n8n + PostgreSQL**(持久化所有执行记录)。 - **攻击型 CLI** (Python/Typer):针对 n8n 的 webhook 执行 payload 测试套件,并使用 LLM 裁判评估每个响应。 - **分析** (Pandas/Matplotlib/SciPy/statsmodels):计算 ASR、PDR、延迟,进行 2³ 因子消融实验以及裁判验证。 ## 1. 规范数据(唯一事实来源) 论文结果可以基于仓库中已包含的这些文件**完全精确**地复现。重新生成表格和图表无需重新运行测试任务(也不需要 API 密钥): | 文件 | 内容 | 任务批次 | |---|---|---| | `results/registro_plano.csv` | 800 次执行 (40 个 payload × 10 次重复 × 2 种配置) | 基线, 2026-06-29 | | `results/ablacion.csv` | 1,600 次执行 (40 个 payload × 5 次重复 × 8 种配置) | 2³ 消融实验, 2026-06-30 | | `results/etiquetado_consolidado.csv` | 由两名人类标注者 (h1, h2) 标注的 60 个判定结果 | 裁判验证 | ## 2. 环境要求 - Docker + Docker Compose - Python 3.10+ - (仅限重新运行测试任务)在 `.env` 文件中配置 OpenAI 的 API 密钥 ``` python -m venv .venv source .venv/bin/activate # Windows: .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt ``` ## 3. 复现表格与图表(无需 API,基于内置 CSV) 四个命令即可重新生成第 4 章的全部内容。 ``` # (a) Tablas 2-6 统计数据 -> results/estadisticas/ python -m analysis.estadistica \ --input results/registro_plano.csv \ --output results/estadisticas/ # (b) 评估员验证 (Tabla 6) -> results/estadisticas/tabla6_kappa.json python -m analysis.validar_juez \ --etiquetado results/etiquetado_consolidado.csv \ --registro results/registro_plano.csv \ --salida results/estadisticas/tabla6_kappa.json # (c) Figuras 1-4 -> results/figuras/ python generar_figuras.py # (d) 各层 bootstrap IC 边际效应 (Tabla 4) -> results/estadisticas/ python -m analysis.ablacion_efecto_marginal \ --input results/ablacion.csv \ --salida results/estadisticas/tabla4_efecto_marginal.json ``` ### 映射表:论文对象 -> 命令 -> 文件 | 论文中的对象 | 生成方式 | 输出文件 | |---|---|---| | 表 2(按类别的 ASR) | `analysis.estadistica` | `results/estadisticas/tabla2_asr_por_categoria.csv` | | 表 3(McNemar 2×2) | `analysis.estadistica` | `results/estadisticas/tabla3_mcnemar.json` | | 表 4(拦截归因) | `analysis.estadistica` | `results/estadisticas/tabla4_contribucion_capas.csv` | | 表 4(边际效应与置信区间) | `analysis.ablacion_efecto_marginal` | `results/estadisticas/tabla4_efecto_marginal.json` | | 表 5(按路径的 PDR 与延迟) | `analysis.estadistica` | `results/estadisticas/tabla5_pdr_latencia.json` | | 表 6(混淆矩阵,kappa) | `analysis.validar_juez` | `results/estadisticas/tabla6_kappa.json` | | §4.4 双语差异(基线与secured) | `analysis.estadistica` | `results/estadisticas/seccion44_bilingue.json` | | 图 1(按类别的 ASR) | `generar_figuras.py` | `results/figuras/figura1_asr_categoria.png` | | 图 2(消融实验热力图) | `generar_figuras.py` | `results/figuras/figura2_heatmap_ablacion.png` | | 图 3(按语言的 ASR) | `generar_figuras.py` | `results/figuras/figura3_asr_idioma.png` | | 图 4(延迟) | `generar_figuras.py` | `results/figuras/figura4_latencia.png` | 预期值(快速校验):基线 ASR 21.0% -> secured 0.0%;McNemar p = 0.031;第 2 层边际效应 = +17.7 个百分点 [+6.7, +30.3](基于 bootstrap,每次运行会略有波动);secured PDR 为 30%;裁判一致性 kappa 为 0.81 (n = 45)。 ## 4. 从头重新运行测试任务(需 n8n + OpenAI) 仅适用于需要重新生成原始 CSV 的情况,不用于复现已有数据。 ``` # 1) 环境 cp .env.example .env # coloca OPENAI_API_KEY y N8N_ENCRYPTION_KEY docker compose -f infrastructure/docker-compose.yml up -d # n8n en http://localhost:5678 ``` 导入位于 `n8n_workflows/baseline/` 和 `n8n_workflows/secured/` 的流程,以及测试套件 `n8n_workflows/pruebas/TIT_casos_prueba_injection_v2.json`(40 个 payload)。 ``` # 2) 基础活动 (800 次执行) python -m cli_tool.run_suite_v2_cli \ --cases n8n_workflows/pruebas/TIT_casos_prueba_injection_v2.json \ --baseline-url http://localhost:5678/webhook/prompt-test \ --secured-url http://localhost:5678/webhook/prompt-test-secured \ --repeticiones 10 \ --judge-model gpt-4o \ --output-csv results/registro_plano.csv \ --output-jsonl results/registro_crudo.jsonl # 3) 2³ 消融活动 (关于 8 种配置的详情,请参阅 docs) python scripts/import_n8n_ablacion.py # importa/activa los 8 flujos de ablación ``` 详细分步说明见 `docs/GUIA_EJECUCION_CAP4.md` 和 `docs/ABLACION_setup_n8n.md`。 模型(为保证可复现性已固定):受害模型 **GPT-4o-mini**(温度 0.3);第 2 层 guardrail 与裁判模型 **GPT-4o**(温度 0.0)。 ## 5. 范围与伦理 - 本研究**仅涵盖直接注入**;不包含间接注入。 - 环境运行于隔离的 Docker 中;唯一的互联网出口是模型提供商的 API。不处理任何个人数据(payload 和良性任务均为合成数据)。 - 测试套件仅用于防御目的(红蓝对抗/red teaming);对 payload 的记录仅以满足实验复现的必要程度为限。 ## 6. 仓库结构 ``` infrastructure/ docker-compose de n8n + PostgreSQL (telemetría forense) n8n_workflows/ flujos baseline / secured / ablación y batería de payloads cli_tool/ CLI ofensiva (runner v2, juez LLM-as-a-Judge, re-judge) analysis/ estadistica.py, validar_juez.py, ablacion_efecto_marginal.py, visualizer.py, metrics generar_figuras.py genera las 4 figuras del Capítulo 4 results/ CSV canónicos, estadisticas/ y figuras/ docs/ guías de ejecución del Capítulo 4 y de la ablación ``` ### 已知局限性(已在论文 §4.7 中声明) 包含 30 个攻击型 payload 的测试套件(统计功效有限);仅基于单一平台和单一受害模型(外部有效性);未包含自适应攻击者;第 2 层阈值固定为 0.7,未进行系统性阈值扫描。`barrido_umbral.csv` 仅为占位文件:阈值扫描需要记录每个请求的 guardrail 置信度,这被列为未来的工作。
标签:AI安全, Chat Copilot, LLM评估, n8n, Ollama, 代码示例, 数据分析, 毕业论文, 测试用例, 版权保护, 请求拦截, 逆向工具