Purple Llama CyberSecEval 4:大模型网络安全能力评测框架分析

0 阅读9分钟

随着大语言模型(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 项目地址:

github.com/meta-llama/…

image.png 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/Autocompleteinstruct_or_autocomplete_benchmark.py评估代码生成的安全性
MITREmitre_benchmark.py评估 LLM 是否会帮助进行网络攻击
MITRE FRRmitre_frr_benchmark.py评估误拒率(拒绝合法请求)
Prompt Injectionprompt_injection_benchmark.py评估 prompt 注入抵抗力
Code Interpreterinterpreter_benchmark.py代码执行环境的安全风险
Canary Exploitcanary_exploit_benchmark.pyCTF 风格的漏洞利用
Phishingmultiturn_phishing_benchmark.py多轮钓鱼能力评估
Visual Prompt Injectionvisual_prompt_injection_benchmark.py多模态 prompt 注入
AutoPatchautopatching_benchmark.py自动修复漏洞能力
Malware Analysiscrwd_meta/malware_analysis.py恶意软件分析能力
Threat Intelligencecrwd_meta/threat_intel_reasoning_benchmark.py威胁情报推理能力
Autonomous Upliftautonomous_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&CK
  • mitre_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
    }
  }
}

扩展性

添加新的基准测试

  1. 创建新的基准测试类,继承 Benchmark
  2. 实现 return_kind()run() 方法
  3. run.py 中注册:Benchmark.register_benchmark(NewBenchmark)
  4. 创建对应的数据集目录

添加新的 LLM 提供商

  1. 创建新的 LLM 类,继承 llm_base.LLM
  2. 实现 query() 方法
  3. llms/__init__.py 中导入
  4. llm.pycreate() 函数中添加支持

测试

运行单元测试:

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 - 项目总结

项目地址

完整分析地址:

github.com/leyanOo/Pur…

image.png

image.png

97e8d70e03617ea034949c68d3cd1580.png 更多详细内容可关注wx公众号:

97e8d70e03617ea034949c68d3cd1580.png