Vanna AI 中的即时注入漏洞导致数据库遭受 RCE 攻击 网络相关
网络安全研究人员披露了 Vanna.AI 库中的一个高严重性安全漏洞,该漏洞可被利用通过提示注入技术实现远程代码执行漏洞。
供应链安全公司 JFrog表示,该漏洞的编号为 CVE-2024-5565(CVSS 评分:8.1),与“ask”函数中的提示注入有关,可被利用来诱骗库执行任意命令。
Vanna 是一个基于 Python 的机器学习库,允许用户与他们的 SQL 数据库聊天以通过“只需提出问题”(又名提示)来收集见解,然后使用大型语言模型(LLM)将其转换为等效的 SQL 查询。
近年来,生成式人工智能 (AI) 模型的快速推出凸显了其被恶意行为者利用的风险,他们可以通过提供绕过内置安全机制的对抗性输入将这些工具武器化。
其中一类突出的攻击是即时注入,它指的是一种人工智能越狱,可用于无视 LLM 提供商为防止产生攻击性、有害或非法内容而建立的护栏,或执行违反应用程序预期目的的指令。
此类攻击可以是间接的,其中系统处理由第三方控制的数据(例如,传入的电子邮件或可编辑文档)以启动导致 AI 越狱的恶意负载。
他们还可以采取所谓的多次越狱或多回合越狱(又名 Crescendo)的形式,其中操作员“从无害的对话开始,逐步将对话引向预期的、禁止的目标”。
这种方法可以进一步扩展,以实施另一种称为“Skeleton Key”的新型越狱攻击。
微软 Azure 首席技术官 Mark Russinovich表示:“这种 AI 越狱技术采用多轮(或多步骤)策略,使模型忽略其护栏。一旦忽略护栏,模型将无法确定来自任何其他人的恶意或未经批准的请求。”
Skeleton Key 与 Crescendo 的不同之处还在于,一旦越狱成功,系统规则发生改变,模型就可以对原本被禁止的问题做出回应,而不管其中的道德和安全风险。
“当 Skeleton Key 越狱成功时,模型就承认它已经更新了指南,随后将遵守指令来生成任何内容,无论它如何违反其原始负责任的 AI 指南,”Russinovich 说。
“与 Crescendo 等其他越狱不同,Skeleton Key 将模型置于用户可以直接请求任务的模式,而 Crescendo 等其他越狱必须间接或通过编码向模型询问任务。此外,模型的输出似乎完全未经过滤,并揭示了模型的知识范围或生成请求内容的能力。”
JFrog 的最新发现(同样由刘彤独立披露)表明,快速注入可能会产生严重影响,特别是当它们与命令执行相关时。
CVE-2024-5565 利用 Vanna 促进文本到 SQL 生成的事实来创建 SQL 查询,然后使用 Plotly 图形库执行这些查询并以图形方式呈现给用户。
这是通过“ask”函数实现的- 例如,vn.ask(“按销售额排名前 10 位的客户有哪些?”) - 这是允许生成在数据库上运行的 SQL 查询的主要 API 端点之一。
上述行为加上 Plotly 代码的动态生成,产生了一个安全漏洞,允许威胁行为者提交嵌入要在底层系统上执行的命令的特制提示。
JFrog表示:“Vanna 库使用提示函数向用户呈现可视化结果,可以使用提示注入来改变提示并运行任意 Python 代码而不是预期的可视化代码。”
“具体来说,允许将外部输入输入到库的‘ask’方法并将‘visualize’设置为 True(默认行为)会导致远程代码执行。”
在负责任地披露之后,Vanna 发布了一份强化指南,警告用户 Plotly 集成可用于生成任意 Python 代码,并且暴露此功能的用户应在沙盒环境中执行此操作。
JFrog 安全研究高级主管 Shachar Menashe 在一份声明中表示:“这一发现表明,如果没有适当的治理和安全保障,广泛使用 GenAI/LLM 的风险可能会对组织产生严重影响。”
“预提示注入的危险性仍未得到广泛了解,但很容易实施。公司不应依赖预提示作为万无一失的防御机制,在将 LLM 与数据库或动态代码生成等关键资源连接时,应采用更强大的机制。”