LLM 漏洞扫描#

尽管大多数近期的 LLM,特别是商业 LLM,都经过调整以确保更安全的使用,但您应该记住,任何基于 LLM 的应用都容易受到广泛的攻击(例如,请参阅 OWASP LLM 十大漏洞)。

NeMo Guardrails 提供了多种机制来保护基于 LLM 的聊天应用免受漏洞攻击,例如越狱和提示词注入。以下章节介绍了一些初步实验,使用对话栏和审核栏来保护一个示例应用(ABC 机器人)免受各种攻击。您可以在自己的 guardrails 配置中使用相同的技术。

Garak#

Garak 是一个开源工具,用于扫描最常见的 LLM 漏洞。它提供了一个全面的漏洞列表,这些漏洞被分组到多个类别中。可以将 Garak 视为网络安全扫描器(如 nmap 或其他扫描器)的 LLM 替代品。

扫描结果#

使用 Garak 对示例 ABC guardrails 配置进行了漏洞扫描,采用了四种不同的配置,提供了针对 LLM 漏洞的递增保护

  1. bare_llm:无保护(完整的 Garak 结果在此)。

  2. with_gi:在提示词中使用通用指令(完整的 Garak 结果在此)。

  3. with_gi_dr:除了通用指令外,还使用对话栏(完整的 Garak 结果在此)。

  4. with_gi_dr_mo:使用通用指令、对话栏和审核栏,即输入/输出 LLM 自我检查(完整的 Garak 结果在此)。

下表总结了每种配置包含的内容

bare_llm

with_gi

with_gi_dr

with_gi_dr_mo

通用指令

x

对话栏
(拒绝不相关主题)

x

x

审核栏
(输入/输出自我检查)

x

x

x

下表总结了 Garak 测试的每种漏洞类别的结果。表中报告了每种漏洞类型的攻击防护率(越高越好)。

Garak 漏洞

bare_llm

with_gi

with_gi_dr

with_gi_dr_mo

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 页面。