近几年,英伟达 AI 红队(AIRT)在各式各样的 AI 系统投产之前,对其潜在漏洞和安全弱点进行了评估。AIRT 发现了一些常见的漏洞和潜在的安全弱点,如果在开发过程中加以解决,可以显著提高基于大模型的应用的安全性。

英伟达 AI 红队评估框架
在这篇文章中,将分享这些评估的关键发现,以及如何缓解最重大的风险。
漏洞 1:执行 LLM 生成的代码可能导致RCE
最严重且反复出现的问题之一是在 LLM 生成的输出上使用 exec或 eval这类函数,且隔离不足。虽然开发人员可能使用这些函数来生成图表,但有时它们会被扩展到更复杂的任务,例如执行数学计算、构建 SQL 查询或生成用于数据分析的代码。
风险何在?攻击者可以使用直接或间接的提示注入,操纵 LLM 生成恶意代码。如果该输出在没有适当沙箱保护的情况下被执行,就可能导致RCE,可能使攻击者获得对整个应用环境的访问权限。

图 1.一个利用提示注入,针对某个将 LLM 生成的代码传入 exec语句以执行数据分析的系统,成功实现RCE的示例
这里的修复方法很明确:避免使用 exec、eval或类似结构——尤其是在 LLM 生成的代码中。这些函数本身就有风险,当与提示注入结合时,它们几乎可以轻易导致 RCE。即使 exec或 eval被深埋在库中并可能受到guardrails的保护,攻击者也可以将其恶意命令层层封装以进行规避和混淆。
在图 1 中,一个提示注入通过在防护栏规避手段(绿色部分所示)中的封装,以及围绕库中调用引入的系统提示(蓝色和橙色部分)进行提示工程,最终传递了有效负载(粉色部分),从而实现了 RCE。
相反,应构建你的应用来解析 LLM 响应的意图或指令,然后将这些意图或指令映射到一组预定义的、安全的、明确允许的函数。如果必须进行动态代码执行,请确保其在安全、隔离的沙箱环境中进行。我们关于基于 WebAssembly 的浏览器沙箱的文章[1]概述了一种安全实现此功能的方法。
漏洞 2:RAG数据源中的不安全访问控制
检索增强生成(RAG)是一种被广泛采用的 LLM 应用架构,它使应用能够纳入最新的外部数据而无需重新训练模型。
信息检索步骤也可能成为攻击者注入数据的途径。在实践中,我们发现与 RAG 使用相关的两个主要弱点:
首先,读取敏感信息的权限可能没有按每个用户正确实施。发生这种情况时,用户可能能够访问他们本不应看到的文档中的信息。我们通常看到以下几种情况发生:
数据原始来源(例如 Confluence、Google Workspace)的权限未正确设置和维护。当文档被摄取到 RAG 数据库时,这个错误会被传播到 RAG 数据存储。
RAG 数据存储未能忠实地再现特定于源的权限,通常是通过使用对文档原始源过度授权的"读取"令牌来实现。
权限从源传播到 RAG 数据库的延迟导致陈旧性问题,并使数据暴露在外。
审查对文档或数据源的委托授权管理方式有助于及早发现此问题,团队可以围绕此进行设计。
我们常见的另一个严重漏洞是对 RAG 数据存储具有广泛的写入权限。例如,如果用户的邮件是 RAG 流程检索阶段数据的一部分,那么任何知道这一点的人都可能让该内容包含在 RAG 检索器返回的数据中。这为间接提示注入打开了大门,在某些情况下,这种注入可以非常精确和具有针对性,使得检测极其困难。此漏洞通常是攻击链的早期环节,其后续目标范围很广,从简单地毒化特定主题的应用结果,到外泄用户的个人文档或数据。

缓解对 RAG 数据存储的广泛写入访问可能相当困难,因为它通常会影响应用的预期功能。例如,能够汇总一天的邮件是一个潜在有价值且重要的用例。在这种情况下,必须在应用的其他地方进行缓解,或围绕特定的应用需求进行设计。
以电子邮件为例,将外部邮件排除在外或作为单独的数据源进行访问,以避免结果交叉污染,可能是一种有用的方法。对于工作空间文档(例如 SharePoint、Google Workspace),允许用户仅在自己的文档、仅来自其组织内人员的文档和所有文档之间进行选择,可能有助于限制恶意共享文档的影响。
内容安全策略CSP(参见下一个漏洞)可用于降低数据外泄的风险。可以对增强提示或检索到的文档应用防护栏检查,以确保它们确实与查询主题相关。最后,可以为特定领域(例如,HR相关信息)建立更严格控制的权威文档或数据集,以防止恶意文档注入。
漏洞 3:LLM 输出内容的可直接点击内容渲染
自 Johann Rehberger 在 2023 年年中发表相关文章[2]以来,使用 Markdown(和其他活动内容)外泄数据一直是一个已知问题。然而,AI 红队仍然在由 LLM 驱动的应用中发现此漏洞。
通过向链接或图像附加内容,将用户的浏览器定向到攻击者的服务器,如果浏览器渲染了图像或用户点击了链接,则该内容将出现在攻击者服务器的日志中,如图 2 所示。渲染器必须向攻击者的域发出网络调用以获取图像数据。这个相同的网络调用也可以包含编码的敏感数据,将其外泄给攻击者。间接提示注入通常可被利用来将信息(例如用户的对话历史)编码到链接中,导致数据外泄。

Sources

图 2.测试图像 Markdown 渲染导致的数据外泄,恶意负载通过加载所示图像自动外泄数据
类似地,在图 3 中,超链接可用于混淆目的地和任何附加的查询数据。该链接可以通过在查询字符串中进行编码(如图所示)来外泄 Tm93IHlvdSdyZSBqdXN0IHNob3dpbmcgb2ZmIDsp这段编码后的数据。
click here to learn more!
图 3.一个服务器返回超链接的聊天会话
为了缓解此漏洞,我们建议采取以下一或多项措施:
使用图像内容安全策略,只允许从预定义的"安全"站点列表加载图像。这可以防止用户的浏览器自动从攻击者的服务器渲染图像。
对于可直接点击的超链接,应用应在跳转到外部站点之前向用户显示完整链接,或者链接应为"不可直接点击"状态,需要复制粘贴操作才能访问该域。
清理所有 LLM 输出,尝试移除由 LLM 动态生成的 Markdown、HTML、URL 或其他潜在活动内容。
作为最后的手段,在用户界面中完全禁用可直接点击的内容。
原文链接:https://developer.nvidia.com/blog/practical-llm-security-advice-from-the-nvidia-ai-red-team/
小结
英伟达 AI 红队评估了数十个由 AI 驱动的应用,并提出了几个简单的建议来加固和保护它们。最重要的三大发现是:执行 LLM 生成的代码导致RCE、RAG 数据存储上的不安全权限导致数据泄漏和/或间接提示注入,以及 LLM 输出的可直接点击内容渲染导致数据外泄。通过查找并解决这些漏洞,你可以保护你的 LLM 实现免受最常见和影响最大的漏洞的影响。
参考资料
[1]Sandboxing Agentic AI Workflows with WebAssembly: https://developer.nvidia.com/blog/sandboxing-agentic-ai-workflows-with-webassembly/
[2]ChatGPT Plugins: Data Exfiltration via Images & Cross Plugin Request Forgery: https://embracethered.com/blog/posts/2023/chatgpt-webpilot-data-exfil-via-markdown-injection/
声明:本文来自玄月调查小组,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。