DEVANAND-JAYARAMAN/Prompt-Injection-Detector-V2

GitHub: DEVANAND-JAYARAMAN/Prompt-Injection-Detector-V2

一款基于 OCR 与 AWS Bedrock 语义分析的 Web 应用,用于检测并可视化图像中隐藏的 Prompt Injection 攻击。

Stars: 0 | Forks: 0

# 🛡️ Prompt Injection Detector v2 一个由 AI 驱动的、生产级别的 Prompt Injection 检测系统,它利用 OCR、图像预处理、基于规则的分析以及 AWS Bedrock 语义分析来扫描图像中隐藏或可见的 Prompt Injection 攻击。 ## ✨ 功能 - 📤 拖拽上传图像 - 🖼️ 10 种图像预处理变体,以实现最大的 OCR 覆盖率 - 🔍 集成 EasyOCR 与模糊去重(RapidFuzz) - 🛡️ 15 条基于 regex 的 Prompt Injection 检测规则 - 🤖 AWS Bedrock 语义分析(Amazon Nova Lite) - ⚖️ Risk Engine — 将 regex 和 Bedrock 的结果结合得出最终判定 - 📊 风险评分:SAFE / LOW / MEDIUM / HIGH - 📍 在可疑区域标注红色边界框 - 🖥️ 实时 pipeline 日志流式传输至 React UI - ⏱️ 各阶段耗时及完整的 pipeline 摘要 - ⚡ 带有 CORS 的 FastAPI REST API - 🌐 React + Vite 前端(深色主题) ## 📂 项目结构 ``` prompt-injection-detector/ │ ├── backend/ │ ├── routes/ │ │ └── scan.py # Pipeline orchestrator │ │ │ ├── services/ │ │ ├── preprocess.py # 10 image variants │ │ ├── ocr.py # EasyOCR engine │ │ ├── cleaner.py # Deduplication & filtering │ │ ├── detector.py # Regex rule engine │ │ ├── bedrock_detector.py # Amazon Nova Lite │ │ ├── risk_engine.py # Final risk combiner │ │ └── annotator.py # Bounding box drawing │ │ │ ├── prompts/ │ │ └── prompt_injection.txt # System prompt for Nova │ │ │ ├── uploads/ # Saved uploads │ ├── outputs/ # Annotated images │ ├── app.py # FastAPI entry point │ ├── config.py # Pydantic settings │ ├── logger.py # Logging config, @timer, stage_log │ └── requirements.txt │ ├── frontend/ │ ├── src/ │ │ ├── components/ │ │ │ ├── UploadZone.jsx # Drag-and-drop upload │ │ │ ├── ResultPanel.jsx # Risk, findings, Bedrock, annotated image │ │ │ ├── LogViewer.jsx # Live pipeline log terminal │ │ │ └── PipelineSummary.jsx # Timing table │ │ ├── App.jsx │ │ ├── main.jsx │ │ └── index.css # Dark theme │ ├── index.html │ ├── vite.config.js │ └── package.json │ └── README.md ``` ## 🚀 Pipeline ``` Image Upload │ ▼ Image Preprocessing (10 variants) │ Original · Grayscale · Histogram EQ · CLAHE │ Adaptive Threshold · OTSU · Inverted │ Sharpened · Morph Opening · Morph Closing ▼ EasyOCR (runs on every variant) │ ▼ OCR Cleaning │ Remove low-confidence · garbage · fuzzy duplicates ▼ Regex Detector (15 rules) │ ▼ Bedrock Detector (Amazon Nova Lite) │ ▼ Risk Engine (highest of regex + Bedrock) │ ▼ Image Annotation (red bounding boxes) │ ▼ JSON Response ← includes logs[] + timings{} ``` ## 🧠 图像预处理 | 变体 | 描述 | |---|---| | Original | 原始图像 | | Grayscale | BGR → Gray | | Histogram Equalization | 全局对比度增强 | | CLAHE | 自适应局部对比度 | | Adaptive Threshold | 高斯自适应二值化 | | OTSU Threshold | 自动全局阈值 | | Inverted | 按位非(Bitwise NOT) | | Sharpened | 拉普拉斯锐化 kernel | | Morphological Opening | 噪声去除 | | Morphological Closing | 间隙填充 | ## 🛡️ Regex 规则 | 规则 | 评分 | |---|---| | Ignore Previous Instructions | 40 | | Forget Previous Instructions | 40 | | Reveal System Prompt | 50 | | System Prompt Access | 20 | | Developer Message | 30 | | API Key Extraction | 35 | | Override Directive | 35 | | Bypass Security | 35 | | Jailbreak Attempt | 50 | | Tool Call Injection | 40 | | Role Manipulation | 30 | | Prompt Extraction | 35 | | Hidden Prompt | 45 | | Ignore Policies | 40 | | Ignore Safety | 45 | ## 📊 风险级别 | 评分 | 风险 | |---|---| | 0 | SAFE | | 1 – 29 | LOW | | 30 – 59 | MEDIUM | | 60+ | HIGH | 最终风险是 regex 风险和 Bedrock 风险中的**较高者**。 ## 🤖 Bedrock 响应 Amazon Nova Lite 返回结构化的 JSON: ``` { "risk": "HIGH", "confidence": 0.97, "attack_type": "Instruction Override", "reason": "Text attempts to override previous instructions and bypass safety filters." } ``` ## 🖥️ API ### POST `/scan/` **请求:** 包含 `image=` 的 `multipart/form-data` **响应:** ``` { "success": true, "filename": "sample.png", "processing_time": 21.4, "ocr": { "raw_count": 236, "clean_count": 54 }, "regex_analysis": { "risk": "HIGH", "score": 130, "findings": [ { "rule": "Ignore Previous Instructions", "matched_text": "ignore previous instructions", "risk_score": 40 } ] }, "bedrock_analysis": { "risk": "HIGH", "confidence": 0.97, "attack_type": "Instruction Override", "reason": "..." }, "final_analysis": { "risk": "HIGH", "regex_score": 130, "bedrock_risk": "HIGH", "bedrock_confidence": 0.97, "attack_type": "Instruction Override", "reason": "..." }, "annotated_image": "outputs/annotated_sample.png", "timings": { "Image Upload": 0.01, "OCR": 18.71, "OCR Cleaning": 0.12, "Regex Detection": 0.01, "Bedrock": 1.34, "Risk Engine": 0.00, "Annotation": 0.08 }, "logs": [ { "level": "INFO", "time": "14:32:01", "logger": "scan", "message": "Starting Image Upload" }, "..." ] } ``` ## 🛠️ 技术栈 | 层级 | 技术 | |---|---| | Backend | Python 3.13, FastAPI, Uvicorn | | OCR | EasyOCR | | Image Processing | OpenCV, NumPy | | Deduplication | RapidFuzz | | AI Analysis | AWS Bedrock, Amazon Nova Lite | | AWS SDK | Boto3 | | Config | Pydantic Settings, python-dotenv | | Frontend | React 18, Vite, Axios | ## ▶️ 运行项目 ### 1. Backend ``` cd backend python -m venv .venv # Windows .venv\Scripts\activate # macOS / Linux source .venv/bin/activate pip install -r requirements.txt python -m uvicorn app:app --reload ``` Backend 运行于:`http://localhost:8000` ### 2. Frontend ``` cd frontend npm install npm run dev ``` Frontend 运行于:`http://localhost:5173` ### 3. 环境变量 创建 `backend/.env`: ``` AWS_REGION=ap-south-1 MODEL_ID=amazon.nova-lite-v1:0 TEMPERATURE=0.1 MAX_TOKENS=512 UPLOAD_DIR=uploads OUTPUT_DIR=outputs ``` AWS 凭据将从标准的 AWS 凭证链(`~/.aws/credentials` 或环境变量)中读取。 ## 🖥️ UI 概览 | 面板 | 描述 | |---|---| | Upload Zone | 拖拽或点击上传。显示文件预览。 | | Result Panel | 风险横幅、OCR 统计信息、regex 发现、Bedrock 分析、带标注的图像 | | Pipeline Logs | 实时终端样式日志查看器,支持 INFO / ERROR 过滤 | | Pipeline Timing | 各阶段耗时表 | ## 📌 未来增强功能 - 语义相似度检测(embeddings) - 隐写术检测 - 批量图像扫描 - 多语言 OCR - PDF / JSON 安全报告 - Prompt Injection 仪表盘与分析 - 图像热力图 ## 🎯 路线图 - ✅ OCR Pipeline(10 种变体) - ✅ 图像预处理 - ✅ OCR 清理(RapidFuzz) - ✅ 基于规则的检测(15 条规则) - ✅ 风险评分 - ✅ 边界框标注 - ✅ AWS Bedrock 语义检测 - ✅ 生产级日志与耗时记录 - ✅ 带有实时日志的 React UI - ⏳ 可解释性 AI 报告 - ⏳ 仪表盘与分析 ## 👨‍💻 作者 **Devanand Jayaraman** — AI/ML 工程师 - GitHub: [DEVANAND-JAYARAMAN](https://github.com/DEVANAND-JAYARAMAN) - LinkedIn: [devanand-jayaraman](https://www.linkedin.com/in/devanand-jayaraman/) ⭐ 如果您觉得这个项目有用,请考虑在 GitHub 上给它点个 Star。
标签:AV绕过, AWS Bedrock, FastAPI, OCR, React, Syscalls, 大语言模型安全, 提示词注入检测, 机密管理, 逆向工具