MAC-SQL 安全漏洞报告摘要 漏洞概述 漏洞类型: 提示词注入 (Prompt Injection) 导致任意SQL执行和拒绝服务 核心问题: MAC-SQL 框架在处理用户输入时,通过三个代理(Selector、Decomposer、Refiner)处理并执行LLM生成的SQL语句,但缺乏适当的验证或清理。攻击者可通过提示词注入操纵LLM生成任意SQL语句,直接执行在数据库服务器上。 关键缺陷位置: 第672-698行的 方法,直接执行LLM生成的SQL而不进行任何过滤。 --- 影响范围 受影响软件: MAC-SQL (最新版本) 仓库地址: https://github.com/wbbeyourself/MAC-SQL 攻击后果: - 执行资源密集型SQL查询(如递归CTE) - 耗尽服务器CPU、内存和I/O资源 - 导致服务中断或服务器完全崩溃 漏洞严重性因素: 无SQL语句类型的白名单或验证 隐式信任LLM输出 生成与执行之间无任何清理措施 --- POC代码(完整提取) POC说明: 使用递归公用表表达式(CTE)创建无限循环,使SQLite引擎消耗过多CPU和内存资源,最终导致拒绝服务条件和潜在的服务器崩溃。 --- 修复方案 1. SQL语句验证: 实现严格的SQL解析和验证,仅允许SELECT语句,阻止潜在危险操作(递归CTE、ATTACH DATABASE等) 2. 查询复杂度限制: 强制执行查询复杂度限制,设置更短的最大执行时间(如5秒)