javicadev/FAROLA
GitHub: javicadev/FAROLA
FAROLA 利用遗传进化算法对工具型 LLM 智能体进行黑盒模糊测试,自动发现并验证间接 prompt 注入攻击路径。
Stars: 0 | Forks: 0
# FAROLA
### 面向智能体 LLM 的自适应攻击性识别 Fuzzer
**通过遗传进化发现针对 LLM 智能体的间接 prompt 注入攻击**
[](https://www.python.org/)
[](LICENSE)
[](#安装)
[🇪🇸 Español](#qué-es-farola) · [🇬🇧 English](#what-is-farola-en)
## 什么是 FAROLA?
FAROLA 是一款**防御性红队**工具,可自动发现针对具有工具访问权限的 LLM 智能体系统的 prompt 注入利用。它使用**进化遗传算法**在世代交替中对 payload 进行变异,逐步提高易受攻击智能体的“服从性”,直到其通过传出的 HTTP 请求泄露金丝雀(canary)密钥。
它证明了一个核心论点:**静态 payload 会失效,而进化后的 payload 不会。**
### 模拟的攻击链
```
Contenido externo no confiable El agente procesa el ticket
(ticket de soporte, registro DB) → con read_ticket()
↓ ↓
Payload malicioso oculto El payload secuestra al agente
inyectado en el contenido → y evade el system prompt
↓
El agente llama a read_config()
y luego http_get(url + secreto)
↓
Canary exfiltrado al atacante
```
## 主要功能
- **进化引擎** — 跨世代结合的遗传选择、crossover 和 7 种变异操作符
- **目标 Oracle** — 成功与否由传出请求中的金丝雀(canary)决定,而不是由作为评判者的 LLM 决定(无误报)
- **baseline 对比** — 首先运行原始种子以证明它们会失败,然后展示确实有效的进化后利用
- **利用谱系** — 追踪从种子到功能性利用的精确变异路径
- **Web Dashboard** — 实时可视化 fitness 的上升、种群的进化以及数据渗出的瞬间
- **无依赖** — 模拟模式仅使用 Python stdlib 运行
- **live 模式** — 可选择与 Ollama 集成,以针对真实的本地 LLM 进行测试
## 变异操作符
| 操作符 | 技术 |
|---|---|
| `obfuscate_base64` | 将 payload 编码为 Base64,并指示 LLM 解码并执行它 |
| `roleplay_wrap` | 将 payload 嵌入虚构或模拟场景中 |
| `delimiter_break` | 注入 ``, `"""`, `---` 以逃离上下文 |
| `authority_inject` | 添加高权限的 `[SYSTEM OVERRIDE]` / `[ADMINISTRATOR]` 标头 |
| `urgency_inject` | 施加紧急/突发事件的压力 |
| `language_shift` | 用西班牙语的祈使句包裹 payload,以绕过英语过滤 |
| `invisible_chars` | 插入零宽 Unicode 空格以规避关键字检测 |
| `crossover` | 组合两个高 fitness 父级 payload 的片段 |
## 安装
模拟模式不需要外部依赖:
```
git clone https://github.com/javicadev/FAROLA.git
cd FAROLA
python3 run_demo.py
```
可选 — 安装 `requests` 以使用 Ollama 的 live 模式:
```
pip install requests
```
## 使用方法
### 控制台演示 (CLI)
运行 baseline(原始种子),然后运行进化循环,打印谱系并将报告写入 `reports/`:
```
python3 run_demo.py
```
```
# 自定义预算和种群大小
python3 run_demo.py --budget 150 --pop-size 15
```
```
# 针对本地 Ollama 模型的 live 模式
python3 run_demo.py --live --model llama3
```
### Web Dashboard
```
python3 web/server.py
# 打开 http://localhost:8080
```
点击 **Lanzar Ataque Evolutivo**(启动进化攻击),实时观察:
1. 金丝雀(canary)密钥生成并被拦截
2. baseline 失败 — 所有种子都被拦截
3. 进化循环启动 — fitness 逐代上升
4. 数据渗出瞬间以红色标记
5. 渲染利用谱系:种子 → 变异 → 功能性利用
### 测试
```
python3 -m unittest discover tests -v
```
## 架构
```
FAROLA/
run_demo.py # Punto de entrada CLI
farola/
target.py # Interfaz abstracta del objetivo
testbed_agent.py # Agente vulnerable (simulado + ReAct con Ollama)
seeds.py # Corpus semilla: DIRECT_OVERRIDE, INDIRECT_EXFIL, TOOL_ABUSE
mutators.py # Conjunto cerrado de 7 operadores de mutación + crossover
oracle.py # Scorer ground-truth basado en canary
engine.py # Bucle evolutivo: selección, crossover, mutación
report.py # Generador de informes JSON + Markdown
taxonomy.py # Mapeos OWASP / MITRE ATLAS
tests/ # Tests unitarios de mutadores y oráculo
reports/ # Informes de auditoría generados
web/
server.py # Servidor HTTP (stdlib)
static/ # Frontend del dashboard (HTML + CSS + JS vanilla)
```
## 安全分类
发现的漏洞映射至:
| ID | 框架 | 名称 |
|---|---|---|
| `LLM01` | OWASP LLM Top 10 (2025) | Prompt Injection |
| `LLM02` | OWASP LLM Top 10 (2025) | Sensitive Information Disclosure |
| `LLM06` | OWASP LLM Top 10 (2025) | Excessive Agency |
| `ASI01` | OWASP Agentic Apps Top 10 (2026) | Agent Goal Hijack |
| `AML.T0051.001` | MITRE ATLAS | LLM Prompt Injection: Indirect |
| `AML.T0057` | MITRE ATLAS | Exfiltration |
相关内容:[EchoLeak CVE-2025-32711](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-32711)
## 伦理声明
FAROLA 是一款**防御性安全与研究工具**。
- 专为安全测试、开发者培训及 LLM 应用红队演练而设计
- 模拟模式**不会发起任何真实的网络请求** — 所有渗出均在本地记录
- 在测试任何生产或第三方系统之前,请务必获得明确的书面授权
## 什么是 FAROLA? (EN)
FAROLA is a black-box evolutionary prompt injection fuzzer for LLM agents. It automatically discovers indirect prompt injection exploits by evolving payloads across generations using a genetic algorithm — proving that static payloads fail where evolved ones succeed.
**Quick start:**
```
git clone https://github.com/javicadev/FAROLA.git && cd FAROLA
python3 run_demo.py # CLI demo
python3 web/server.py # Web dashboard → http://localhost:8080
python3 -m unittest discover tests -v # Run tests
```
For full documentation see the Spanish section above.
Hecho en Málaga · Red-Teaming Defensivo de LLMs · 2026
标签:AI风险缓解, CISA项目, DLL 劫持, Python, 人工智能安全, 合规性, 大语言模型, 无后门, 逆向工具, 遗传算法