使用Garak对大模型进行安全扫描
什么是 garak
garak是英伟达开源的大语言模型的漏洞扫描工具,支持对大模型进行幻觉、数据泄露、提示词注入、误解、恶意内容生成、越狱等脆弱性进行扫描。类似于传统渗透测试中的nmap和msf等工具。
安装 garak
官方代码仓库:https://github.com/NVIDIA/garak
官方文档:https://reference.garak.ai/en/latest/
环境准备
操作系统:Linux / Windows (优先使用Linux)
Python版本:3.10 | 3.11 | 3.12
使用 PIP 安装
python -m pip install -U garak
验证安装
garak --version

基础概念
查看 garak 的源码目录,可以看到以下文件夹:
/garak
--/analyze
--/buffs
--/configs
--/data
--/detectors
--/evaluators
--/generators
--/harnesses
--/probes
--/resources
这些文件夹下的文件在 garak 中被称为插件,我们主要关注其中的 detectors、evaluators、generators、harnesses、probes。
detectors
classes for detecting an LLM is exhibiting a given failure mode
用于检测 LLM 是否表现出给定故障模式的类
evaluators
assessment reporting schemes
评估类
generators
plugins for LLMs to be probed
用于指定大模型如何扫描,如RESTful API、标准OPEN AI接口等。如果需要测试的目标大模型使用了非标准的自定义接口,则需要使用自定义的 generator
harnesses
classes for structuring testing
用于构建测试的类
probes
classes for generating interactions with LLMs
用于生成测试用例的类
基础指令
查看探针
garak --list_probes

查看 generator
garak --list_generators
默认支持这些常见的 generator:
- huggingface
- AzureOpenAI
- cohere
- ggml
- groq
- guardrails
- langchain
- langchain_serve
- litellm
- nemo
- nim
- nvcf
- octo
- ollama
- openai
- rasa
- replicate

扫描
- 由于
LLM具有随机性,每个测试用例会被发送5次。 Garak具备API频率检测机制,如果检测到网关返回码为429,会再次重试直到成功,最大尝试次数为70次。
garak --model_type openai --model_name gpt-3.5-turbo --probes encoding
Ollama 实例
我在本地 Ollama 部署了一套 deepseek-r1:1.5b,现在以这个模型进行演示。

基础扫描
garak --model_type ollama --model_name deepseek-r1:1.5b --probes encoding

并行扫描
如下命令指定并发数量为 5,即同时发起 5 个请求。
garak --model_type ollama --model_name deepseek-r1:1.5b --probes encoding --parallel_attempts 5
注:某些 probe 不支持并发扫描,具体查看 parallelisable_attempts 属性,如果为 false,代表不支持并发扫描。
示例文件:probes\promptinject.py


浙公网安备 33010602011771号