CVE-2024-58339CVE-2024-58339是LlamaIndex项目中的一个高危资源消耗漏洞。LlamaIndex是一个广泛应用于AI应用开发的大语言模型数据框架,为开发者提供构建基于LLM应用的能力。该漏洞存在于VannaPack的VannaQueryEngine组件中,影响版本从初始版本到0.12.2。攻击者可以通过构造恶意的用户提示(prompt)触发大量SQL查询操作,由于系统未对查询执行设置资源限制,攻击者能够执行代价高昂或无界限的SQL操作,导致服务器CPU和内存资源被耗尽,最终造成服务不可用的拒绝服务(DoS)状态。在下游部署中,如果允许不受信任的用户提供提示,此漏洞可被利用造成严重的业务中断。
漏洞根源位于llama_index/packs/vanna/base.py文件中的custom_query()函数。该函数的设计逻辑是从用户提供的自然语言提示生成SQL语句,然后通过vn.run_sql()方法直接执行生成的SQL查询。问题在于整个执行流程中缺少关键的安全控制机制:1) 未对用户输入的提示进行长度或复杂度限制;2) 未对生成的SQL语句进行语法分析或资源评估;3) 未对SQL执行设置超时或最大行数限制;4) 未实现查询结果缓存或去重机制。攻击者可以构造包含复杂表连接、嵌套子查询或大范围数据扫描的提示,诱导系统生成并执行资源密集型的SQL语句。由于这些操作在服务端执行且缺乏保护,攻击者可以反复发送请求快速耗尽服务器资源。