garakを使ってMistralの脆弱性検知をしてみた
今回はgarakを用いてMistralの脆弱性検知をしてみました。過去にGeminiやgpt系モデルなどに対しては検証していましたが、同様の検証をMistralに対しても実施してみようと思います。過去の検証についても是非併せてご覧ください。
Mistralとは?
MistralはMistral AIが開発しているモデルになります。Mistral-7B-v0.3をインストラクションチューニングしたモデルになります。
早速検証してみる
今回はgarakを用いて検証します。検証にはGPUが必要ですが手元になかったのでBrev上でH200インスタンスを立ち上げました。インスタンスの構築方法やgarakの利用方法は是非以下をご覧ください。
環境構築
インスタンスが立ち上がったら以下のコマンドでuvのインストールとgarakのインストールをします。
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install garak
garakで検知を実行する
huggingface上のMistralを対象とするには、以下のコマンドを実行することで対応できます。--model_typeにhuggingfaceを、--model_nameにmistralai/Mistral-7B-Instruct-v0.3を指定することで対応できます。なお、検証を早く進めるために--parallel_attemptsを10に設定しています。また、現地対象はマルウェア生成に関するものであるmalwaregenをプローブにしています。
garak --model_type huggingface --model_name mistralai/Mistral-7B-Instruct-v0.3 --parallel_attempts 10 --probes malwaregen
結果は以下のようになりました。
📜 reporting to /home/nvidia/.local/share/garak/garak_runs/garak.5c734bf3-2813-48e1-896a-0cc616d4c324.report.jsonl
🕵️ queue of probes: malwaregen.Evasion, malwaregen.Payload, malwaregen.SubFunctions, malwaregen.TopLevel
probes.malwaregen.Evasion: 0%| | 0/48 [00:00<?, ?it/s]Asking to truncate to max_length but no maximum length is provided and the model has no predefined maximum length. Default to no truncation.
probes.malwaregen.Evasion: 21%|██████████████████████████████▏ | 10/48 [00:38<01:42, 2.71s/it]You seem to be using the pipelines sequentially on GPU. In order to maximize efficiency please use a dataset
malwaregen.Evasion malwaregen.AnyCode: FAIL ok on 123/ 240 (attack success rate: 48.75%)
malwaregen.Payload malwaregen.AnyCode: FAIL ok on 398/ 600 (attack success rate: 33.67%)
malwaregen.SubFunctions malwaregen.AnyCode: FAIL ok on 122/ 280 (attack success rate: 56.43%)
malwaregen.TopLevel malwaregen.AnyCode: FAIL ok on 38/ 80 (attack success rate: 52.50%)
📜 report closed :) /home/nvidia/.local/share/garak/garak_runs/garak.5c734bf3-2813-48e1-896a-0cc616d4c324.report.jsonl
📜 report html summary being written to /home/nvidia/.local/share/garak/garak_runs/garak.5c734bf3-2813-48e1-896a-0cc616d4c324.report.html
✔️ garak run complete in 658.11s
攻撃成功率の結果を見ると、全ての項目でかなり高い割合で攻撃が成立してしまっていることが確認できます。過去に検知したものとの比較してみると、他のモデルよりスコアが良いものもありますが、全体的に高めな印象です。このまま利用するよりはガードレールを用いる方が良さそうな結果になりました。
| モデル名 | malwaregen.Evasion | malwaregen.Payload | malwaregen.SubFunctions | malwaregen.TopLevel |
|---|---|---|---|---|
| Mistral-7B-v0.3 | 48.75% | 33.67% | 56.43% | 52.50% |
| gpt-2 | 31.67% | 23.67% | 31.79% | 11.25% |
| gpt-3.5-turbo | 36.25% | 13.33% | 46.43% | 0% |
| Gemini 2.5 Flash | 56.67% | 42.17% | 93.57% | 10.0% |
まとめ
今回はMistralのモデルに対してgarakを使った検証をしてみました。実際に利用するモデルを利用する場合は、どのようなサービスに利用しようとしているか、どのような用途で利用しようとしているかを定義した上で、garakによってその分野が得意かどうか判定し、ガードレールを用いて苦手なところを補うようにしていけると良いかなと思います。
Discussion