LLM 漏洞扫描#
虽然最近的大多数 LLM,特别是商业 LLM,都经过调整以提高使用安全性,但您应该记住,任何由 LLM 驱动的应用程序都容易受到各种攻击(例如,请参阅 LLM 应用的 OWASP Top 10)。
NeMo Guardrails 提供了多种机制来保护由 LLM 驱动的聊天应用程序免受漏洞攻击,例如越狱和提示注入。以下部分介绍了一些初步实验,使用对话和审核 rail 来保护示例应用 ABC bot 免受各种攻击。您可以在自己的 guardrail 配置中使用相同的技术。
Garak#
Garak 是一款开源工具,用于扫描最常见的 LLM 漏洞。它提供了按多个类别分组的全面漏洞列表。可以将 Garak 视为 nmap 或其他网络安全扫描程序的 LLM 替代方案。
扫描结果#
已使用 Garak 针对漏洞扫描了示例 ABC guardrail 配置,使用了四种不同的配置,提供针对 LLM 漏洞的增强保护
bare_llm
:无保护(完整 Garak 结果 此处)。with_gi
:在 prompt 中使用通用指令(完整 Garak 结果 此处)。with_gi_dr
:除了通用指令外,还使用对话 rail(完整 Garak 结果 此处)。with_gi_dr_mo
:使用通用指令、对话 rail 和审核 rail,即输入/输出 LLM 自检(完整 Garak 结果 此处)。
下表总结了每个配置中包含的内容
|
|
|
|
|
---|---|---|---|---|
通用指令 |
x |
✓ |
✓ |
✓ |
对话 Rail |
x |
x |
✓ |
✓ |
审核 Rail |
x |
x |
x |
✓ |
下表总结了 Garak 测试的每个漏洞类别的结果。该表报告了针对每种类型漏洞的攻击防护率(越高越好)。
Garak 漏洞 |
|
|
|
|
---|---|---|---|---|
module continuation |
92.8% |
69.5% |
99.3% |
100% |
module dan |
27.3% |
40.7% |
61.3% |
52.7% |
module encoding |
90.3% |
98.2% |
100% |
100% |
module goodside |
32.2% |
32.2% |
66.7% |
66.7% |
module knownbadsignatures |
4.0% |
97.3% |
100% |
100% |
module leakreplay |
76.8% |
85.7% |
89.6% |
100% |
module lmrc |
85.0% |
81.9% |
86.5% |
94.4% |
module malwaregen |
50.2% |
92.2% |
93.7% |
100% |
module packagehallucination |
97.4% |
100% |
100% |
100% |
module realpublicityprompts |
100% |
100% |
100% |
100% |
module snowball |
34.5% |
82.1% |
99.0% |
100% |
module xss |
92.5% |
100% |
100% |
100% |
即使 ABC 示例使用了强大的 LLM (gpt-3.5-turbo-instruct
),在没有 guardrail 的情况下,它仍然容易受到多种类型的攻击。虽然在 prompt 中使用通用指令可以降低攻击成功率(并提高表中报告的防护率),但只有在使用对话和审核 rail 的组合时,LLM 应用才更安全。值得注意的是,即使仅使用对话 rail 也能获得良好的保护。
与此同时,此实验并未调查 guardrail 是否也会阻止合法的用户请求。此类分析将在后续版本中提供。
LLM 漏洞类别#
如果您对 Garak 中每个漏洞类别的更多信息感兴趣,请查阅完整结果此处和 Garak GitHub 页面。