Skip to content

o0x1024/aiagentsec-benchmarks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI Agent Security Benchmarks

中文 | English

一个用于评估 AI Agent 安全能力的 Benchmark 平台,主线为可重复部署的 Web CTF 题目,并扩展支持接入外部靶场,如 Vulhub 与 VulnHub。

项目目标

这个项目评测的不是单点 payload 命中率,而是 AI Agent 是否具备完整的安全作战能力:

  • 发现攻击面
  • 枚举接口与资产
  • 理解认证、授权与业务逻辑
  • 验证漏洞并构造利用链
  • 获取 flag 与证据
  • 在有限步骤、有限上下文中稳定完成任务

核心原则

  • 从第一性原理出发设计题目和平台
  • 先保证可维护、可重复、可观测,再追求题量
  • 平台与题目解耦,题目与运行时解耦
  • Docker Web 题作为主线,VM 靶场作为扩展
  • Web Console、CLI、Agent Runner 共享同一套控制面 API

平台定位

该项目不是“20 个 Docker 靶场”的集合,而是一个可扩展的 AI Agent Security Benchmark Platform:

  • 主线题源:原生 Docker Web Challenges
  • 扩展题源:Vulhub、VulnHub、Custom Compose,以及后续 K8s / Remote Runtime
  • 运行入口:Web Console + CLI + API
  • 目标环境:Windows / macOS / Linux 上的本地或私有部署

V1 范围

V1 聚焦于最稳的一条主线:

  • 20 道原生 Web CTF 题
  • 统一 challenge.yml 规范
  • Docker Runtime
  • Control Plane Backend
  • Web 管理后台
  • CLI
  • Checker / Grader / Reset 工具链

V1 不追求:

  • 任意外部靶场全自动导入
  • 多租户 SaaS 化
  • 大规模分布式调度
  • 全量 VM 兼容

当前状态

当前仓库已经落地了 V1 的主线骨架:

  • 20 道原生 Docker Web 题,按 Tier 1 到 Tier 5 分层
  • Node.js / TypeScript 控制面后端
  • React Web Console
  • API 驱动 CLI
  • 全量 checker
  • 批量启动、停止、重置能力
  • 单题与批量 checker 触发能力
  • Vulhub 半自动导入骨架

已验证结果:

  • 20/20 challenge checker 通过
  • 每题支持 docker compose up/down
  • Web Console 可展示目录、详情、状态、健康、日志
  • Backend 提供单题和批量生命周期接口

默认账号

首次启动且后端还没有任何用户时,系统会自动创建一个默认管理员:

  • 用户名:admin
  • 密码:AdminPass123

也可以通过环境变量覆盖:

  • BENCH_DEFAULT_ADMIN_USERNAME
  • BENCH_DEFAULT_ADMIN_PASSWORD

首次登录后必须修改密码;如果准备将平台暴露到共享网络或公网,请务必显式设置管理员凭证,不要依赖默认回退值。

快速开始

1. 启动 Backend

cd platform/backend
npm install
npm run dev

2. 启动 Frontend

cd platform/frontend
npm install
npm run dev

默认访问:

  • Backend: http://127.0.0.1:8000
  • Frontend: http://127.0.0.1:5173

应用启动时,如果后端还没有任何用户,会自动创建一个默认管理员。默认用户名和密码分别来自 BENCH_DEFAULT_ADMIN_USERNAME / BENCH_DEFAULT_ADMIN_PASSWORD,未设置时回退到 admin / AdminPass123。首次登录后必须先修改密码;Web 控制台随后通过浏览器 HttpOnly 会话维持登录,agent / CLI 需要的访问凭证则在登录后单独签发 Agent-Token

如果你准备把平台暴露到共享网络或公网,请显式设置管理员凭证,不要依赖默认回退值。

3. 使用 CLI

cd platform/cli
npm install
npm run build
node dist/benchctl.js login --username admin --password AdminPass123
node dist/benchctl.js whoami
node dist/benchctl.js tokens
node dist/benchctl.js overview
node dist/benchctl.js list --tier 2
node dist/benchctl.js start --tier 1
node dist/benchctl.js stop
node dist/benchctl.js reset web-01-robots-leak
node dist/benchctl.js status web-11-ssrf-internal
node dist/benchctl.js targets web-11-ssrf-internal
node dist/benchctl.js logs web-11-ssrf-internal --tail 50
node dist/benchctl.js check --tier 1
node dist/benchctl.js import-compose /path/to/compose/project
node dist/benchctl.js import-vulhub /path/to/vulhub/project --id demo-vulhub
node dist/benchctl.js import-vulnhub /path/to/image.ova --id demo-vm
node dist/benchctl.js list-imports
node dist/benchctl.js show-import custom-compose my-import
node dist/benchctl.js preflight-import custom-compose my-import
node dist/benchctl.js update-import custom-compose my-import --benchmark-file /tmp/benchmark.json
node dist/benchctl.js validate-imports
node dist/benchctl.js register-import custom-compose my-import
node dist/benchctl.js unregister-import custom-compose my-import

3.1 构建发布产物

node tools/platform/publish.mjs --version v0.2.0
node tools/platform/publish.mjs --version v0.2.0 --only backend,cli

默认会在 artifacts/releases/<version>/ 下生成:

  • backend/
  • cli/
  • frontend/
  • manifest.json

4. 本地跑全量 Checker

python3 tools/checker/run_all.py
python3 tools/checker/run_all.py --tier 3
python3 tools/checker/run_all.py web-11-ssrf-internal web-20-frankenstack
python3 tools/checker/run_all.py --json --output artifacts/checks/latest.json

4.1 生成评分报告

python3 tools/grader/grade.py
python3 tools/grader/grade.py --tier 1 --output-dir artifacts/grades/tier-1
python3 tools/grader/grade.py --tier 1 --trace-file artifacts/traces/sample.json --output-dir artifacts/grades/tier-1
python3 tools/platform/manage.py grade --tier 1 --trace-file artifacts/traces/sample.json --output-dir artifacts/grades/tier-1

也可以先把 runner 产出的 trace 提交给 backend,再导出为 grader 兼容 bundle:

node platform/cli/dist/benchctl.js record-trace artifacts/traces/sample.json
node platform/cli/dist/benchctl.js list-runs --challenge-id web-01-robots-leak --limit 20
node platform/cli/dist/benchctl.js export-traces --output artifacts/traces/exported.json
python3 tools/grader/grade.py --trace-file artifacts/traces/exported.json

4.2 直接把平台交给 Agent

推荐主流程是:

  1. 用户登录后台
  2. 用户生成一个专用 token
  3. 把 token、OpenAPI 文档地址和 agent 使用说明交给 agent
  4. agent 直接调用控制面 API 自动解题

建议交给 agent 的文档:

控制面会提供这几类关键接口:

  • GET /openapi.json
  • GET /api/challenges
  • GET /api/challenges/{id}
  • POST /api/start_challenge
  • POST /api/hint
  • POST /api/submit
  • POST /api/stop_challenge

认证头:

Agent-Token: <issued_token>

4.3 可选:运行 Agent Runner

如果你仍然需要一个本地编排层,仓库也提供了一个最小可用的 agent runner:

python3 tools/agent/runner.py \
  --api-base-url http://127.0.0.1:8000 \
  --username admin \
  --password AdminPass123 \
  --solver-cmd "python3 tools/agent/example_solver.py" \
  --tier 1 \
  --limit 2

这个 runner 会顺序执行:

  • 拉题目
  • 启动题目
  • 调用外部 solver
  • 提交 flag
  • 停止题目
  • 回传 trace

详细说明见:

5. 生成 Vulhub 导入草稿

node platform/cli/dist/benchctl.js import-compose /path/to/compose/project
python3 adapters/vulhub/importer.py /path/to/vulhub/project imports/vulhub/my-import
node platform/cli/dist/benchctl.js import-vulhub /path/to/vulhub/project --id my-import
node platform/cli/dist/benchctl.js import-vulnhub /path/to/image.ova --id my-vm

通过控制面和 CLI 创建的导入草稿会写入 SQLite,不会假装已经完成 checker、flag、healthcheck 标准化。外部 adapter 脚本如需产出中间文件,仍可按各自约定执行。

可以继续查看和校验这些草稿:

node platform/cli/dist/benchctl.js list-imports
node platform/cli/dist/benchctl.js show-import custom-compose my-import
node platform/cli/dist/benchctl.js preflight-import custom-compose my-import
node platform/cli/dist/benchctl.js update-import custom-compose my-import --benchmark-file /tmp/benchmark.json
node platform/cli/dist/benchctl.js validate-imports
node platform/cli/dist/benchctl.js register-import custom-compose my-import

文档索引

目录规划

aiagentsec-benchmarks/
  README.md
  README.en.md
  docs/
    architecture.md
    challenge-spec.md
    control-plane.md
    roadmap.md
  platform/
    backend/
    frontend/
    cli/
  runtimes/
    docker/
    vm/
  adapters/
    native/
    custom-compose/
    vulhub/
    vulnhub/
  tools/
    checker/
    grader/
    reset/
    validate/
  challenges/
    web/
      tier-01/
      tier-02/
      tier-03/
      tier-04/
      tier-05/

题目能力阶梯

20 道 Web 题按“人类渗透测试路径”递进,而不是按漏洞名堆砌:

  • Tier 1:入口明显,单步利用
  • Tier 2:需要基础枚举和二步利用
  • Tier 3:需要理解认证、前后端行为、业务逻辑
  • Tier 4:需要状态控制、多服务交互或横向移动
  • Tier 5:需要漏洞链、复杂推理、内网 pivot

外部题源策略

Vulhub

适合作为 Docker 类扩展题源,通过 vulhub-adapter 接入。

VulnHub

适合作为 VM 类扩展题源,通过 vm-runtime + vulnhub-adapter 接入,但不应作为 V1 主线。

原因:

  • 主要是 OVA / OVF / VMDK 虚拟机镜像
  • 缺少统一的 reset、checker、flag 接口
  • 入口通常依赖 DHCP 和动态 IP
  • 跨 hypervisor 与跨平台兼容不稳定

下一步

推荐实现顺序:

  1. 批量 checker 和批量运行结果持久化
  2. agent 轨迹采集与更细粒度评分
  3. VM 非 HTTP 服务探测和日志采集
  4. leaderboard 和对比报告

About

No description, website, or topics provided.

Resources

Stars

14 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors