随着大语言模型(LLM)在各领域的广泛部署,其潜在的安全风险日益受到重视。模型可能被诱导生成恶意代码、协助网络攻击、泄露敏感信息,或绕过安全限制。传统的 Prompt 红队测试虽然具有一定价值,但普遍存在覆盖面有限、难以量化、重复性差等问题。
2024 年,Meta 正式开源了 Purple Llama 项目,旨在为业界提供一套系统化、标准化的大模型安全评估与防护框架。
Purple Llama 并非单一工具,而是 Meta 在 LLM 安全领域的重要开源布局。其中,Llama-Guard 系列专注于安全防护,
CybersecurityBenchmarks(又称 CyberSecEval)则专注于安全能力评测。本文将重点拆解 CybersecurityBenchmarks,分析其设计理念、项目构成及评测流程,阐述 Meta 如何通过标准化基准测试对大语言模型进行专业的网络安全评估。
0x01Llama-Guard 系列:内容安全防护模型
Purple Llama 是 Meta 推出的开源 LLM 安全项目,致力于构建大语言模型的安全防护与评估体系。该项目强调“系统级防护”(System-Level Safeguards),主张对所有输入和输出进行检查与过滤,以符合应用场景的内容规范。
Purple Llama 主要包含以下核心组件:
1. Llama Guard 系列:输入输出内容安全 moderation 模型
Llama Guard 是 Meta 主力开发的高性能输入输出审核模型系列,目前已迭代至 Llama Guard 3(及后续版本)。
- 核心功能:对用户输入和模型输出进行实时风险分类与过滤。
- 训练基础:基于 Meta-Llama 3.1 和 3.2 模型进行微调。
- 支持标准:遵循 MLCommons 危害分类标准,能够检测暴力、非法活动、性内容、自残、隐私侵犯等多种风险。
- 扩展能力:支持多语言(新增 7 种语言)、128K 上下文窗口、图像推理等特性。
- **特别优化:能够检测“有帮助的网络攻击响应”,并防止 LLM 生成的恶意代码在代码解释器环境中被执行。
**
Llama Guard 可作为 Guardrail 部署在模型调用链路中,是目前业界重要的开源内容安全解决方案。
2. Prompt Guard:提示攻击防护工具
Prompt Guard 专注于保护 LLM 应用免受恶意提示攻击,主要针对两类常见威胁:
- Prompt Injection(提示注入):通过第三方不可信数据污染上下文,诱导模型执行非预期指令。
- **Jailbreak(越狱攻击):设计恶意指令以绕过模型内置的安全和对齐机制。
**
Prompt Guard 为 LLM 应用提供了一层重要的提示层安全防护。
3. Code Shield:不安全代码过滤与防护
Code Shield 专注于解决 LLM 生成不安全代码带来的风险,支持推理时(inference-time)过滤。
其主要功能包括:
- 缓解不安全代码建议风险
- 防止代码解释器滥用
- 安全命令执行控制
Code Shield 可与 Llama Guard 配合,形成对代码生成场景的多层防护。
4. CybersecurityBenchmarks(CyberSecEval):安全评测基准
CybersecurityBenchmarks(也称 CyberSecEval)是 Purple Llama 项目中专注于安全能力评测的核心框架。它被认为是业界首批针对 LLM 的网络安全系统化评估工具集。
该基准基于行业标准(如 CWE、MITRE ATT&CK)构建,由 Meta 安全专家参与设计,旨在帮助开发者量化评估模型在以下方面的风险:
- 恶意代码生成能力
- 网络攻击协助倾向
- 防御能力(如提示注入防御)
- 其他安全相关行为
与传统人工测试相比,CybersecurityBenchmarks 提供了标准化、自动化、可重复的评测流程,支持本地模型和云端模型,是本文重点拆解的部分。
Purple LLama 项目地址:
0x02Purple Llama CyberSecEval 4
项目结构总览
Purple Llama CyberSecEval 4 - 项目结构分析
项目概述
Purple Llama CyberSecEval 4 是一个综合的 AI 安全评估框架,用于系统性地测试大型语言模型(LLM)在网络安全领域的风险和防御能力。
顶层目录结构
CybersecurityBenchmarks/
├── benchmark/ # 核心基准测试框架
├── datasets/ # 各基准测试的数据集
├── requirements.txt # Python 依赖
├── README.md # 英文文档
└── LICENSE # MIT 许可证
核心模块详解
1. benchmark/ - 基准测试框架
基础架构
-
benchmark.py: 定义
Benchmark基类和BenchmarkConfig- 使用工厂模式管理所有基准测试
- 提供注册机制:
register_benchmark() - 提供创建实例方法:
create_instance()
-
run.py: 主运行脚本
- 注册所有 9 种基准测试
- 解析命令行参数
- 协调整个评估流程
9 种基准测试实现
| 基准测试 | 文件 | 目的 |
|---|---|---|
| Instruct/Autocomplete | instruct_or_autocomplete_benchmark.py | 评估代码生成的安全性 |
| MITRE | mitre_benchmark.py | 评估 LLM 是否会帮助进行网络攻击 |
| MITRE FRR | mitre_frr_benchmark.py | 评估误拒率(拒绝合法请求) |
| Prompt Injection | prompt_injection_benchmark.py | 评估 prompt 注入抵抗力 |
| Code Interpreter | interpreter_benchmark.py | 代码执行环境的安全风险 |
| Canary Exploit | canary_exploit_benchmark.py | CTF 风格的漏洞利用 |
| Phishing | multiturn_phishing_benchmark.py | 多轮钓鱼能力评估 |
| Visual Prompt Injection | visual_prompt_injection_benchmark.py | 多模态 prompt 注入 |
| AutoPatch | autopatching_benchmark.py | 自动修复漏洞能力 |
| Malware Analysis | crwd_meta/malware_analysis.py | 恶意软件分析能力 |
| Threat Intelligence | crwd_meta/threat_intel_reasoning_benchmark.py | 威胁情报推理能力 |
| Autonomous Uplift | autonomous_uplift_benchmark.py | 自主网络操作能力 |
LLM 接口 (llms/)
支持的 LLM 提供商:
- OpenAI (
openai.py): GPT-4, GPT-3.5-turbo 等 - Anthropic (
anthropic.py): Claude 系列 - Google GenAI (
googlegenai.py): Gemini 系列 - Meta (
meta.py): Llama 系列 - Together (
together.py): 开源模型托管平台 - 社区贡献 (
community_contribution/): 第三方提供商
基类 llm_base.py 定义:
LLM抽象基类LLMConfig配置类- 重试机制和异常处理
辅助模块
-
query_llm.py: LLM 查询接口
- 支持并发查询
- 支持多轮对话
- 支持 pass-k 采样
-
benchmark_utils.py: 工具函数
- 数据处理
- 统计计算
-
cache_handler.py: 缓存管理
- 避免重复查询
- 提高效率
-
bleu.py: BLEU 分数计算
- 用于代码相似度评估
特殊模块
-
autopatch/: 自动修复漏洞子模块
patch_generator.py: 生成安全补丁llm_interface.py: LLM 接口source_utils.py: 源代码处理build/: 构建和测试环境
-
crwd_meta/: CyberSOCEval 防御能力评估
malware_analysis.py: 恶意软件分析threat_intel_reasoning_benchmark.py: 威胁情报推理
2. datasets/ - 数据集组织
datasets/
├── autocomplete/ # 自动完成测试数据
├── instruct/ # 指令测试数据
├── mitre/ # MITRE ATT&CK 测试数据
├── mitre_frr/ # MITRE 误拒率测试数据
├── prompt_injection/ # Prompt 注入测试数据
├── visual_prompt_injection/ # 视觉 prompt 注入数据
├── interpreter/ # 代码解释器测试数据
├── canary_exploit/ # Canary 漏洞利用数据
│ ├── constraint_satisfaction/
│ └── memory_corruption/
├── spear_phishing/ # 钓鱼测试数据
├── autonomous_uplift/ # 自主网络操作数据
│ ├── in/ # 输入数据
│ └── out/ # 输出数据
├── autopatch/ # 自动修复数据
│ ├── autopatch_bench.json
│ ├── autopatch_lite.json
│ └── arvo_meta/ # 元数据
└── crwd_meta/ # CyberSOCEval 数据
├── malware_analysis/
└── threat_intel_reasoning/
3. 依赖关系
主要依赖:
- openai: OpenAI API 客户端
- paramiko: SSH 连接(用于某些测试)
- pillow: 图像处理(用于视觉 prompt 注入)
- pyyaml: YAML 配置解析
- sacrebleu: BLEU 分数计算
- semgrep: 代码安全检测
- tqdm: 进度条
- langchain-core: LLM 框架
- tree-sitter: 代码解析
- boto3: AWS 集成
- pypdf: PDF 处理
工作流程
典型的基准测试流程
1. 准备阶段
├─ 加载数据集 (datasets/*.json)
├─ 初始化 LLM 客户端
└─ 配置评估参数
2. 查询阶段
├─ 从数据集读取 prompts
├─ 并发查询 LLM
├─ 支持 pass-k 采样
└─ 保存原始响应
3. 评估阶段
├─ 使用 Judge LLM 评估(某些测试)
├─ 使用启发式检测(代码安全性)
├─ 计算相似度分数(BLEU)
└─ 保存评估结果
4. 统计阶段
├─ 聚合结果
├─ 计算安全指标
├─ 按类别分组统计
└─ 输出最终报告
数据流
prompts.json (输入)
↓
query_llm_to_generate_responses()
↓
responses.json (LLM 原始响应)
↓
run() 方法 (评估)
↓
judge_responses.json (Judge LLM 评估)
↓
stats.json (最终统计)
关键设计特点
1. 工厂模式
- 所有基准测试通过
Benchmark.register_benchmark()注册 - 通过
Benchmark.create_instance()创建实例 - 支持动态添加新的基准测试
2. 多 LLM 支持
- 统一的 LLM 接口
- 支持同时测试多个 LLM
- 支持自定义 LLM 提供商
3. 并发处理
- 支持并行查询多个 LLM
- 可配置的并发数量
- 异步处理机制
4. 两层评估
- Layer 1: 深度分析(使用详细提示词)
- Layer 2: 二元判断(安全或危险)
- 某些测试使用启发式检测
5. Pass-K 采样
- 对同一 prompt 多次采样
- 获得更可靠的结果
- 可配置采样次数
6. 缓存机制
- 避免重复查询
- 提高效率
- 支持离线评估
命令行接口
基本用法:
python3 -m CybersecurityBenchmarks.benchmark.run \
--benchmark=<benchmark_name> \
--llm-under-test=<llm_spec> \
--prompt-path=<path> \
--response-path=<path> \
--stat-path=<path>
支持的基准测试:
instruct- 指令代码生成autocomplete- 自动完成mitre- MITRE ATT&CKmitre_frr- MITRE 误拒率prompt_injection- Prompt 注入visual_prompt_injection- 视觉 prompt 注入interpreter- 代码解释器canary_exploit- Canary 漏洞利用phishing- 钓鱼autopatch- 自动修复malware_analysis- 恶意软件分析threat_intel_reasoning- 威胁情报推理autonomous_uplift- 自主网络操作
输出格式
最终统计结果 (stats.json):
{
"stat_per_model": {
"model_name": {
"vulnerable_count": 45,
"total_count": 100,
"vulnerability_rate": 0.45,
"avg_score": 0.75
}
},
"stat_per_model_per_category": {
"category_name": {
"avg_score": 0.82,
"compliance_rate": 0.18
}
}
}
扩展性
添加新的基准测试
- 创建新的基准测试类,继承
Benchmark - 实现
return_kind()和run()方法 - 在
run.py中注册:Benchmark.register_benchmark(NewBenchmark) - 创建对应的数据集目录
添加新的 LLM 提供商
- 创建新的 LLM 类,继承
llm_base.LLM - 实现
query()方法 - 在
llms/__init__.py中导入 - 在
llm.py的create()函数中添加支持
测试
运行单元测试:
cd CybersecurityBenchmarks
python3 -m unittest
测试文件位置:benchmark/tests/
许可证
MIT License - 详见 LICENSE 文件
在github上放了相关具体分析文件
第一部分:项目概览 (1 个)
- PROJECT_OVERVIEW.md - 项目结构总览
第二部分:12 个基准测试 (13 个)
- BENCHMARK_01_INSTRUCT_AUTOCOMPLETE.md - 代码生成安全性评估
- BENCHMARK_02_MITRE.md - 网络攻击合规性评估
- BENCHMARK_03_MITRE_FRR.md - 误拒率评估
- BENCHMARK_04_PROMPT_INJECTION.md - Prompt 注入抵抗力评估
- BENCHMARK_05_CANARY_EXPLOIT.md - 漏洞利用能力评估
- BENCHMARK_06_CODE_INTERPRETER.md - 代码执行安全风险评估
- BENCHMARK_07_AUTONOMOUS_UPLIFT.md - 自主网络操作能力评估
- BENCHMARK_08_VISUAL_PROMPT_INJECTION.md - 多模态注入抵抗力评估
- BENCHMARK_09_MULTITURN_PHISHING.md - 多轮钓鱼能力评估
- BENCHMARK_10_AUTOPATCHING.md - 自动漏洞修复能力评估
- BENCHMARK_11_MALWARE_ANALYSIS.md - 恶意软件分析能力评估
- BENCHMARK_12_THREAT_INTELLIGENCE.md - 威胁情报推理能力评估
- BENCHMARKS_QUICK_REFERENCE.md - 12 个基准的快速参考表
第三部分:核心框架深度分析 (3 个)
- CORE_FRAMEWORK_ANALYSIS.md - 核心框架深度分析
- LLM_INTEGRATION_LAYER.md - LLM 集成层深度分析
- UTILITY_FUNCTIONS_LAYER.md - 工具函数层深度分析
第四部分:其他文件夹深度分析 (1 个)
- OTHER_FOLDERS_ANALYSIS.md - datasets、scripts、website 详解
文档索引 (1 个)
- DOCUMENTATION_INDEX.md - 文档总索引
总结 (1 个)
- FINAL_SUMMARY.md - 项目总结
项目地址
完整分析地址:
更多详细内容可关注wx公众号: