joemunene-by/cyberbench

GitHub: joemunene-by/cyberbench

一个面向大语言模型的网络安全推理开放基准测试框架,提供可复现的评估与排名。

Stars: 0 | Forks: 0

# CyberBench **用于评估大语言模型网络安全推理能力的开放、可复现基准测试。** 通过一系列结构化的安全任务,运行任意模型(OpenAI、Anthropic、Ollama、本地模型等),并生成排名化的 Markdown 排行榜。任务文件为 YAML 格式,评分逻辑透明,且整个流程可通过一条命令完成。 ![Python](https://img.shields.io/badge/python-3.10+-3776AB?style=flat-square&logo=python&logoColor=white) ![License](https://img.shields.io/badge/license-MIT-green?style=flat-square) ![Tasks](https://img.shields.io/badge/seed_tasks-15-6C9CFF?style=flat-square)
## 为什么需要 CyberBench 现有的 LLM 基准测试(MMLU、HELM、MT-Bench)几乎未覆盖安全领域。相关的要么是厂商独占(CyberSecEval),要么范围狭窄(SecQA),要么是闭源的。CyberBench 具备以下特点: - **开放性**:任务以纯 YAML 形式存在,评分代码简洁清晰。 - **可复现性**:运行 `cyberbench run --model X` 会生成 JSON 格式的运行记录文件,并与仓库一同提交。任何人都可以验证或扩展。 - **可扩展性**:添加一个任务只需编写一个 YAML 文件;添加一个后端只需约 30 行代码。 - **多类别**:涵盖 CVE 分类、安全代码审查、检测规则生成等,未来还将支持更多类别。 ## 评分内容 | 类别 | 任务类型 | 评分器 | 种子任务 | | --- | --- | --- | --- | | `cve_triage` | 多选题形式的 CWE / 漏洞推理 | `mc_exact` | 5 | | `code_review` | 对代码片段进行自由形式的漏洞审查 | `rubric_keyword`(加权短语匹配) | 5 | | `detection_rule` | 为给定攻击场景生成 SIGMA 规则 | `sigma_structural`(YAML 结构、字段与域检查) | 5 | **v0.1 版本包含 15 个手工挑选的种子任务。** 该框架是产品;任务库会随着社区贡献不断增长(详见下文)。 ## 快速开始 ``` git clone https://github.com/joemunene-by/cyberbench.git cd cyberbench pip install -e ".[all]" # pulls openai + anthropic; drop [all] to skip # 使用内置回声后端进行冒烟测试(无需 API 密钥) cyberbench run --model echo cyberbench report --print ``` ### 运行真实模型 ``` # OpenAI(需要 OPENAI_API_KEY) cyberbench run --model openai:gpt-4o-mini # Anthropic(需要 ANTHROPIC_API_KEY) cyberbench run --model anthropic:claude-sonnet-4-6 # 本地 Ollama(需要运行在 :11434) cyberbench run --model ollama:llama3 # 仅一个类别 cyberbench run --model openai:gpt-4o-mini --category detection_rule ``` 每次运行会生成 `leaderboard/.json` 文件,并构建排名表格: ``` cyberbench report --out LEADERBOARD.md ``` ## 添加任务 将 YAML 文件放入 `tasks//` 目录下: ``` id: cve-006-spectre category: cve_triage type: multiple_choice prompt: | CVE-2017-5753 (Spectre variant 1)... A) CWE-20: Improper Input Validation B) CWE-203: Observable Discrepancy (side channel) C) ... choices: - "A: CWE-20" - "B: CWE-203" - "C: ..." answer: B metadata: cve: CVE-2017-5753 ``` 目前支持三种开箱即用的任务类型: - **`multiple_choice`** — 设置 `choices` 和 `answer`(字母形式)。 - **`free_form`** — 设置包含 `{must_mention | any_of, weight}` 条目的 `rubric`。 - **`sigma_rule`** — 设置 `requirements`(`must_have_fields`、`detection_keys_should_include`、`expected_logsource_product`)。 每个任务文件都会通过 `pytest tests/test_tasks.py::test_seed_tasks_all_load` 运行测试。 ## 添加后端 在 `src/cyberbench/backends/` 下实现 `Backend.generate(prompt, system=None) -> str`,并在 `backends/__init__.py::get_backend` 中注册。仅此而已。 ## 架构 ``` cyberbench/ ├── src/cyberbench/ │ ├── tasks.py # YAML loader, Task dataclass │ ├── backends/ # echo, ollama, openai, anthropic │ ├── scorers/ # mc_exact, rubric_keyword, sigma_structural │ ├── runner.py # dispatches tasks → backend → scorer │ ├── report.py # markdown leaderboard builder │ └── cli.py # argparse entry point ├── tasks/ │ ├── cve_triage/ │ ├── code_review/ │ └── detection_rule/ ├── leaderboard/ # committed JSON runs (the reproducibility story) └── LEADERBOARD.md # generated by `cyberbench report` ``` ## 路线图 - **v0.2** — 每类任务增至 50 个,为自由形式任务引入 LLM-as-judge 评分器,提供用于可复现性的 Dockerfile - **v0.3** — 新增类别:漏洞链推理、日志取证、威胁模型评审 - **v0.4** — 对抗子集:针对安全问答角色的提示注入抵抗力测试 - **v1.0** — 公开的排行榜托管与模型发布后的自动化重跑 ## 相关项目 由 [@joemunene-by](https://github.com/joemunene-by) 构建。配套工作包括: - [`GhostLM`](https://github.com/joemunene-by/GhostLM) — 网络安全聚焦的大语言模型(CyberBench 是其验证方式) - [`secure-mcp`](https://github.com/joemunene-by/secure-mcp) — 为智能体提供受约束的安全工具箱的 MCP 服务器 - [`ghostsiem`](https://github.com/joemunene-by/ghostsiem) — 基于 SIGMA 的检测与告警系统 ## 贡献 欢迎提交 PR —— 尤其是**新任务**。新增评分器或类别前请先打开议题,以便我们在模式上达成一致。 ## 许可证 MIT。详见 [LICENSE](./LICENSE)。
标签:AI风险缓解, CVE分类, cybersecurity reasoning, LLM benchmark, Python, SIGMA规则, YAML任务, 代码审查, 可扩展框架, 可重现基准, 多后端, 多类别安全, 大模型评估, 密钥泄露防护, 开源基准, 排行榜, 推理评测, 无后门, 机器学习安全, 检测规则生成, 社区贡献, 结构化任务, 网络安全, 逆向工具, 隐私保护