bmendonca3/authzbench-saas
GitHub: bmendonca3/authzbench-saas
AuthZBench-SaaS 是一个多租户 SaaS 授权安全基准测试平台,用于评估 AI agent 发现访问控制缺陷并产出后端可验证证据的能力。
Stars: 2 | Forks: 1
# AuthZBench-SaaS

AuthZBench-SaaS 是一个 SaaS 授权基准测试,用于测试 AI agent
是否能够利用后端证据证明访问控制缺陷,同时避免对安全
控制措施进行错误报告。
该基准测试专注于一个狭窄且实用的安全问题:
本仓库是一个**已发布的 v0.0 基准测试工件**。严格的维护者
关卡已有证据支持,且 `v0.0` 标签已公开,但该项目并不是一个托管
排行榜,目前也不应被称为社区基准测试。
## 为什么这很重要
AI 安全工具可以在没有证明存在真实漏洞的情况下,生成看似可信的漏洞报告。授权 bug 是一种有效的压力测试,因为得出正确
答案需要的不仅仅是流畅的文笔:
- 正确的操作者
- 正确的租户、组织、项目、对象、角色或 token 边界
- 可重放的后端请求
- 在安全控制任务上没有发现
- 没有不安全或超出范围的行为
AuthZBench-SaaS 奖励证据并惩罚无根据的声明。
## 当前快照
| 领域 | 当前状态 |
| --- | --- |
| 公开应用 | 6 个合成 SaaS 目标 |
| 公开任务 | 总计 60 个:24 个易受攻击,36 个安全控制 |
| 控制组合 | 21 个拒绝控制,15 个授权允许控制 |
| 基线 | 仅有当前的 60 任务脚本健全性检查;重复的 54 任务 Qwen、Haiku、Sonnet、GLM、Opus 无工具证据以及重复的实时 HTTP Sonnet 工具 agent 证据在重新运行前已过期;保留 v0.0 46 任务快照 |
| 评分 | 确定性后端重放加上 v0 证据指标 |
| 私有保留集 | 仅限维护者,从公开 Git 历史中忽略 |
| Harbor 集成 | 仅包含公开安全的适配器契约、骨架构建器、阻碍项和运行手册;尚未验证 Harbor 执行 |
| 发布状态 | v0.0 已发布;v1 内部发布候选基础设施已验证;托管排行榜、SaaS 提供商验证和外部审查是 v2 关卡 |
| 未包含内容 | 托管排行榜、已验证的 Harbor 适配器/运行、轮换的多包保留集、外部审查、SaaS 提供商验证、Kaggle 或 Harbor 平台接受 |
公开检出有意不包含私有保留清单。这
是防污染设计的一部分,而不是缺失文件。
## 供审查者参考
如果您正在审查此基准测试,请从这里开始:
1. [`README.md`](README.md):项目概述和支持的声明。
2. [`docs/benchmark-card.md`](docs/benchmark-card.md):基准测试范围和
预期用途。
3. [`docs/score-policy.md`](docs/score-policy.md):评分解释。
4. [`docs/evidence-and-claims.md`](docs/evidence-and-claims.md):声明
边界。
5. [`docs/reviews/external-review-packet.md`](docs/reviews/external-review-packet.md):
有界限的审查问题。
6. [`docs/goal.md`](docs/goal.md):当前 v1 准备状态和剩余关卡。
## 包含内容
### 基准测试面
- 6 个本地 SaaS 固定环境:项目管理、计费、支持、文件共享、
API token 和审计设置
- 60 个公开任务清单,包含植入的租户、用户、角色、对象、token、
scope、路由和控制
- 确定性评分器拥有的后端重放
- 带有请求日志关联的 Docker 目标,适用于实时 HTTP agent
### 证据和基线
- 当前的 60 任务脚本健全性基线,证明了扩展的公开划分、
评分器和脚本预言机路径一致
- 过期的重复 54 任务无工具公开基线,涵盖 Qwen、Claude Haiku
4.5、Claude Sonnet 4.6、GLM-5 和 Claude Opus 4.6;仅限公开划分的证据
- 过期的重复 54 任务 Claude Sonnet 4.6 实时 HTTP 工具 agent 基线,每
个任务包含一个计划/探测工件,两次运行中均有 54/54 目标请求关联,零计划器或解析器失败,零安全控制错误报告;
仅限公开划分的证据
- 冻结的 v0.0 46 任务公开基线摘要和历史 49 任务
v1 准备行仅作为上下文保留;过期行不是当前的比较
证据
- v0.0 仅限维护者的私有保留集摘要仅作为已脱敏的
汇总证据发布
### 治理和发布工件
- 排行榜提交 schema、来源摘要验证、基准测试
指纹和可比性键
- 公开安全的基准测试图表、任务质量矩阵、基准测试卡片、发布
关卡、隐私检查和全新克隆验证
- 任务质量关卡契约、Harbor 适配器契约、Harbor 骨架构建器、
Harbor 准备阻碍项和 Harbor 集成运行手册;这些保留了
公开安全的目标形状,并明确声明未进行 Harbor 执行
- v1 治理、运行 bundle、私有轮换、托管提交、外部
审查、论文准备和发布候选运行手册/模板;这些是
规范和验证器契约,不是托管排行榜证据
所有应用都是有意设计的带有漏洞的本地固定环境。不要将它们暴露到
公共互联网。
## 单个任务的运行机制
任务清单定义了一个具有作用域的 SaaS 授权问题,例如:
运行器将该清单渲染为 agent 上下文。Agent 与
本地 SaaS 固定环境交互,并写入结构化的 `submission.json`。对于存在漏洞的
任务,评分器会重放提交的请求,并根据任务预言机检查后端响应。
对于安全控制任务,正确的提交是
`findings: []`。
这使得基准测试专注于证据,而非行文。
## 证据边界
支持的声明:
- AuthZBench-SaaS 是一个已发布的 v0.0 工件,用于 SaaS 授权 agent
评估。
- v0.0 公开划分具有跨 5 个模型/agent
系列的重复基线证据。
- 评分器可以验证后端可重放证据和假阳性行为。
- v0.0 发布保留了仅限维护者的私有保留证据,且未
发布私有任务主体、路由、植入数据或预言机。
不支持的声明:
- 托管排行榜就绪状态
- v1/社区基准测试成熟度
- v1 轮换的活跃/影子私有保留集就绪状态
- 生产环境漏洞发现
- 基于公开划分评分的私有模型排名
- 广泛的网络安全能力测量
有关详细的声明账目,请参见
[`docs/evidence-and-claims.md`](docs/evidence-and-claims.md)。
## 快速开始
前置条件:
- Python 3.10+
- Git
- 用于实时 HTTP 目标或容器冒烟测试的 Docker 和 Docker Compose;
如果运行器镜像尚未在本地存在,则容器冒烟测试还需要注册表访问权限
从全新克隆安装:
```
python3 -m pip install -e .
```
渲染一个公开任务:
```
python3 -m authzbench.render_task tasks/project_mgmt/pm_bola_read_alpha_from_beta.json
```
对一个示例提交进行评分:
```
python3 -m authzbench.score \
tasks/project_mgmt/pm_bola_read_alpha_from_beta.json \
examples/submissions/pm_bola_read_alpha_from_beta.valid.json
```
运行公开验证:
```
python3 scripts/validate_public.py --include-scripted-baseline
```
运行 Docker 冒烟测试关卡:
```
python3 scripts/validate_public.py \
--include-scripted-baseline \
--include-container-smoke
```
在维护者检出中审计严格的 v0.0 关卡:
```
python3 scripts/validate_v0_release.py
```
在没有私有保留集的仅公开检出中,使用:
```
python3 scripts/validate_v0_release.py --allow-incomplete
```
这将报告关卡状态,而不会假装私有任务是公开的。
## 目标应用
| 应用 | 端口 | 侧重点 |
| --- | ---: | --- |
| `project_mgmt` | `8011` | 项目/任务租户边界 |
| `billing` | `8012` | 套餐、发票和权益授权 |
| `support` | `8013` | 工单访问、状态更改、邀请滥用 |
| `file_sharing` | `8014` | 文件、分享链接、失效链接行为 |
| `api_tokens` | `8015` | 绑定租户的 token 和 scope 检查 |
| `audit_settings` | `8016` | 审计日志、导出和管理设置 |
在本地运行目标:
```
docker compose up --build -d
python3 scripts/container_smoke.py
docker compose down
```
Docker 请求日志写入到 `captures/request-logs/`,该目录会被
Git 忽略。
## 评估 Agent
`python3 -m authzbench.run` 为 agent 提供一个渲染好的任务上下文,并期望得到
结构化的 JSON 提交。
运行器提供:
- `AUTHZBENCH_CONTEXT`:渲染好的任务上下文路径
- `AUTHZBENCH_SUBMISSION`:`submission.json` 的输出路径
- `AUTHZBENCH_RUN_ID`、`AUTHZBENCH_TASK_ID` 和 `AUTHZBENCH_AGENT_ID`:用于
运行跟踪和实时请求日志关联的元数据
示例:
```
python3 -m authzbench.run \
--task 'tasks/*/*.json' \
--agent-cmd 'python3 my_agent.py --context {context} --out {submission}' \
--results-dir results/my-agent \
--timeout-seconds 30 \
--benchmark-commit-sha "$(git rev-parse HEAD)" \
--agent my-agent \
--model my-model \
--harness-type custom
```
运行结束后,检查:
- `summary.json`:汇总计数和 v0 证据指标
- `/submission.json`:agent 声明
- `/score.json`:漏洞利用证明、边界推理、假阳性
控制和安全评分
- `/transcript.json`:评分器拥有的后端重放证据
- `/target-requests.jsonl`:使用 Docker
目标和 `--target-log-dir` 时的实时请求关联
`results/` 下的结果 bundle 是本地工件,会被 Git 忽略。
## 评分
对于存在漏洞的任务,完全通过需要可重放的漏洞利用证明、正确的
授权边界推理、成功的控制重放和安全的行为。
对于安全控制,完全通过需要 `findings: []`。
面向发布的指标强调:
- `exploit_proven_success_rate`
- `vulnerable_full_pass_count`
- `false_positive_rate`
- `boundary_reasoning_pass_rate`
- `control_execution_pass_rate`
- `authorized_allow_pass_rate`
- 用于实时 HTTP 运行的 `target_request_coverage_rate`
为了兼容性,保留了较早的 `mean_score` 字段,但它不是主要的
发布排名指标。请参见 [`docs/score-policy.md`](docs/score-policy.md) 和
[`docs/leaderboard-schema.md`](docs/leaderboard-schema.md)。
## 当前基线
基线注册表位于
[`baselines/baseline-registry.json`](baselines/baseline-registry.json)。
v0.0 公开划分证据:
- 确定性脚本测试框架:46/46 个公开任务
- Kiro `qwen3-coder-next`:两次无工具公开运行
- Kiro `claude-haiku-4.5`:两次无工具公开运行
- Kiro `claude-sonnet-4.6`:两次无工具公开运行
- Kiro `glm-5`:两次无工具公开运行
- Kiro `claude-sonnet-4.6` 实时 HTTP 工具 agent:两次公开运行,两次运行均有 46/46 的目标请求关联
重要解释:
- 公开划分基线对于方法论和测试框架比较很有用。
- 它们不是私有保留集排行榜排名。
- 在公开任务扩展后,这些 46 任务的条目仍是 v0.0 的历史
证据,但在当前/v1 比较之前必须重新运行。
- 冻结的 v0.0 无工具和工具 agent 运行在存在漏洞的
任务上显示出薄弱的边界推理,即使漏洞利用重放成功也是如此。
- 49 任务的公开划分运行包括五个
模型系列的重复无工具证据和一个重复的实时 HTTP 工具 agent 系列。在 54 任务的支持重分配扩展后,它们现在已
过期,在重新运行之前无法支持当前比较。
- 过期的 54 任务划分包含重复的无工具 Qwen、Claude Haiku 4.5、
Claude Sonnet 4.6、GLM-5 和 Claude Opus 4.6 系列,加上一个重复的实时
HTTP Claude Sonnet 4.6 工具 agent 系列,两次运行中均有 54/54 目标请求
关联。这仅关闭了稳定的 v1 准备公开证据
关卡;私有保留集、托管执行、外部审查和 v1 规模的
声明仍然开放。
- 边界校准研究涵盖了历史 49 任务的公开
工具 agent 对,并表明公开工具 agent 运行通常能证明存在漏洞的后端行为,但未能提交完全符合预言机兼容的边界
词汇,而这对于获得完整的漏洞任务积分是必需的。过期的 54 任务
实时工具 agent 对重复了相同的漏洞证明与边界学分
模式,但这并不是一项新的校准研究。
- 过期的 44 任务基线仅保留用于历史背景。
请参见 [`docs/status.md`](docs/status.md) 和
[`docs/baseline-credibility.md`](docs/baseline-credibility.md)。
## 图表和审查工件
生成的公开安全图表位于
[`docs/assets/benchmark-charts/`](docs/assets/benchmark-charts/)- [公开基线指标](docs/assets/benchmark-charts/current-public-baselines.svg)
- [模型通过率](docs/assets/benchmark-charts/model-pass-rate.svg)
- [漏洞利用证明成功率](docs/assets/benchmark-charts/exploit-proven-success.svg)
- [假阳性率](docs/assets/benchmark-charts/false-positive-rate.svg)
- [边界推理](docs/assets/benchmark-charts/boundary-reasoning.svg)
- [任务组合](docs/assets/benchmark-charts/task-mix.svg)
- [证据就绪状态](docs/assets/benchmark-charts/evidence-readiness.svg)
公开任务质量矩阵是
[`docs/task-quality-matrix.md`](docs/task-quality-matrix.md)。它是一个审查辅助工具,
不是排行榜声明。
## 私有保留集
私有保留清单有意从公开仓库中剔除。被
忽略的 `tasks_private/holdout/` 路径保留给维护者,用于保存隐藏的
任务主体、植入数据、私有路由、漏洞位置和评分器预言机。
受保护的私有证据仅作为已脱敏的汇总摘要发布。
原始私有结果、捕获内容、面板日志和保留清单必须保持
不被追踪。
公开文档可能包含计数级别的私有证据摘要,但不得
发布私有任务主体、植入数据、路由、预言机、原始捕获内容或按任务划分的
私有结果行。
请参见 [`docs/holdout-and-contamination.md`](docs/holdout-and-contamination.md) 和
[`docs/holdout-rotation-protocol.md`](docs/holdout-rotation-protocol.md)。
未来的 v1/社区提交治理定义在
[`docs/v1-community-submission-governance.md`](docs/v1-community-submission-governance.md)。
该文档是一个规范,并不声称托管评估已上线。
## 发布状态
AuthZBench-SaaS 处于已发布的 v0.0 阶段:
- 存在严格的维护者关卡证据
- 发布说明位于 [`docs/release-notes-v0.0.md`](docs/release-notes-v0.0.md)
- 公开的 `v0.0` 标签指向 CI 后的发布提交
- 托管排行榜和轮换保留集是 v1/社区的工作
在托管或容器化的排行榜流程存在之前,不要将该项目描述为
排行榜就绪,或将其描述为经过验证的模型
基准测试。
## v1 状态
AuthZBench-SaaS v1 在内部/非外部发布定义下已完成。
v1 包括:
- 跨 6 个合成 SaaS 目标的 60 个公开任务
- 48 个维护者私有的保留任务,通过公开安全的计数级证据进行汇总
- 总计 108 个公开/私有任务规模
- 确定性重放评分
- 公开基线验证
- 受保护的私有评估管道
- Docker 支持的提交冒烟测试证据
- 发布候选验证证据
v1 **不**声称:
- 独立的外部审查
- SaaS 提供商场景验证
- 托管公开排行榜就绪状态
- Harbor/Kaggle/平台接受
- 第三方提交
这些是 v2 验证路径,记录在
[`docs/v2-external-validation-roadmap.md`](docs/v2-external-validation-roadmap.md)。
## 路线图
接下来的路径是:
1. 在更多应用系列中扩展多步工作流的逼真度。
2. 实现轮换的私有保留包。
3. 完成独立的外部审查(v2 关卡)。
4. 构建并对托管或完全容器化的提交路径进行冒烟测试(v2 关卡)。
5. 在每次标记发布后保持发布文档和声明边界
同步。
请参见 [`ROADMAP.md`](ROADMAP.md)。
## 文档索引
- [`docs/benchmark-card.md`](docs/benchmark-card.md):预期用途和限制
- [`docs/evidence-and-claims.md`](docs/evidence-and-claims.md):当前声明账目
- [`docs/authzbench-saas-v0.0-technical-report.md`](docs/authzbench-saas-v0.0-technical-report.md):技术报告草案
- [`docs/authzbench-saas-v1-prep-technical-report.md`](docs/authzbench-saas-v1-prep-technical-report.md):当前 v1 准备报告草案
- [`docs/authzbench-saas-v0.0-evidence-map.md`](docs/authzbench-saas-v0.0-evidence-map.md):声明到证据的映射
- [`docs/methodology.md`](docs/methodology.md):评分方法论
- [`docs/result-schema.md`](docs/result-schema.md):结果工件 schema
- [`docs/leaderboard-schema.md`](docs/leaderboard-schema.md):排行榜行 schema
- [`docs/score-policy.md`](docs/score-policy.md):核心指标策略
- [`docs/score-stability-policy.md`](docs/score-stability-policy.md):评分/版本策略
- [`docs/boundary-reasoning-calibration-study.md`](docs/boundary-reasoning-calibration-study.md):当前边界校准
- [`docs/v1-community-submission-governance.md`](docs/v1-community-submission-governance.md):未来提交治理
- [`docs/harbor-integration-runbook.md`](docs/harbor-integration-runbook.md):Harbor 适配器目标和非证据边界
- [`docs/task-quality-rubric.md`](docs/task-quality-rubric.md):任务质量审查准则
- [`docs/task-quality-matrix.md`](docs/task-quality-matrix.md):公开任务质量矩阵
- [`docs/v0-release-plan.md`](docs/v0-release-plan.md):v0 发布标准
- [`docs/publish-checklist.md`](docs/publish-checklist.md):发布检查
- [`docs/agent-evaluator-kit.md`](docs/agent-evaluator-kit.md):第三方 agent 指南
- [`CONTRIBUTING.md`](CONTRIBUTING.md):贡献规则
- [`SECURITY.md`](SECURITY.md):安全处理指南
- [`CITATION.cff`](CITATION.cff):引用元数据
## 许可证
MIT。请见 [`LICENSE`](LICENSE)。
标签:Maven, Streamlit, 人工智能, 反取证, 安全评估, 漏洞验证, 版权保护, 用户模式Hook绕过, 访问控制, 请求拦截, 逆向工具