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, 大语言模型安全, 提示词注入检测, 机密管理, 逆向工具