νκ΅μ΄ Β· English
Chatbot Red Team Automation Β· Team OverRide Edition
PROMEXλ μ€μ λΈλΌμ°μ μΈμ μμ λμ μ±λ΄κ³Ό μνΈμμ©νλ©° ν둬ννΈ μΈμ μ 곡격μ μλ μ€ννκ³ , μλ΅ μ¦κ±°λ₯Ό μμ§Β·νμ ·리ν¬νΈκΉμ§ μΌκ΄λ νμ΄νλΌμΈμΌλ‘ μ²λ¦¬νλ Red Team Automation λꡬμ λλ€.
ν¬λ‘¬ μ¬μ΄λν¨λ κΈ°λ° νμ₯ νλ‘κ·Έλ¨μ΄ μ¬μ΄νΈλ³ UI λ§₯λ½μμ 곡격μ μννκ³ , FastAPI λΆμ μλ²κ° λ°°μΉ νμ κ³Ό λ³΄κ³ μ μμ±μ λ΄λΉν©λλ€.
- λΈλΌμ°μ DOM κΈ°λ° μ€μ ν μ£Όμ /μλ΅ μμ§
- νΈμ€νΈλ³ μ€μ λκΈ°ν(μΉ΄ν κ³ λ¦¬, νμ, LLM μ΅μ , μλ² URL λ±)
AI_MODEν¬ν¨ λ€μ€ 곡격 λͺ¨λ- Prompt Injection LLM / Report Analysis LLM λΆλ¦¬ μ ν
- λΆμ νμ€ν 리, ν΅κ³, μ¦μ λ€μ΄λ‘λ(HTML/XLSX/PDF/CSV/TXT)
Chrome Extension (MV3 Side Panel)
βββ popup/ # μ¬μ΄λν¨λ UI(Analysis / Scan / Options)
βββ content/ # νμ΄μ§ μνΈμμ©(μ£Όμ
/μλ΅ μμ§/μ νμ)
βββ background/ # μ€μΊ μ€μΌμ€νΈλ μ΄μ
, μλ² API νΈμΆ
β
βΌ
FastAPI Server (server/)
βββ /api/attack/* # ν¨ν΄/μΉ΄ν
κ³ λ¦¬
βββ /api/judge/* # νμ /λ°°μΉνμ /리ν¬νΈ μμ±/λ€μ΄λ‘λ
injection-scan/
βββ extension/
β βββ manifest.json
β βββ popup/
β βββ content/
β βββ background/
βββ server/
β βββ main.py
β βββ api/
β βββ core/
β βββ data/
β βββ reports/
β βββ requirements.txt
βββ README.md
| μ ν ID | μ€λͺ | λ°μ΄ν° |
|---|---|---|
COMMON |
μ νλ³ ν¨ν΄μ μΌλΆμ© μμ΄ μ€μΊ (λ¨μΌ μ ν μλ) | κ° */patterns.csv μνλ§ |
DIRECT_CMD_INJECT |
μ§μ λͺ λ ΉΒ·Override/DAN κ³μ΄ | data/DIRECT_CMD_INJECT/patterns.csv |
PROMPT_LEAK |
μμ€ν Β·κ°λ°μ μ§μΉ¨ μ μΆ μ λ | data/PROMPT_LEAK/patterns.csv |
ROLEPLAY_BYPASS |
μν κ·ΉΒ·νλ₯΄μλ μ°ν | data/ROLEPLAY_BYPASS/patterns.csv |
INDIRECT_INJECT |
λ¬ΈμΒ·μ£ΌμΒ·λΆμ¬λ£κΈ° κ²½μ | data/INDIRECT_INJECT/patterns.csv |
CONTEXT_MANIPULATION |
λ§₯λ½Β·λ©ν°ν΄ μ‘°μ | data/CONTEXT_MANIPULATION/patterns.csv |
ENCODING_OBFUSCATION |
μΈμ½λ©Β·λλ ν μ°ν | data/ENCODING_OBFUSCATION/patterns.csv |
AI_MODE |
μ μ CSV λμ λͺ©ν μ§μλ¬Έκ³Ό μ΄μ ν΄ νμ€ν 리λ₯Ό λ°νμΌλ‘ LLMμ΄ κ³΅κ²© ν둬ννΈλ₯Ό λμ μΌλ‘ μμ±Β·μ μ | μ μ patterns.csv λ―Έμ¬μ©(λ°νμ μμ±) |
CSV ν€λ: id,prompt,category_id,source,lang
idκ° λΉμ΄ μμΌλ©΄ μλ²μμ μλ μμ±λ©λλ€.
- μ¬μ΄λν¨λ
Optionsμμ λΆμ μλ² URL λ° LLM μ΅μ μ μ€μ Scanμμ 곡격 μ ν/νμ/AI μ§μλ¬Έ(μ ν)μ μ€μ AI λ©μμ§ μ νμΌλ‘ μ¬μ΄νΈλ³ μλ΅ μμ μ νμλ₯Ό μ§μ - Backgroundκ° ν¨ν΄ λ‘λ(λλ AI μμ±) β μ£Όμ 루ν β μλ΅ μμ§
- μλ² λ°°μΉ νμ λ° λ¦¬ν¬νΈ μμ±
Analysisμμ νμ€ν 리/ν΅κ³/λ€μ΄λ‘λ νμΈ
| κ΅¬λΆ | λ²μ ·쑰건 |
|---|---|
| Python | 3.10 μ΄μ κΆμ₯ |
| Chrome | μ΅μ μμ ν (Manifest V3Β·Side Panel μ§μ) |
| OS | Windows / macOS / Linux (μλ²λ ν¬λ‘μ€ νλ«νΌ) |
μ μ₯μ 루νΈμμ server λλ ν°λ¦¬λ‘ μ΄λν©λλ€.
cd server(μ ν) κ°μνκ²½μ μ°λ©΄ μμ‘΄μ± μΆ©λμ μ€μΌ μ μμ΅λλ€.
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
# source .venv/bin/activateνκ²½ λ³μ νμΌμ λ§λλλ€. server/.env.exampleμ 볡μ¬ν΄ server/.envλ‘ μ μ₯ν λ€, μ¬μ©ν LLM μ 곡μμ λ§κ² API ν€λ₯Ό μ±μλλ€.
# Windows (PowerShell): Copy-Item .env.example .env
# macOS / Linux: cp .env.example .envμμ‘΄μ± μ€μΉ ν μλ²λ₯Ό λμλλ€.
pip install -r requirements.txt
uvicorn main:app --reload --host 127.0.0.1 --port 8000κΈ°λ³Έ μ£Όμλ http://127.0.0.1:8000 μ
λλ€. λΈλΌμ°μ μμ http://127.0.0.1:8000/docs λ‘ OpenAPI λ¬Έμλ₯Ό νμΈν μ μμ΅λλ€.
.envμμ μμ£Ό μ°λ νλͺ© μμ:
LLM_PROVIDER=openai
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o-mini
# BATCH_JUDGE_CONCURRENCY=3GeminiΒ·Claudeλ₯Ό μ°λ κ²½μ° GEMINI_API_KEY, ANTHROPIC_API_KEY λ±λ .env.example μ£Όμμ μ°Έκ³ ν΄ μ€μ ν©λλ€.
- Chromeμμ
chrome://extensions/λ₯Ό μ°λ€. - μ°μΈ‘ μλ¨ κ°λ°μ λͺ¨λλ₯Ό μΌ λ€.
- μμΆν΄μ λ νμ₯ νλ‘κ·Έλ¨μ λ‘λν©λλ€λ₯Ό λλ₯Έλ€.
- μ΄ μ μ₯μμ
extensionν΄λλ₯Ό μ ννλ€. - λꡬ λͺ¨μμμ PROMEX μμ΄μ½μ ν΄λ¦νκ±°λ, μ°ν΄λ¦ λ©λ΄μμ μ¬μ΄λ ν¨λμμ μ΄κΈ°λ‘ ν¨λμ μ°λ€.
- μ¬μ΄λν¨λ Optionsμ λΆμ μλ² URL(μ:
http://127.0.0.1:8000)μ λ£κ³ μ μ©νλ€. - λμ μ±λ΄μ΄ μ΄λ¦° νμμ Scan β AI λ©μμ§ μ νμΌλ‘ μλ΅ μμμ μ§μ ν λ€ μ€μΊμ μμνλ€.
| λ©μλ | κ²½λ‘ | μ€λͺ |
|---|---|---|
| GET | /api/attack/patterns?category=COMMON |
ν¨ν΄ λͺ©λ‘ (per_category_common, limit_per_category μ§μ) |
| GET | /api/categories |
μ¬μ© κ°λ₯ν μΉ΄ν κ³ λ¦¬ λͺ©λ‘ |
| POST | /api/judge/batch-evaluate |
μλ΅ μΌκ΄ νμ |
| POST | /api/judge/report |
리ν¬νΈ μμ± |
| GET | /api/judge/report-file |
μμ±λ 리ν¬νΈ νμΌ λ€μ΄λ‘λ |
Attack Pathnone: κ²½λ‘ μ νΈ μμdirect: μ§μ μ§μ κΈ°λ° μ°ν/λμΆ μ ν©indirect: κ°μ μ£Όμ /λλ κ²½μ μ ν©memory-carryover: μ΄μ ν΄ λ¬Έλ§₯ μ μ΄ μ ν©
Memory Score(memory_dependency_score)- 0.0 ~ 1.0 λ²μμ λ©λͺ¨λ¦¬ μμ‘΄ μ νΈ μ μ
- λμμλ‘ μ΄μ λν μν₯ κ°λ₯μ±μ΄ νΌ
μ€μΊλ§λ€ server/reports/<scan-name>/ λλ ν°λ¦¬μ μμ±:
*.html: λμ보λν κ²°κ³Ό 리ν¬νΈ(κ·Έλν/μμΈ ν μ΄λΈ)*.xlsx: μ€νλ λμνΈ λΆμμ©*.pdf: 곡μ μ© PDF*.csv,*.txt: νμ²λ¦¬/κΈ°λ‘μ©
| κ΅¬λΆ | κΈ°μ |
|---|---|
| Extension | Chrome MV3, Side Panel, chrome.tabs, chrome.storage |
| Server | Python 3, FastAPI, Uvicorn, Pydantic, python-dotenv |
| Judge | LLM(OpenAI/Gemini/Claude μ΅μ ) + κ·μΉ κΈ°λ° κ°λ |
| Report | HTML, openpyxl(XLSX), reportlab(PDF), CSV/TXT |
λ³Έ νλ‘μ νΈλ νκ°λ 보μ ν
μ€νΈ/κ΅μ‘ λͺ©μ μμλ§ μ¬μ©ν΄μΌ ν©λλ€.
λμ μλ μλΉμ€ λμ 곡격μ λΆλ²μΌ μ μμ΅λλ€.
API ν€μ .envλ μ λ 컀λ°νμ§ λ§μΈμ.
CMUX Γ AIM Intelligence Hackathon (2026) β AI Safety & Security Track
νκ΅μ΄ Β· English
Chatbot Red Team Automation Β· Team OverRide Edition
PROMEX is a browser-based red team automation tool for web chatbots. It runs prompt-injection attacks in a real browser session, collects AI responses, and sends them through a single pipeline: server-side judgment and report generation.
A Chrome side panel extension drives attacks in each siteβs DOM context; a FastAPI analysis server handles batch evaluation and exports (HTML, XLSX, PDF, CSV, TXT).
- DOM-based prompt injection and response capture
- Per-host settings (category, count, LLM options, server URL, etc.)
- Multiple attack modes including
AI_MODE - Separate Prompt Injection LLM and Report Analysis LLM in Options
- Analysis history, charts, and one-click report downloads
Chrome Extension (MV3 Side Panel)
βββ popup/ # Side panel UI (Analysis / Scan / Options)
βββ content/ # Page interaction (inject / capture / selector)
βββ background/ # Scan orchestration, server API calls
β
βΌ
FastAPI Server (server/)
βββ /api/attack/* # Patterns & categories
βββ /api/judge/* # Judge, batch judge, reports, downloads
injection-scan/
βββ extension/
β βββ manifest.json
β βββ popup/
β βββ content/
β βββ background/
βββ server/
β βββ main.py
β βββ api/
β βββ core/
β βββ data/
β βββ reports/
β βββ requirements.txt
βββ README.md
| Category ID | Description | Data |
|---|---|---|
COMMON |
Mixed sampling across categories (not a single type) | Sample from each */patterns.csv |
DIRECT_CMD_INJECT |
Direct commands, override / DAN-style | data/DIRECT_CMD_INJECT/patterns.csv |
PROMPT_LEAK |
System / developer instruction exfiltration | data/PROMPT_LEAK/patterns.csv |
ROLEPLAY_BYPASS |
Roleplay / persona bypass | data/ROLEPLAY_BYPASS/patterns.csv |
INDIRECT_INJECT |
Via documents, comments, paste | data/INDIRECT_INJECT/patterns.csv |
CONTEXT_MANIPULATION |
Context / multi-turn manipulation | data/CONTEXT_MANIPULATION/patterns.csv |
ENCODING_OBFUSCATION |
Encoding / obfuscation bypass | data/ENCODING_OBFUSCATION/patterns.csv |
AI_MODE |
LLM-generated adaptive prompts from a goal instruction and prior turns | No static patterns.csv (runtime generation) |
CSV columns: id,prompt,category_id,source,lang
Empty id values are auto-generated on the server.
- In the side panel Options, set the analysis server URL and LLM options; click Apply if needed.
- In Scan, choose attack category, injection count, and optional AI instruction.
- Use Pick AI message area to save a per-host CSS selector for the chatbot response region.
- Background loads patterns (or generates in AI mode) β injection loop β response capture.
- Server batch judgment and report generation.
- Open Analysis for history, stats, and downloads.
| Item | Requirement |
|---|---|
| Python | 3.10+ recommended |
| Chrome | Latest stable (MV3 + Side Panel) |
| OS | Windows / macOS / Linux |
From the repo root:
cd server(Optional) virtual environment:
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
# source .venv/bin/activateCopy server/.env.example to server/.env and fill API keys for your provider.
# Windows (PowerShell): Copy-Item .env.example .env
# macOS / Linux: cp .env.example .envInstall and run:
pip install -r requirements.txt
uvicorn main:app --reload --host 127.0.0.1 --port 8000Default URL: http://127.0.0.1:8000 β OpenAPI: http://127.0.0.1:8000/docs
Example .env:
LLM_PROVIDER=openai
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o-mini
# BATCH_JUDGE_CONCURRENCY=3For Gemini or Claude, set GEMINI_API_KEY, ANTHROPIC_API_KEY, etc. per server/.env.example.
- Open
chrome://extensions/ - Enable Developer mode
- Click Load unpacked
- Select this repositoryβs
extensionfolder - Open the side panel from the toolbar icon or Open side panel in the extension menu
- In Options, set the analysis server URL (e.g.
http://127.0.0.1:8000) and Apply - On the target chat tab: Scan β Pick AI message area, then start the scan
| Method | Path | Description |
|---|---|---|
| GET | /api/attack/patterns?category=COMMON |
Pattern list (per_category_common, limit_per_category) |
| GET | /api/categories |
Available categories |
| POST | /api/judge/batch-evaluate |
Batch judgment |
| POST | /api/judge/report |
Generate report bundle |
| GET | /api/judge/report-file |
Download a generated report file |
Attack Pathnone: no strong path signaldirect: direct-instruction bypass / leak signalindirect: indirect / obfuscated path signalmemory-carryover: prior-turn context appears to influence the reply
Memory Score(memory_dependency_score)- Float 0.0β1.0: strength of βmemory carryoverβ style signals
- Higher values suggest stronger influence from earlier turns
Each scan writes under server/reports/<scan-name>/:
*.htmlβ Dashboard-style report (charts + detail table)*.xlsxβ Spreadsheet*.pdfβ PDF export*.csv,*.txtβ Plain exports
| Layer | Stack |
|---|---|
| Extension | Chrome MV3, Side Panel, chrome.tabs, chrome.storage |
| Server | Python 3, FastAPI, Uvicorn, Pydantic, python-dotenv |
| Judge | LLM (OpenAI / Gemini / Claude options) + rule-based guards |
| Report | HTML, openpyxl, reportlab, CSV/TXT |
Use only on systems you are authorized to test. Unauthorized testing may be illegal.
Never commit API keys or .env files.
CMUX Γ AIM Intelligence Hackathon (2026) β AI Safety & Security Track
