Loading

使用Garak对大模型进行安全扫描

什么是 garak

garak是英伟达开源的大语言模型的漏洞扫描工具,支持对大模型进行幻觉、数据泄露、提示词注入、误解、恶意内容生成、越狱等脆弱性进行扫描。类似于传统渗透测试中的nmapmsf等工具。

安装 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

img

基础概念

查看 garak 的源码目录,可以看到以下文件夹:

/garak
--/analyze
--/buffs
--/configs
--/data
--/detectors
--/evaluators
--/generators
--/harnesses
--/probes
--/resources

这些文件夹下的文件在 garak 中被称为插件,我们主要关注其中的 detectorsevaluatorsgeneratorsharnessesprobes

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

img

查看 generator

garak --list_generators

默认支持这些常见的 generator:

  • huggingface
  • AzureOpenAI
  • cohere
  • ggml
  • groq
  • guardrails
  • langchain
  • langchain_serve
  • litellm
  • nemo
  • nim
  • nvcf
  • octo
  • ollama
  • openai
  • rasa
  • replicate

img

扫描

  • 由于 LLM 具有随机性,每个测试用例会被发送 5 次。
  • Garak 具备 API 频率检测机制,如果检测到网关返回码为 429,会再次重试直到成功,最大尝试次数为 70 次。
garak --model_type openai --model_name gpt-3.5-turbo --probes encoding

Ollama 实例

我在本地 Ollama 部署了一套 deepseek-r1:1.5b,现在以这个模型进行演示。

img

基础扫描

garak --model_type ollama --model_name deepseek-r1:1.5b --probes encoding

img

并行扫描

如下命令指定并发数量为 5,即同时发起 5 个请求。

garak --model_type ollama --model_name deepseek-r1:1.5b --probes encoding --parallel_attempts 5

注:某些 probe 不支持并发扫描,具体查看 parallelisable_attempts 属性,如果为 false,代表不支持并发扫描。

示例文件:probes\promptinject.py

img

posted @ 2025-04-17 11:36  土豆分米猪  阅读(277)  评论(0)    收藏  举报