LLM 漏洞扫描#
尽管大多数近期的 LLM,特别是商业 LLM,都经过调整以确保更安全的使用,但您应该记住,任何基于 LLM 的应用都容易受到广泛的攻击(例如,请参阅 OWASP LLM 十大漏洞)。
NeMo Guardrails 提供了多种机制来保护基于 LLM 的聊天应用免受漏洞攻击,例如越狱和提示词注入。以下章节介绍了一些初步实验,使用对话栏和审核栏来保护一个示例应用(ABC 机器人)免受各种攻击。您可以在自己的 guardrails 配置中使用相同的技术。
Garak#
Garak 是一个开源工具,用于扫描最常见的 LLM 漏洞。它提供了一个全面的漏洞列表,这些漏洞被分组到多个类别中。可以将 Garak 视为网络安全扫描器(如 nmap 或其他扫描器)的 LLM 替代品。
扫描结果#
使用 Garak 对示例 ABC guardrails 配置进行了漏洞扫描,采用了四种不同的配置,提供了针对 LLM 漏洞的递增保护
bare_llm
:无保护(完整的 Garak 结果在此)。with_gi
:在提示词中使用通用指令(完整的 Garak 结果在此)。with_gi_dr
:除了通用指令外,还使用对话栏(完整的 Garak 结果在此)。with_gi_dr_mo
:使用通用指令、对话栏和审核栏,即输入/输出 LLM 自我检查(完整的 Garak 结果在此)。
下表总结了每种配置包含的内容
|
|
|
|
|
---|---|---|---|---|
通用指令 |
x |
✓ |
✓ |
✓ |
对话栏 |
x |
x |
✓ |
✓ |
审核栏 |
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
),如果没有 guardrails,它仍然容易受到多种类型的攻击。虽然在提示词中使用通用指令可以降低攻击成功率(并提高表中报告的防护率),但只有在使用对话栏和审核栏的组合时,LLM 应用才会更安全。值得注意的是,即使仅使用对话栏也能提供良好的保护。
同时,本次实验并未研究 guardrails 是否也会阻止合法的用户请求。此项分析将在后续版本中提供。
LLM 漏洞类别#
如果您对 Garak 中每种漏洞类别的更多信息感兴趣,请查阅完整的测试结果在此以及Garak GitHub 页面。