PurpleLlama大模型安全全套检测方案
1. 引入
PurpleLlama是Meta的大模型安全整体解决方案(参考1),它包括了
(1)安全评估
CyberSecEval
是一个用于评估大型语言模型(LLMs)安全风险的基准套件,其目标是解决随着 LLMs 的广泛使用而出现的新的网络安全风险。
(2)输入输出检测
Llama Guard 3
通过输入输出检测,有效识别并分类不安全内容,保障了大模型在多语言环境下的内容安全。该工具能够对输入(Prompt)和响应(Response)进行分类,判断其是否安全,并列出违反的内容类别。
(3)提示词过滤
Prompt Guard
是一个基于分类器的模型,专门用于检测提示注入(Prompt Injection)和越狱攻击(Jailbreak)。它能够识别出试图绕过模型安全机制的恶意输入。
(4)不安全代码检测
Code Shield
使用静态分析工具(Insecure Code Detector, ICD)来检测不安全代码。ICD 支持对七种编程语言进行分析,并覆盖超过 50 种常见漏洞(CWE),包括使用正则表达式(Regex)和 Semgrep 等工具。
2. 内容安全
- Llama Guard
Llama Guard 3-8B
是在Llama-3.1-8B预训练模型的基础上,针对内容安全分类任务进行微调所得到的。与之前的版本相仿,它能够对模型输入(即提示词)和输出(也就是模型回复)中的内容开展风险分类工作。如同文本大模型的运作方式,将用户与大模型的对话内容,以及风险分类标准输入到Llama Guard 3-8B中,该模型便会把待检测内容标记为“安全(safe)”或者“不安全(unsafe)”;一旦判定为不安全,还会详细列出所违反的风险类别。
经过微调,Llama Guard 3-8B具备识别总计14个风险类别的能力。这其中涵盖了MLCommons标准化危险分类法
(参考3)里的13个风险类别,分别标记为S1 - S13 ,以及Llama Guard新添加的代码解释器滥用类,即S14: Code Interpreter Abuse。
对于对模态,Llama Guard 3-11B-vision是多模态文本图像安全分类模型。
- Prompt Guard
Prompt Guard
依托一款在海量攻击数据集上完成训练的分类模型,具备检测明显恶意提示词以及含有注入数据的能力。作为多标签分类模型,在过滤过程中,它会将输入的提示词划分成三类:良性(benign)、注入(injection)和越狱(jailbreak)。值得注意的是,注入和越狱这两种标签之间存在重叠的可能性,比如,一条极具危险性的提示词,既可能实施了提示词注入,也可能运用了越狱攻击手段 。
3. 代码安全
Code Shield作为一款专注于代码安全检测与过滤的工具,其核心目的在于避免大模型生成的不安全代码流入生产系统。近些年来,大模型在协助开发人员生成代码领域扮演着关键角色。然而,鉴于大模型具有较强的随机性,且极易受到训练数据的影响,即便添加了安全限制措施,大模型仍有可能生成不安全代码,这些代码中或许存在漏洞,又或者具备恶意功能。Code Shield如同置于大模型下游的一道围栏,助力实现对不安全代码的拦截与过滤,使其在返回给用户或进入代码库之前就被处理掉。
Code Shield 的核心原理是通过静态分析工具(ICD)对生成的代码进行分析,以识别潜在的不安全代码。这些工具包括 Regex 和 Semgrep 等,能够覆盖多种编程语言(如 Python、Java 等)和常见的安全漏洞类型(如 CWE 漏洞)。通过这种静态分析,Code Shield 能够在代码生成阶段或推理阶段实时过滤掉不安全的代码,从而减少生成恶意代码或执行危险操作的风险。
4. 总结
PurpleLlama包含多个关键工具和评估基准,用于提升LLM的安全性:
(1)CyberSec Eval:网络安全评估工具,用于量化LLM在网络安全方面的风险,包括生成恶意代码的可能性、不安全代码建议频率以及协助网络攻击的能力。
(2)Llama Guard:输入输出保护工具,用于过滤和检查LLM的输入输出内容,防止生成危险输出或被黑客利用。
(3)Prompt Guard:提示保护工具,用于检测和阻止恶意提示注入,确保基于LLM的应用程序的安全性。
(4)Code Shield:代码安全防护工具,用于在推理时过滤LLM生成的不安全代码,并提供缓解建议。
5. 参考
- https://github.com/meta-llama/PurpleLlama
- https://mp.weixin.qq.com/s/PKdqfmzJkrr8C6RTqWItGQ
- https://mlcommons.org/2024/04/mlc-aisafety-v0-5-poc/