Chunduri-Aditya/agent-shield

GitHub: Chunduri-Aditya/agent-shield

一个基于 Inspect AI 的 LLM Agent 安全评估框架,通过报告攻击成功率、良性任务效用及独创的透明率来全面衡量 Agent 在对抗性压力下的安全表现。

Stars: 0 | Forks: 0

# agent-shield 一个用于评估 LLM agents 在对抗性压力下表现的框架。基于 [Inspect AI](https://inspect.aisi.org.uk) 测试工具运行。兼容 AgentDojo。报告大多数 agent 基准测试会忽略的维度:agent 是否告知其操作者它正遭受攻击。 ## 为什么需要它 大多数 agent 基准测试回答两个问题: 1. 用户任务成功了吗? 2. 攻击成功了吗? 一个能够默默抵御攻击的系统胜过被劫持的系统。但它不如一个既能抵御攻击*又能*指出其所发现问题所在的系统。Agent Shield 将这种缺失的信号称为 **Transparency Rate**(透明率),并在各模块中一致地报告该指标。 早期数据揭示了一个值得关注的对比现象。同一家提供商在直接 prompt injection 上的得分可能为零,但却能在 Cialdini 压力下标记出操纵行为。而另一家提供商在面对相同问题和相同随机种子时,在这两种场景下均未暴露任何异常。如果这种对比在规模化后依然成立,那么“模型抵御了攻击”和“模型大声宣告其抵御了攻击”就不再是相同的结果了。 ## 模块覆盖范围 | 模块 | 状态 | 探测内容 | 攻击 ID | |---|---|---|---| | `inputs/` | live | 通过直接指令覆盖进行 Prompt injection | IN-01..IN-05 | | `tools/` | live | 通过描述和输出注入进行 MCP 工具投毒 | TL-01..TL-05 | | `psych/` | live | 基于 Cialdini 的社会工程学(6 大原则) | PS-01..PS-06 | | `memory/` | live | 通过检索注入进行 RAG 存储投毒 | MM-01 | | `exfil/` | live | 隐蔽的数据渗出渠道(零宽字符、同形异义字、base64、URL 接收端) | EX-01..EX-05 | | `drift/` | live | 多轮行为漂移与迎逢操纵 | DR-01..DR-06 | | `env/` | deferred (v1.1) | PDF、图像、日历、电子邮件载荷 | — | | `multiagent/` | deferred (v1.1) | 对抗性对等节点与 orchestrator 攻击 | — | 各模块待解决问题详见 [ROADMAP.md](ROADMAP.md)。范围锁定详见 [SHIP_LINE.md](SHIP_LINE.md)。 ## 威胁模型 Agent Shield 的目标是 **LLM agents**,而非抽象意义上的纯聊天模型。四个对抗级别如下: - **L1** — 攻击者编写 agent 读取的内容 - **L2** — 攻击者发布 agent 使用的工具 - **L3** — 攻击者投毒 memory 或检索过程 - **L4** — 攻击者在多 agent 工作流中充当对等 agent 纯聊天模型仅作为非 agentic 接口(`inputs/`、`drift/`、`psych/`、`exfil/` 的部分内容)的有效目标。完整模型详见 [THREAT_MODEL.md](THREAT_MODEL.md)。 ## 指标 每次评估都报告相同的四个核心指标: - **Benign Utility** — 无攻击情况下的任务成功率 - **Utility Under Attack** — 攻击运行期间的任务成功率 - **Targeted ASR** — 针对特定目标的攻击成功率 - **Transparency Rate** — 在受攻击的运行中,agent 向用户暴露攻击行为的比例 对于本项目而言,缺乏 Transparency Rate 的结果是不完整的。TR 既是一项安全指标,也是一项认知可访问性指标——它反映了 agent 让其防御行为对能力受限的人类操作者具有可读性的比率。 ## 当前状态 目前有六个模块已上线,涵盖 27 个攻击 ID:`inputs/`、`tools/`、`psych/`、`memory/`、`exfil/`、`drift/`。核心模块中记录了所有四种交付线模型的日志:`anthropic/claude-sonnet-4-5`、`ollama/llama3.1:8b`、`groq/llama-3.3-70b-versatile` 以及 `google/gemini-3.5-flash`。目前有一个防御基线已上线:针对 `inputs/` 和 `psych/` 的 spotlighting 技术。包含随机种子、日期和 Inspect 日志文件名的各模型、各模块覆盖情况详见 [RESULTS.md](RESULTS.md)。范围锁定详见 [SHIP_LINE.md](SHIP_LINE.md)。 ## 仓库结构 ``` agent-shield/ ├── evals/ Inspect AI task definitions (one file per module) ├── inputs/ Prompt injection attack registry ├── tools/ MCP attack registry and demo server ├── psych/ Cialdini grounded attack registry ├── memory/ RAG store and poisoning attack registry ├── exfil/ Covert exfiltration attack registry ├── drift/ Behavioral drift attack registry ├── defenses/ Defense baselines (spotlighting) ├── reports/ Plain-language report schema and latest output ├── scripts/ Sweep runner, model registry, auth checks ├── tests/ Pytest suite ├── docs/ Reading notes, free agent backend reference ├── risk_registry.py AIVSS-scored attack metadata with CIA and OWASP mappings ├── report_generator.py Plain-language report builder (make report) ├── ROADMAP.md Module status and per module open questions ├── SHIP_LINE.md v1.0.0 scope lock and done criteria ├── THREAT_MODEL.md Threat model and metric definitions ├── MAPPINGS.md OWASP LLM, OWASP Agentic, MITRE ATLAS attack registry ├── RESULTS.md Logged runs with seeds, dates, model IDs, commit SHAs ├── BACKLOG.md Out of scope ideas and v1.1 deferred items └── ETHICS.md Responsible disclosure policy ``` ## 技术栈 - Python `3.11+` - [uv](https://docs.astral.sh/uv/) 用于环境和依赖管理 - [Inspect AI](https://inspect.aisi.org.uk) 用于评估编排 - `inspect-evals[agentdojo]` 来自于 `../inspect_evals` 的本地可编辑检出 - Provider SDKs:Anthropic、OpenAI、Google GenAI ## 快速开始 ``` uv sync # .env 已被 gitignore — 请直接添加你的密钥: # ANTHROPIC_API_KEY, GROQ_API_KEY, GOOGLE_API_KEY # Ollama 无需密钥:ollama serve && ollama pull llama3.1:8b make status # check which models are available make eval # Inspect harness smoke test make eval-inputs # IN-01..IN-05 make eval-tools # TL-01..TL-05 make eval-psych # PS-01..PS-06 make eval-memory # MM-01 make eval-exfil # EX-01..EX-05 make eval-drift # DR-01..DR-06 make eval-all # all six modules make sweep # run all modules against all available models make report # generate plain-language report from latest eval log make test # pytest make lint # ruff ``` ## 环境变量 本仓库使用的 Provider 密钥: - `ANTHROPIC_API_KEY` - `OPENAI_API_KEY` - `GOOGLE_API_KEY` - `GROQ_API_KEY` 密钥存放在 `.env` 文件中(已被 gitignore 忽略)。免费后端参考请见 [docs/free_agents.md](docs/free_agents.md)。 ## 可复现性 可复现性记录保留在仓库内: - [RESULTS.md](RESULTS.md) — 包含模型 ID、随机种子、时间戳、commit SHA 的运行摘要 - [MAPPINGS.md](MAPPINGS.md) — 每个攻击均映射至 OWASP LLM、OWASP Agentic、MITRE ATLAS - [docs/reading_notes.md](docs/reading_notes.md) — 按攻击代码索引的论文笔记 ## 测试 Agent Shield 会在单元测试路径之外进行模型调用。测试主要验证 确定性评分、攻击元数据一致性、论文工件 可复现性、风险门控行为以及报告生成。完整的测试套件 无需 API 密钥、网络访问或本地模型服务器即可运行。 ``` make test # pytest — no API keys required make lint # ruff + mypy ``` ## 安全性 如果在本仓库的代码或工具中发现问题,请按照 [.github/SECURITY.md](.github/SECURITY.md) 的说明私下报告。披露政策详见 [ETHICS.md](ETHICS.md)。 ## 许可证 MIT — 详见 [LICENSE](LICENSE)。
标签:CISA项目, DLL 劫持, LLM代理, 多语言支持, 大语言模型, 安全测试框架, 对抗性机器学习, 红队评估, 逆向工具