sushaan-k/infiltr
GitHub: sushaan-k/infiltr
infiltr 是一个基于强化学习的自主红队框架,用于测试LLM应用并生成MITRE ATLAS报告,以自动化发现新攻击策略。
Stars: 3 | Forks: 0
# 渗透
[](https://github.com/sushaan-k/infiltr/actions)
[](https://pypi.org/project/infiltr/)
[](https://pypi.org/project/infiltr/)
[](https://www.python.org/downloads/)
[](https://atlas.mitre.org)
[](LICENSE)
**基于强化学习的对抗性红队代理,用于 LLM 系统并生成 MITRE ATLAS 报告。**
infiltr 使用强化学习来发现针对任何 LLM 应用的新型攻击策略。它不仅仅是测试已知攻击——它通过与目标系统交互来学习新的攻击方法,然后将每个发现映射到 MITRE ATLAS 框架,以实现合规性和透明度。
## 概览
- 用于 LLM 应用和代理系统的自主红队循环
- 多轮探测与自适应提示变异
- 针对目标特定防御的 PPO 风格策略训练
- 针对发现项和覆盖范围报告的 MITRE ATLAS 映射
- 支持 JSON、HTML 和 SARIF 输出,用于 CI 和安全审查工作流
## 问题所在
LLM 安全测试停滞在 2024 年。现有工具向您的应用程序发射静态有效载荷列表,然后就完事了。真正的攻击者并非如此工作——他们会探测、观察、适应,并即时演进出新的策略。
## 解决方案
infiltr 是一个**自主的红队代理**,其策略网络能够学习哪些攻击策略对您的特定目标有效。它运行多轮社会工程链,变异提示以规避过滤器,并生成映射到 MITRE ATLAS 的合规性就绪报告。
## ATLAS 覆盖范围
infiltr 涵盖了 6 种策略下的 24 项 MITRE ATLAS 技术,对提示注入 (AML.T0051)、目标劫持 (AML.T0054) 和数据泄露 (AML.T0024) 类别实现完全覆盖。每个发现项都会自动映射到所利用的具体技术,从而提供直接的修复指导和详细的合规性报告。
## 报告展示
infiltr 生成的 HTML 报告提供了一个全面的评估仪表板,包括所有发现项的严重性细分、显示哪些技术被成功利用的交互式 ATLAS 热图,以及用于验证和修复的每个发现项的重现步骤。额外的 JSON 和 SARIF 格式支持无缝集成到 CI/CD 管道和 GitHub 安全工作流中。
## 快速开始
### 安装
```
pip install infiltr
```
### Python API
```
import asyncio
from phantom import RedTeam, Target, ATLASReport
async def main():
target = Target(
endpoint="https://api.example.com/chat",
auth={"Authorization": "Bearer ..."},
)
red_team = RedTeam(
target=target,
attack_model="gpt-4",
categories=["prompt_injection", "goal_hijacking", "data_exfiltration"],
max_interactions=500,
multi_turn=True,
)
results = await red_team.run()
report = ATLASReport(results)
report.to_html("security_assessment.html")
report.to_sarif("results.sarif")
report.to_json("results.json")
print(f"Vulnerabilities found: {len(results.findings)}")
print(f"Critical: {results.count_by_severity('CRITICAL')}")
print(f"Novel attacks discovered: {results.novel_attack_count}")
asyncio.run(main())
```
此设计适用于 API 支持的目标,但相同的报告管道也适用于本地包装器和 CI 驱动的安全检查。
### 命令行界面
```
# 基础扫描
infiltr scan --target https://api.example.com/chat --output json
# 完整评估及所有报告格式
infiltr scan \
--target https://api.example.com/chat \
--auth "Bearer sk-..." \
--categories prompt_injection,goal_hijacking \
--max-interactions 500 \
--output all
# 从先前扫描结果生成报告
infiltr report --input infiltr-results.json --output html
# 与先前扫描对比,仅报告新发现的高风险问题
infiltr report \
--input infiltr-results.json \
--baseline previous-results.json \
--only-new \
--fail-on-new HIGH \
--output sarif
```
## 架构
```
graph TD
A[RL Policy Network] -->|selects action| B[Attack Generator]
B -->|generates prompt| C[Mutation Engine]
C -->|mutated prompt| D[Probe Orchestrator]
D -->|sends probe| E[Target LLM]
E -->|response| F[Reward Classifier]
F -->|reward signal| A
F -->|outcome| G[ATLAS Mapper]
G -->|findings| H[Report Generator]
H --> I[JSON / HTML / SARIF]
style A fill:#2d1b69,stroke:#7c4dff,color:#fff
style B fill:#1a237e,stroke:#448aff,color:#fff
style C fill:#1a237e,stroke:#448aff,color:#fff
style D fill:#004d40,stroke:#1de9b6,color:#fff
style E fill:#b71c1c,stroke:#ff5252,color:#fff
style F fill:#004d40,stroke:#1de9b6,color:#fff
style G fill:#e65100,stroke:#ff9100,color:#fff
style H fill:#e65100,stroke:#ff9100,color:#fff
style I fill:#1b5e20,stroke:#69f0ae,color:#fff
```
### 核心循环
1. **强化学习策略网络**观察当前状态(响应模式、过滤器签名、对话上下文)并选择一个动作:应用哪个变异算子,使用哪种策略,以及以多大强度进行升级。
2. **攻击生成器**使用种子库、基于 LLM 的增强以及选定的变异算子(同义词替换、Base64 编码、角色扮演构建、指令嵌套等)生成提示。
3. **探测编排器**将提示发送到目标并收集响应。
4. **奖励分类器**使用模式匹配分析响应以确定结果:完全绕过 (+1.0)、部分绕过 (+0.5)、信息泄露 (+0.1) 或干净拒绝 (0.0)。
5. 奖励信号通过 **PPO 训练**反馈到策略网络,从而使代理学习哪些方法对这个特定目标有效。
6. 成功的探测被映射到 **MITRE ATLAS** 技术并编译成结构化报告。
## 攻击类别
| 类别 | ATLAS 技术 | 描述 |
|----------|----------------|-------------|
| 提示注入 | AML.T0051 | 直接、间接和多轮提示注入 |
| 目标劫持 | AML.T0054 | 重定向代理行为、提取系统提示、操纵工具调用 |
| 数据泄露 | AML.T0024 | 提取训练数据、PII、凭据或系统配置 |
| 拒绝服务 | AML.T0029 | 触发无限循环、耗尽 token 预算、导致有害输出 |
## 变异算子
infiltr 包含八个变异算子,用于转换攻击提示以规避检测:
- **同义词替换** -- 用同义词替换关键词以绕过关键词过滤器
- **Base64 编码** -- 使用 Base64 编码有效载荷并附带解码指令
- **角色扮演构建** -- 将攻击包装在虚构/教育场景中
- **语言切换** -- 添加跨语言指令以混淆过滤器
- **Token 分割** -- 将敏感词跨 token 边界拆分
- **指令嵌套** -- 将有效载荷埋入多层元指令中
- **上下文溢出** -- 填充提示以将系统指令推离上下文
- **编码链** -- 应用多层编码进行深度混淆
## 报告格式
- **JSON** -- 机器可读的结果,用于 CI/CD 管道集成
- **HTML** -- 带有严重性徽章和面向利益相关者的修复指导的样式化报告
- **SARIF** -- 与 GitHub 安全选项卡兼容的格式,用于代码扫描集成
### 基线门控
每个 JSON 和 SARIF 发现项都包含一个稳定的指纹,该指纹衍生自 ATLAS 技术、类别、严重性和归一化的攻击提示。使用带有 `--baseline previous-results.json` 的 report 命令来将当前扫描与已知基线进行比较,使用 `--only-new` 仅输出包含新引入发现项的报告,以及使用 `--fail-on-new HIGH`(或其他严重性)使 CI 仅在新发现项达到所选风险阈值时失败。目标响应、时间戳和证据文本被排除在指纹之外,因此重跑可以匹配相同的漏洞,而不会将敏感输出烘焙到比较键中。
## CI/CD 集成
```
# .github/workflows/security.yml
name: LLM Security Scan
on: [push]
jobs:
infiltr-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pip install infiltr
- run: infiltr scan --target ${{ secrets.API_ENDPOINT }} --output all --output-path infiltr-results
- run: infiltr report --input infiltr-results.json --baseline security-baseline.json --only-new --fail-on-new HIGH --output sarif --output-path phantom-report
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: phantom-report.sarif
```
## API 参考
### `目标`
```
target = Target(
endpoint="https://api.example.com/chat", # Required: target URL
auth={"Authorization": "Bearer ..."}, # Optional: auth headers
system_prompt_known=False, # Does attacker know the system prompt?
system_prompt=None, # Known system prompt text
response_path="choices.0.message.content", # JSON path to response text
timeout_seconds=30.0, # HTTP timeout
max_retries=3, # Retry count on failure
)
```
### `红队`
```
red_team = RedTeam(
target=target,
attack_model="gpt-4", # Model for generating attacks
categories=["prompt_injection"], # Attack categories to test
max_interactions=500, # Max probes to send
multi_turn=True, # Enable multi-turn strategies
max_turns_per_conversation=10, # Max turns per conversation
learning_rate=3e-4, # RL policy learning rate
)
results = await red_team.run()
```
### `ATLAS报告`
```
report = ATLASReport(results)
report.to_json("results.json")
report.to_html("report.html")
report.to_sarif("results.sarif")
# 查询发现结果
critical = report.count_by_severity("CRITICAL")
all_findings = report.findings
```
### `红队结果`
```
results.total_probes # Total probes sent
results.total_bypasses # Number of successful bypasses
results.bypass_rate # Bypass rate (0.0 to 1.0)
results.findings # List of ATLAS-mapped findings
results.novel_attack_count # Novel attacks discovered by RL
results.count_by_severity("CRITICAL") # Count by severity
results.atlas_coverage_pct # Percentage of ATLAS techniques represented in the run
```
## 典型工作流程
1. 定义目标接口和认证头
2. 选择攻击类别和交互预算
3. 运行扫描或经过训练支持的评估
4. 导出 JSON 用于工具,HTML/SARIF 用于审查者
5. 将发现项映射回修复工作
## 项目结构
```
phantom/
src/phantom/
__init__.py # Public API exports
redteam.py # Main orchestrator
target.py # Target interface
models.py # Pydantic data models
exceptions.py # Custom exceptions
cli.py # CLI interface (Typer)
attacks/
generator.py # LLM-based attack generation
mutations.py # Mutation operators
strategies.py # Attack strategies (direct, indirect, multi-turn)
learner/
policy.py # RL policy network (PyTorch)
reward.py # Response classification
trainer.py # PPO training loop
atlas/
mapper.py # ATLAS technique mapping
taxonomy.py # Technique definitions
report.py # Report generation (JSON, HTML, SARIF)
tests/ # pytest test suite
examples/ # Usage examples
atlas_data/
techniques.json # MITRE ATLAS technique database
```
## 演示
运行离线演练:
```
uv run python examples/demo.py
```
关于实时代理和聊天机器人扫描,请参阅 `examples/` 中的更大示例。
## 开发
```
# 克隆并以开发模式安装
git clone https://github.com/sushaan-k/infiltr.git
cd infiltr
pip install -e ".[dev]"
# 运行测试
pytest tests/ -v
# 运行代码检查工具
ruff check src/ tests/
# 运行类型检查工具
mypy src/phantom/
```
## 研究参考
- [MITRE ATLAS Framework](https://atlas.mitre.org)
- [OWASP Top 10 for LLM Applications (2025)](https://owasp.org/www-project-top-10-for-large-language-model-applications/)
- PISmith: Automated Prompt Injection via Reinforcement Learning (arXiv:2603.13026)
- Not what you've signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection (2023)
## 许可证
MIT 许可证。详情请参阅 [LICENSE](LICENSE)。
由 [Sushaan Kandukoori](https://github.com/sushaan-k) 构建。
标签:AI对抗性攻击, API安全, C2, DLL 劫持, HTML输出, JSON输出, MITRE ATLAS, Python, SARIF输出, 二进制发布, 人工智能安全, 凭据扫描, 合规性, 合规性测试, 合规报告, 多轮探测, 大语言模型, 大语言模型安全, 安全审查, 密钥泄露防护, 对抗性机器学习, 应用安全测试, 开源工具, 强化学习, 持续集成/持续部署, 提示变异, 攻击策略发现, 无后门, 机器学习安全, 机密管理, 测试工具, 策略训练, 红队框架, 网络安全, 自主代理, 近端策略优化算法, 逆向工具, 隐私保护