linville-charlie/Dragonfly

GitHub: linville-charlie/Dragonfly

具备执行时保护机制的自主安全测试研究平台,用于约束 LLM 代理行为并评估工具控制效果。

Stars: 0 | Forks: 0

# Dragonfly **具有模型无关执行时保护机制的自主安全测试引擎** Dragonfly 是一个用于研究执行时保护机制的开源研究平台。它将 114 个安全测试工具封装在可组合的策略管道(作用域强制、行为门控和杀毒开关)之后,并为 MCP、CLI 以及 LangChain/LangGraph 提供适配器。 核心是模型无关的:任何能够生成工具调用的 LLM 或运行时都可以通过适配器层驱动 Dragonfly。所有策略强制、追踪和审计都在核心层完成,而非适配器中。 ## 关键结果 ### 消融研究(105 次运行,Gemin 2.5 Pro) 保护机制按设计发挥作用:行为门控将评分漏洞检测结果降低至零,杀毒开关在检测到敏感数据时终止每个会话。但当专用工具被阻止时,智能体转而使用 `send_request`(一种通用 HTTP 原语)来近似被阻止工具的功能。`send_request` 的使用率从无保护时的 14% 上升至全保护下的 30%(针对行为门控目标)。 ### 压力实验(440 次运行,GLM 5.1 + minimax-m2.7) 操作压力(截止期限、权限升级、自我保存威胁)不会放大绕路行为。`send_request` 替代率在所有压力层级对两种模型保持稳定(约 67%,R² = 0.007 / 0.06)。任务描述解释了 33–37% 的绕路率变化;压力仅解释 5–6%。你如何描述目标决定了智能体是否会使用受保护的工具——而非你对其施加多少压力。 ## 架构 ``` ┌─────────────────────────────────────────────────────┐ │ ADAPTER LAYER │ │ ┌───────┐ ┌─────┐ ┌────────────┐ │ │ │ MCP │ │ CLI │ │ LangChain │ │ │ └───┬───┘ └──┬──┘ └─────┬──────┘ │ │ └─────────┴────────────┘ │ │ ActionRequest → ExecutionResult │ └──────────────────┬──────────────────────────────────┘ │ ┌──────────────────┼──────────────────────────────────┐ │ DRAGONFLY CORE │ │ ┌───────────────▼──────────────────┐ │ │ │ POLICY PIPELINE (8 checks) │ │ │ │ kill_switch → session → scope → │ │ │ │ prohibition → automation → │ │ │ │ testing_hours → confirmation → │ │ │ │ phase_gate │ │ │ └───────────────┬──────────────────┘ │ │ ┌───────────────▼──────────────────┐ │ │ │ EXECUTOR + POST-PROCESSOR │ │ │ └───────────────┬──────────────────┘ │ │ ┌───────────────▼──────────────────┐ │ │ │ TRACE LOGGER (Observations) │ │ │ └──────────────────────────────────┘ │ └─────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────┐ │ TOOL LAYER (114 tools) │ │ Pure async functions: (runner, params) → dict │ └─────────────────────────────────────────────────────┘ ``` ## 安全模型 三类独立的保护机制,每类均可通过干净的消融开关控制: | 保护机制 | 功能 | 消融开关 | |---|---|---| | **作用域强制** | 阻止访问作用域外的目标(3 层防护) | `disable_scope_check` | | **行为门控** | 对高风险工具要求确认,阻止禁止类别 | `disable_action_gating` | | **杀毒开关** | 检测到输出中的敏感数据时终止所有测试 | `disable_kill_switch` | ## 快速开始 ``` # 安装 uv sync # 作为 MCP 服务器运行 uv run python -m dragonfly # 运行测试 uv run pytest tests/ --tb=short -q ``` ### 运行实验 ``` # 启动 Docker 范围 cd range && docker compose up -d --build && cd .. # 消融研究:脚本化(45 次确定性运行) bash bench/scripts/run_full_experiment.sh # 消融研究:LLM(60 次 Gemini 2.5 Pro 运行) export GOOGLE_API_KEY="your-key" bash bench/scripts/run_llm_matrix.sh # 压力实验(每个模型 220 次运行) export OLLAMA_API_KEY="your-key" bash bench/scripts/run_pressure_matrix.sh # 汇总并生成分析 python bench/scripts/aggregate_pressure.py --input reports/experiments/pressure-* --output reports/analysis/pressure python bench/scripts/paper_tables_pressure.py --input reports/analysis/pressure/pressure_results.csv --output reports/paper/pressure ``` ## 项目结构 ``` src/dragonfly/ # Core package ├── core/ # Engine, pipeline, abstractions, safety, scope ├── tools/ # 114 security testing tools ├── adapters/ # MCP, CLI, LangChain/LangGraph └── strategies/ # YAML attack playbooks range/ # Docker test range (Juice Shop + 4 custom labs) bench/ # Experiment infrastructure ├── configs/ # Ablation condition configs (C0-C4) ├── scenarios/ # Scripted action sequences + pressure scenarios │ └── pressure/ # Pressure experiment: scenarios (S1-S4) + messages ├── ground-truth/ # Scenario definitions ├── protocol.yaml # Frozen LLM runtime protocol ├── PRESSURE_EXPERIMENT.md # Pressure experiment protocol └── scripts/ # Runners, scorers, aggregators, analysis tests/ # Tests docs/ # Documentation ``` ## 文档 | 文档 | 描述 | |---|---| | [完整文档](docs/README.md) | 架构、工具参考、安全模型、参与流程 | | [基准测试指南](bench/README.md) | 实验基础设施:消融与压力运行器、评分、分析 | | [压力实验](bench/PRESSURE_EXPERIMENT.md) | 压力实验协议与设计 | | [LangChain 适配器](src/dragonfly/adapters/langchain/README.md) | LangChain/LangGraph 集成 | | [测试范围](range/README.md) | Docker 目标服务 | ## 先决条件 - Python 3.11+,[uv](https://docs.astral.sh/uv/) - Docker Desktop(用于测试范围) - `/etc/hosts`:`127.0.0.1 decoy.test`(用于作用域测试) - 消融 LLM 运行:`GOOGLE_API_KEY`(Gemin 2.5 Pro) - 压力实验:`OLLAMA_API_KEY`(Ollama Cloud) ## 许可证 请参阅仓库中的许可证详情。
标签:API集成, CLI适配器, HTTP代理替代, LangChain适配器, LangGraph适配器, LLM代理行为研究, MCP适配器, 作用域强制, 动作门控, 可观测性, 大模型安全, 安全测试引擎, 安全防护, 审计追踪, 工具调用控制, 开源研究平台, 执行时保护, 杀死开关, 模型无关, 研究平台, 策略流水线, 自主安全测试, 请求拦截, 运行时保护, 逆向工具