tejassinghbhati/kaavish
GitHub: tejassinghbhati/kaavish
Kaavish 是一款针对大语言模型和 AI Agent 的自动化红队评估平台,通过对运行中的系统执行实时的对抗性攻击测试来发现并验证安全漏洞。
Stars: 0 | Forks: 0
# Kaavish
### 针对大语言模型系统的自动化对抗性红队评估平台
*系统化。可复现。基于证据。*





## 概述
Kaavish 是一个后端优先、API 驱动的自动化红队评估平台,专为生产环境中部署的 AI 系统设计。它将 **OWASP LLM Top 10 (2025)**、**MITRE ATLAS** 以及来自 NeurIPS、USENIX Security 和 ICLR 的同行评审研究定义的对抗性攻击分类法付诸实践——将理论上的漏洞类别转化为具体的、可验证的、可复现的漏洞利用链。
传统的渗透测试流程(Nmap、Metasploit、Burp Suite)作用于确定性的软件工件。LLM 和 Agent 系统引入了一种本质上非确定性、对上下文敏感的攻击面:对抗性输入并不利用内存边界或数据包字段——它们利用的是模型训练出的概率分布、指令遵循行为以及工具调用逻辑。Kaavish 正是专门为这一攻击面量身打造的。
该平台不是一个合规性调查问卷或静态分析工具。它针对运行中的系统执行实时的对抗性 payload,通过可观察的响应信号验证可利用性,并生成带有可复现概念验证演示的、有据可查的报告。
## 威胁全景
基于 LLM 的系统的部署速度已经超出了为其设计的安全工具的发展速度。近期的实际测量说明了该问题的规模:
- **74% 的 LLM 集成应用程序**在默认配置下容易受到至少一种形式的 prompt injection 攻击 (Greshake et al., 2023)
- **间接 prompt injection**——即恶意指令嵌入到文档、网页或 Agent 处理的工具输出中——代表了一种在传统软件安全中没有等效物的攻击面
- **越狱的可迁移性**很高:在开放权重模型上发现的对抗性后缀能够以不可忽视的成功率迁移到封闭权重的生产系统中 (Zou et al., 2023)
- **训练数据提取**已经在 GPT-2 和 GPT-3.5 上得到了实验性证明,恢复了逐字记忆的序列,包括 PII (Carlini et al., 2021, 2023)
- **OWASP LLM Top 10 (2025)** 明确将 prompt injection 列为 LLM 应用程序最高严重级别的漏洞类别
安全行业尚未产生用于测试这些属性的标准化自动化工具链。Kaavish 填补了这一空白。
## 架构
```
┌────────────────────────────────────────────────────────────────┐
│ Kaavish API (FastAPI) │
│ │
│ POST /scans → Enqueue scan, return scan_id │
│ GET /scans/{id}/status → Poll scan state │
│ GET /scans/{id}/results → Full findings JSON │
│ GET /scans/{id}/report.pdf → Evidence report │
└──────────────────────────┬─────────────────────────────────────┘
│
┌────────────▼────────────┐
│ Target Profiler │
│ (core/scanner.py) │
│ │
│ • Input schema probe │
│ • Model fingerprint │
│ • Framework detection │
│ • Tool/RAG capability │
└────────────┬────────────┘
│ TargetProfile
┌────────────▼────────────┐
│ Attack Executor │
│ (core/executor.py) │
│ │
│ asyncio.gather() │
│ All attacks concurrent │
└──┬──────┬──────┬────────┘
│ │ │
┌────────────▼┐ ┌───▼────┐ ┌▼──────────────┐ ┌────────────┐
│ Prompt │ │ Jail- │ │ Data │ │ Agent │
│ Injection │ │ break │ │ Extraction │ │ Hijack │
│ (10 vars) │ │(6 vars)│ │ (6 vars) │ │ (7 vars) │
└─────────────┘ └────────┘ └───────────────┘ └────────────┘
│
┌────────────▼────────────┐
│ Report Generator │
│ (core/reporter.py) │
│ │
│ Markdown + PDF │
│ Severity scoring │
│ Remediation guidance │
└─────────────────────────┘
```
### 设计决策
**通过 `asyncio.gather` 实现并发执行**
所有攻击类别并发针对目标执行。这是有意为之的:顺序执行将允许测试之间的速率限制或会话状态更改掩盖漏洞。并发性反映了真实的对抗条件。
**基于 Profile 的攻击选择**
分析器在任何攻击之前运行。特定于 Agent 的攻击(工具枚举、通过 Agent 进行的 SSRF、跨工具数据外泄链)仅在分析器检测到工具调用能力时执行。这可以防止误报并减少非 Agent 目标上的噪声。
**先验证后报告**
每个攻击类别在记录发现之前都会验证漏洞利用是否真实。只有当包含受限内容的响应匹配特定、预定义的漏洞利用指标时,才会被归类为发现。这最大程度地降低了误报率。
**可插拔的攻击接口**
每种攻击都继承自 `BaseAttack` 并公开统一的 `async execute() -> AttackResult` 接口。添加新的攻击类别只需实现 `execute()` 即可——执行器、报告器和 API 无需修改。
## 攻击覆盖范围
Kaavish 实现了跨越四个主要漏洞类别的攻击,与 OWASP LLM Top 10 (2025) 分类法保持一致。
### LLM01 — Prompt Injection (`attacks/prompt_injection.py`)
直接 prompt injection 利用了 LLM 在共享 token 序列中处理系统指令和用户输入这一基本架构特性。当模型无法可靠区分承载指令的 token 和承载数据的 token 时,对抗性用户可以覆盖、扩展或替换应用程序的 system prompt。
| 变体 | 技术 | 参考 |
|---------|-----------|-----------|
| System Prompt 提取 | 直接逐字提取请求 | Perez & Ribeiro (2022) |
| 系统指令覆盖 | 通过 DAN 类注入进行角色替换 | Wei et al. (2023) |
| 分隔符混淆 | 注入合成 prompt 结束标记 | Greshake et al. (2023) |
| Base64 编码走私 | 编码绕过词法输入过滤器 | Branch et al. (2022) |
| 社会工程学注入 | 在用户轮次内进行虚假权限声明 | — |
| 伪造系统消息 | 注入 `[SYSTEM UPDATE]` 标签 | Greshake et al. (2023) |
| 上下文摘要泄露 | 请求对指令进行自我总结 | — |
| 模板注入 (Jinja2) | LangChain 管道中的 `{{7*7}}` 求值 | — |
| HTML/XML 标签注入 | `标签:AV绕过, DLL 劫持, FastAPI, Python, 人工智能, 大语言模型, 无后门, 版权保护, 用户模式Hook绕过, 请求拦截, 逆向工具