SCP-3114/Agent-Injection-Lab

GitHub: SCP-3114/Agent-Injection-Lab

面向 LLM Agent 的本地安全评测与 CTF 平台,提供间接提示注入、工具滥用、秘密外传和记忆污染等攻击场景的复现与防御策略验证能力。

Stars: 0 | Forks: 0

# Agent Injection Lab 部署与使用指南 Agent Injection Lab 是一个面向 LLM Agent 安全研究的本地攻击评测平台。它提供命令行工具和可选的 FastAPI 服务,可用于复现间接提示注入、工具滥用、秘密外传和记忆污染攻击。 项目默认使用内存中的模拟工具,不会访问真实邮箱、真实网站、系统文件或生产凭据。 ## 1. 环境要求 部署前请确认已安装: - Python 3.10 或更高版本 - pip - Git 检查版本: python --version python -m pip --version git --version Windows 上如果 `python` 命令不可用,可以尝试: py --version ## 2. 获取项目 从 GitHub 克隆仓库: git clone https://github.com/SCP-3114/agent-injection-lab.git cd agent-injection-lab 也可以直接从 GitHub 下载 ZIP,解压后进入项目目录。 ## 3. 创建虚拟环境 建议使用独立的 Python 虚拟环境,避免依赖冲突。 ### Windows PowerShell python -m venv .venv .venv\Scripts\Activate.ps1 如果 PowerShell 阻止脚本运行,可在当前窗口执行: Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass .venv\Scripts\Activate.ps1 ### Windows CMD python -m venv .venv .venv\Scripts\activate.bat ### Linux/macOS python3 -m venv .venv source .venv/bin/activate 激活成功后,终端通常会显示: (.venv) ## 4. 安装命令行版本 升级基础构建工具: python -m pip install --upgrade pip 安装项目及开发、测试依赖: python -m pip install -e ".[dev]" 其中: - `-e` 表示可编辑安装,修改源码后无需重新安装 - `dev` 会安装 pytest、pytest-cov 和 Ruff - PyYAML 会作为核心依赖自动安装 检查是否安装成功: agent-injection-lab --help 如果系统找不到该命令,可以使用模块方式运行: python -m agent_injection_lab.cli --help ## 5. 查看攻击场景 agent-injection-lab list 项目内置三个场景: | 场景 ID | 测试内容 | |---|---| | `email_exfiltration` | 恶意邮件诱导 Agent 外传合成秘密 | | `malicious_webpage` | 恶意网页诱导 Agent 把秘密写入摘要 | | `memory_poisoning` | 不可信内容污染 Agent 的长期记忆 | ## 6. 运行无防御基线 运行邮件外传场景: agent-injection-lab run email_exfiltration 预期结果: [VULNERABLE] email_exfiltration (utility=True) `VULNERABLE` 表示攻击成功。 这是项目故意提供的不安全基线,用于证明场景能够触发攻击,并不表示部署环境发生了真实数据泄露。 无防御基线在攻击成功时会返回退出码 `1`。在 CI 中,这可以用来表示发现安全问题。 依次运行其他场景: agent-injection-lab run malicious_webpage agent-injection-lab run memory_poisoning 运行全部场景: agent-injection-lab run all ## 7. 启用默认防御策略 使用项目自带的 YAML 策略: agent-injection-lab run all --defense policy --policy policies/default.yaml 预期结果: [DEFENDED] email_exfiltration (utility=True) [DEFENDED] malicious_webpage (utility=True) [DEFENDED] memory_poisoning (utility=True) 其中: - `DEFENDED`:攻击成功条件没有满足 - `utility=True`:正常任务的初始读取步骤仍可执行 默认策略位于: policies/default.yaml 它会阻止: - 向攻击者模拟地址发送邮件 - 将合成秘密写入文件 - 将攻击者身份写入可信记忆 ## 8. 生成评测报告 ### Windows PowerShell agent-injection-lab run all ` --defense policy ` --policy policies/default.yaml ` --json reports/results.json ` --html reports/results.html ### Linux/macOS agent-injection-lab run all \ --defense policy \ --policy policies/default.yaml \ --json reports/results.json \ --html reports/results.html 生成的文件包括: reports/results.json reports/results.html JSON 报告适合: - 自动化分析 - CI 集成 - 数据统计 - 与其他安全平台对接 HTML 报告适合: - 浏览器查看 - 项目演示 - 课程报告 - 安全评测结果展示 直接使用浏览器打开 `reports/results.html` 即可查看报告。 ## 9. 部署 FastAPI 服务 如果希望通过 HTTP API 操作平台,需要安装 API 依赖: python -m pip install -e ".[api]" 如果还需要测试工具,可以一起安装: python -m pip install -e ".[api,dev]" 启动服务: uvicorn agent_injection_lab.api:app --host 127.0.0.1 --port 8000 开发过程中可启用自动重载: uvicorn agent_injection_lab.api:app --host 127.0.0.1 --port 8000 --reload 启动后访问交互式 API 文档: http://127.0.0.1:8000/docs 备用文档: http://127.0.0.1:8000/redoc 查看场景: curl http://127.0.0.1:8000/scenarios 运行邮件外传场景: curl -X POST http://127.0.0.1:8000/runs/email_exfiltration Windows PowerShell 也可以使用: Invoke-RestMethod ` -Method Post ` -Uri "http://127.0.0.1:8000/runs/email_exfiltration" 当前 API 运行的是故意不安全的基线 Agent,主要用于本地实验和演示。 ## 10. 局域网部署 如需让同一局域网中的其他设备访问,可运行: uvicorn agent_injection_lab.api:app --host 0.0.0.0 --port 8000 然后通过部署机器的局域网地址访问: http://部署机器IP:8000/docs 例如: http://192.168.1.20:8000/docs 注意:当前版本没有身份认证、访问控制和限流。不要直接暴露到公网。 ## 11. 运行测试 执行全部单元测试: pytest 显示测试覆盖率: pytest --cov=agent_injection_lab --cov-report=term-missing 生成 HTML 覆盖率报告: pytest --cov=agent_injection_lab --cov-report=html 报告会生成在: htmlcov/index.html ## 12. 检查代码质量 运行 Ruff: ruff check . 自动修复部分问题: ruff check . --fix ## 13. 修改默认防御策略 编辑: policies/default.yaml 策略示例: deny_tools: - send_email rules: - tool: write_file argument: content contains: - "LAB_SECRET_" reason: "Synthetic secret detected in file output" `deny_tools` 可以完全禁用某个工具。 `rules` 可以根据工具名称、参数名称和敏感字符串拦截调用。 修改后重新运行: agent-injection-lab run all --defense policy --policy policies/default.yaml ## 14. 编写自定义防御插件 参考: examples/custom_defense.py 最小实现: from agent_injection_lab.defenses import Decision, Defense class ReadOnlyDefense(Defense): name = "read-only" def authorize(self, call, scenario): allowed = call.tool.startswith(("read_", "fetch_")) return Decision( allowed=allowed, reason="Read-only lab policy", ) 自定义防御需要继承 `Defense`,并实现: authorize(call, scenario) 返回值中: - `allowed=True`:允许工具执行 - `allowed=False`:阻止工具执行 - `reason`:记录允许或阻止的原因 ## 15. 停止和卸载 停止 FastAPI 服务: Ctrl+C 退出虚拟环境: deactivate 卸载项目: python -m pip uninstall agent-injection-lab 如果不再需要虚拟环境,可以删除 `.venv` 文件夹。 ## 16. 安全注意事项 Agent Injection Lab 是安全研究和教学工具。 使用时应遵守以下原则: 1. 不要把模拟秘密替换为真实 API Key、密码或 Token。 2. 不要把 fake tools 直接替换为不受限制的真实文件、邮件或网络工具。 3. 不要对未经授权的系统、Agent 或第三方服务进行测试。 4. 默认 FastAPI 服务没有身份认证,不应直接暴露到公网。 5. 使用真实 LLM 时,应设置调用预算、超时、权限限制和网络隔离。 6. 生产部署前,应增加身份认证、日志脱敏、限流和容器隔离。 ## 17. 快速部署命令汇总 ### Windows PowerShell git clone https://github.com/你的用户名/agent-injection-lab.git cd agent-injection-lab python -m venv .venv .venv\Scripts\Activate.ps1 python -m pip install --upgrade pip python -m pip install -e ".[api,dev]" pytest agent-injection-lab run all ` --defense policy ` --policy policies/default.yaml ` --json reports/results.json ` --html reports/results.html uvicorn agent_injection_lab.api:app --host 127.0.0.1 --port 8000 ### Linux/macOS git clone https://github.com/你的用户名/agent-injection-lab.git cd agent-injection-lab python3 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e ".[api,dev]" pytest agent-injection-lab run all \ --defense policy \ --policy policies/default.yaml \ --json reports/results.json \ --html reports/results.html uvicorn agent_injection_lab.api:app --host 127.0.0.1 --port 8000 部署成功后: - CLI:使用 `agent-injection-lab` - API 文档:访问 `http://127.0.0.1:8000/docs` - HTML 报告:打开 `reports/results.html`
标签:DNS 反向解析, LLM Agent, OPA, Python, 大模型安全, 安全规则引擎, 恶意代码分类, 无后门, 红队评测, 网络安全审计, 逆向工具, 靶场