sushaan-k/infiltr

GitHub: sushaan-k/infiltr

infiltr 是一个基于强化学习的自主红队框架,用于测试LLM应用并生成MITRE ATLAS报告,以自动化发现新攻击策略。

Stars: 3 | Forks: 0

# 渗透 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/c9927f02e2031613.svg)](https://github.com/sushaan-k/infiltr/actions) [![PyPI](https://img.shields.io/pypi/v/infiltr.svg)](https://pypi.org/project/infiltr/) [![PyPI Downloads](https://img.shields.io/pypi/dm/infiltr.svg)](https://pypi.org/project/infiltr/) [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/downloads/) [![MITRE ATLAS](https://img.shields.io/badge/MITRE-ATLAS-red.svg)](https://atlas.mitre.org) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](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输出, 二进制发布, 人工智能安全, 凭据扫描, 合规性, 合规性测试, 合规报告, 多轮探测, 大语言模型, 大语言模型安全, 安全审查, 密钥泄露防护, 对抗性机器学习, 应用安全测试, 开源工具, 强化学习, 持续集成/持续部署, 提示变异, 攻击策略发现, 无后门, 机器学习安全, 机密管理, 测试工具, 策略训练, 红队框架, 网络安全, 自主代理, 近端策略优化算法, 逆向工具, 隐私保护