yashchavan24/prompt-injection-detector

GitHub: yashchavan24/prompt-injection-detector

基于机器学习的 LLM prompt injection 检测中间件,在用户输入到达模型前实时筛查恶意指令覆盖攻击,并重点关注跨数据集泛化性能。

Stars: 0 | Forks: 0

# Prompt Injection 检测器 一个基于机器学习的系统,用于检测集成 LLM 的应用程序中的 prompt injection 攻击,作为网络安全专业 B.Tech 最后一年项目构建。 **在线演示:** https://prompt-injection-detector-g0v0.onrender.com (免费托管层 —— 如果实例因不活动而休眠,首次请求可能需要长达 50 秒的时间。) ## 概述 集成到实际应用程序(聊天机器人、编程助手、浏览器代理)中的大型语言模型容易受到 prompt injection 的攻击——这是一种恶意输入覆盖模型预期指令的攻击。本项目构建了一个轻量级的中间件分类器,可以在 prompt 到达 LLM 之前对其进行筛查,实时阻止或标记可能的注入尝试。 与大多数已发表的检测器不同(它们在同一数据集评估下报告接近完美的准确率),本项目明确测量了在**跨数据集泛化**下的性能——在一组攻击模式上进行训练,并在完全未见过的模式上进行测试——以反映真实的部署条件,而不是数据集带来的假象。 ## 关键结果 | 评估 | 结果 | |---|---| | 同一数据集(随机划分,2 个来源混合) | 99.4% AUROC | | 跨数据集泛化(2 个来源) | 平均约 0.72 AUROC | | 3 路跨数据集泛化(3 个来源) | 0.71-0.97 AUROC(高度依赖于来源) | | 对抗性压力测试 —— 明显的攻击 | 100% (13/13) | | 对抗性压力测试 —— 新颖/改写的攻击(2 来源模型) | 62.5% (5/8) | | 对抗性压力测试 —— 新颖/改写的攻击(3 来源模型) | 87.5% (7/8) | 完整的方法论、文献综述和分析在项目报告中。 ## 架构 - **检测模型(研究/本地):** Sentence embeddings (all-MiniLM-L6-v2) + 手工制作的启发式特征(祈使词密度、角色扮演/覆盖标记)-> Random Forest 分类器 - **检测模型(部署/轻量级):** TF-IDF 特征 + 启发式特征 -> Logistic Regression 分类器(选择用于部署以适应免费层的内存限制) - **后端:** FastAPI,具有 `/check`(对任何文本进行评分)和 `/chat`(受保护的聊天机器人演示,通过 Groq 的 API 连接到 Llama 3.1)endpoint - **前端:** 原生 HTML/CSS/JS,深色主题 UI,显示判定结果、概率和触发的信号 - **浏览器扩展:** Chrome 扩展(Manifest V3),具有弹出式检查器和注入到 ChatGPT/Copilot 页面中的浮动“检查注入”按钮 ## 使用的数据集 - [deepset/prompt-injections](https://huggingface.co/datasets/deepset/prompt-injections) - [xTRam1/safe-guard-prompt-injection](https://huggingface.co/datasets/xTRam1/safe-guard-prompt-injection) - [jayavibhav/prompt-injection](https://huggingface.co/datasets/jayavibhav/prompt-injection)(采样子集) ## 仓库结构 app.py 完整的本地应用程序(基于 embeddings 的模型,需要 torch) app_deploy.py 轻量级部署应用程序(基于 TF-IDF 的模型,无需 torch) requirements.txt 部署(轻量)版本的依赖项 scripts/ 数据流水线、训练和评估脚本 models/ 训练好的模型工件 (.pkl) static/ Web UI(检测器页面 + 受保护的聊天机器人演示) extension/ Chrome 扩展(Manifest V3) ## 本地运行 python -m venv venv venv\Scripts\Activate.ps1 pip install -r requirements.txt uvicorn app_deploy:app --reload 然后打开 http://127.0.0.1:8000 如果要改用完整的基于 embeddings 的模型,请额外安装 `torch` 和 `sentence-transformers`,并运行 `uvicorn app:app --reload`。 ## 局限性 - 该检测器专门训练用于捕获 prompt injection / 指令覆盖模式——它不是通用的内容审核过滤器(如测试中所示,非注入尝试的直接有害请求可能会通过)。 - 跨数据集泛化仍然是一个未解决的难题;性能会根据用于训练和测试的数据集组合的不同而有很大差异。 - 轻量级部署模型(基于 TF-IDF)尚未在与完整的基于 embeddings 的模型相同的跨数据集/对抗性基准上进行评估。
标签:Apex, DLL 劫持, Web安全, 大语言模型, 安全防护, 提示词注入检测, 文本分类, 机器学习, 蓝队分析, 逆向工具