文章总结: 本文介绍了FuzzySQL框架,结合大语言模型与模糊测试技术,通过语法引导生成与逻辑变换变异,解决了传统工具忽视数据库特殊功能测试的盲区。实验在多款数据库中发现37个漏洞,其中29个已确认、9个获CVE编号,证明了该方法在挖掘深层语义漏洞方面的有效性,为数据库安全测试提供了新路径。 综合评分: 88 文章分类: 漏洞分析,AI安全,安全工具
【论文速读】| FuzzySQL:基于大模型驱动的模糊测试挖掘数据库管理系统特殊功能中的隐藏漏洞
原创
知识分享者 知识分享者
安全极客
2026年3月3日 17:36 北京
基本信息
原文标题: FuzzySQL: Uncovering Hidden Vulnerabilities in DBMS Special Features with LLM-Driven Fuzzing
原文作者: Yongxin Chen, Zhiyuan Jiang, Chao Zhang, Haoran Xu, Shenglin Xu, Jianping Tang, Zheming Li, Peidai Xie, Yongjun Wang
作者单位: National University of Defense Technology, Tsinghua University, Hunan University,
关键词: 数据库安全、模糊测试、安全人工智能 / 面向安全的 AI、语言有效性 / 语句合法性
原文链接:https://arxiv.org/pdf/2602.19490
开源代码: 暂无
论文要点
论文简介:传统的数据库模糊测试技术主要聚焦于语法正确性和通用 SQL 结构,却在很大程度上忽视了数据库管理系统(DBMS)中那些关键却鲜被关注的特殊功能,比如系统级模式(如全局事务标识 GTID)、可编程结构(如存储过程 PROCEDURE)、高级进程命令(如终止进程命令 KILL)等。这类功能虽在常规输入下极少被触发,但在边界场景中执行时,可能引发严重的系统崩溃或安全问题。
本文提出了一款全新的基于大语言模型(LLM)的自适应模糊测试框架 ——FuzzySQL,旨在挖掘数据库管理系统特殊功能中隐蔽的漏洞。该框架将语法引导的 SQL 生成技术与逻辑变换式渐进变异技术相结合:后者通过对条件语句取反、重构执行逻辑的方式探索备选控制路径,从而生成结构和语义均具多样性的测试用例。
为进一步实现对数据库后端更深层次的执行覆盖,FuzzySQL 搭建了混合错误修复流水线,将基于规则的代码修补与大语言模型驱动的语义修复相融合,能够自动修正语法错误和上下文相关的执行失败问题。
研究者在多款数据库管理系统中对 FuzzySQL 开展了测试验证,包括 MySQL、MariaDB、SQLite、PostgreSQL 和 Clickhouse,共挖掘出 37 个漏洞,其中 7 个与此前测试不足的数据库管理系统特殊功能相关。截至本文撰写时,已有 29 个漏洞得到确认,9 个被分配了通用漏洞披露(CVE)编号,14 个已由厂商完成修复,其余漏洞也计划在后续版本中完成补丁修复。
本文的研究结果揭示了传统模糊测试工具在语义功能覆盖方面的局限性,同时印证了基于大语言模型的模糊测试技术在挖掘复杂数据库系统中深层隐藏漏洞的巨大潜力。
研究目的:
传统 DBMS 模糊测试工具主要覆盖通用 SQL 语句(SELECT/INSERT/CREATE),对 DBMS 特有的系统级功能覆盖严重不足。这些特殊功能虽不常被触发,却深度嵌入核心执行路径,在边界条件下可引发持久崩溃和状态损坏。本文旨在填补这一关键盲区,系统性地发现DBMS 特殊功能中的深层隐藏漏洞。
研究贡献:
- 揭示数据库管理系统模糊测试中的关键盲区。本文证明,传统模糊测试工具通常会忽略数据库管理系统的特殊功能(如 GTID 处理逻辑)。这类功能虽可能引发严重故障,却极少被通用测试用例触发。
- 通过大模型驱动的模糊测试实现深度语义探索。本文提出 FuzzySQL 自适应模糊测试框架,融合模板引导生成、上下文感知变异与混合错误修复流水线。该设计可生成语法合法、语义丰富的 SQL 语句序列,从而激活数据库管理系统更深层的控制路径。
- 通过执行状态维护与重放实现全面功能覆盖。FuzzySQL 可灵活适配多种数据库方言与功能集,并在模糊测试与崩溃验证过程中维护全局执行上下文。这使其能够检测依赖内部状态转移与多样化执行环境的功能相关漏洞。
- 在多款数据库管理系统中发现真实漏洞。本文在 MySQL、MariaDB、SQLite 与 ClickHouse 上对 FuzzySQL 进行评估,共发现 37 个漏洞,其中 29 个已被开发者确认,7 个与测试不足的数据库特殊功能相关。实验结果表明,FuzzySQL 能够有效挖掘现有方法普遍遗漏的语义与功能特定漏洞。
引言
现代数据库管理系统(DBMS)是软件基础设施的核心组成部分,其安全性与可靠性至关重要 —— 哪怕是细微的逻辑缺陷,都可能导致系统持续崩溃、状态损坏乃至严重的服务中断。因此,模糊测试技术应运而生,成为挖掘数据库漏洞的有效手段:通过生成 SQL 语句并在目标系统上执行,以此发现潜在问题。然而,绝大多数现有数据库模糊测试工具主要聚焦于通用语句结构(如 SELECT),仅覆盖了数据库语法规范中有限的一部分。近年来诸如 BUZZBEE和 POLYGLOT等研究虽有所突破,但更强调跨目标的通用性,而非系统性地测试数据库特有的功能(如只读模式、GTID 控制)。
数据库特殊功能是厂商定制的扩展特性,偏离了标准 SQL 规范;尽管这类功能的调用频率较低,却深度嵌入系统核心执行路径,在边界条件下可能触发严重的系统故障。例如,清单 1 所示的案例中,一组看似无害的语句组合(如在只读事务中执行 UPDATE HISTOGRAM 和 RESET 操作),竟会导致整个系统崩溃 —— 而这类场景是传统模糊测试工具极少覆盖的。现有数据库模糊测试工具已从多个角度探索 SQL 生成与变异技术,包括结构复杂度、序列级交互、预言机引导的逻辑测试等方向。尽管取得了这些进展,它们仍存在一个共性局限:均未有效尝试系统性地探索功能专属的逻辑。从本质上讲,这一局限源于数据库功能专属行为与现有模糊测试工具设计假设的不匹配,并体现在多个方面。
具体而言,研究者总结出阻碍现有模糊测试工具有效探索数据库功能专属逻辑的三大核心因素:
- 传统工具缺乏对功能专属 SQL 构造的支持 —— 这类构造往往与数据库内部机制深度绑定,不仅因厂商而异,还存在版本依赖性,导致基于规则的建模成本高、适配速度慢;
- 语义建模仍是核心难题 —— 若无法理解复杂的模式依赖与执行上下文,传统工具难以生成辅助对象(如存储过程 PROCEDURE)或构建触发深层执行路径所需的前置条件,最终导致功能专属逻辑的覆盖度极低;
- 现有工具通常缺乏全局状态跟踪与重放机制,难以识别仅通过多条语句或多个测试用例交互才会出现的复合故障。例如,清单 1 所展示的底层漏洞,正是由四个不同测试用例中的语句经潜在交互后触发的。
为解决上述局限,本文提出 FuzzySQL—— 一款由大语言模型(LLM)驱动的新型自适应模糊测试框架,旨在系统性挖掘现代数据库中测试不足的功能模块内的漏洞。FuzzySQL 的核心创新点如下:首先,FuzzySQL 针对功能专属 SQL 构造,将语法引导的模板扩展与大语言模型驱动的实例化相结合,能够系统性覆盖那些难以通过固定规则建模的、厂商专属且版本相关的数据库功能;其次,为攻克语义建模难题,FuzzySQL 通过 “渐进式变异 + 自动化错误修复” 的一体化设计实现语义探索:具体而言,它通过重组种子程序中的逻辑片段、应用条件逻辑变换来优先保证语义多样性,同时自动修复因缺失对象或未满足语义前置条件而执行失败的高价值测试用例。这一设计使 FuzzySQL 能够构造语义合法且多样化的 SQL 序列,触达依赖特定功能的深层执行路径;最后,FuzzySQL 在整个模糊测试过程中持续维护全局执行上下文,并通过基于重放的分析,识别并定位仅在数据库特定内部状态下才会出现的复合故障。
研究动机
现代数据库管理系统(DBMS)实现了大量系统专属功能,远超标准 SQL 的支持范围,这引入了复杂的内部机制与有状态行为。这些测试不足的功能往往潜藏着难以通过传统模糊测试技术发现的漏洞。在本节中,研究者首先通过一个激励性示例指出现有模糊测试工具在触发这类功能时的局限性,然后分析为何以往方法无法触发此类漏洞,并探讨大语言模型(LLM)应对相关挑战的潜力。
(1)现代数据库中测试不足的功能
传统数据库模糊测试工具主要面向通用 SQL 语句(如 SELECT、INSERT、CREATE TABLE),而现代数据库通过各类系统级功能暴露了更大的攻击面,这些功能会直接操作内部状态与元数据。清单 1 给出了一段最简 SQL 序列,它通过误用这类专用语句,可导致 MySQL 发生持续性崩溃。
这类功能包括切换系统模式(如只读模式 READ ONLY)、管理复制状态(如二进制日志 BINARY LOGS 与全局事务标识 GTID)、维护内部统计信息(如更新直方图 UPDATE HISTOGRAM)等。尽管它们的调用频率低于标准数据操纵语言(DML)与数据定义语言(DDL)语句,却会直接与数据库核心子系统及全局执行状态交互。清单 1 中的每条语句单独看都语法合法、语义合理,但它们的特定组合会暴露 MySQL 元数据锁管理中一处隐蔽的控制路径漏洞。具体来说,切换只读模式、更新表直方图会与字典子系统维护的元数据锁交互,而重置二进制日志会改变会话级复制状态。当后续执行普通 INSERT 时,这些交互会破坏内部锁不变式,触发元数据锁检查器的断言失败。
更严重的是,触发该漏洞会导致持续性状态损坏,即使重启服务后问题依然存在。即便重启服务器,后续查询仍会立即崩溃,说明其对内部状态造成了持久影响,而非瞬时故障。该示例表明,数据库中测试不足的功能可能以不可预期的方式相互作用,产生严重且依赖状态的故障,而传统语句级模糊测试难以发现这类问题。
(2)现有模糊测试工具为何遗漏这些漏洞
尽管数据库模糊测试已有长足进步,但大多数现有工具仍以构造语法合法的 DML/DDL 语句为核心,对功能专属 SQL 结构的感知能力有限。此外,这类功能在不同数据库间差异巨大,且在版本间快速迭代。例如,清单 1 中的 RESET BINARY LOGS AND GTIDS 是 MySQL 8.4 引入的新特性,用于替代旧版 RESET MASTER,这使得基于人工规则的支持成本高昂,且难以跟上数据库演进速度。
此外,以往工具通常缺乏全局状态感知能力。若不跟踪执行上下文、不支持重放,它们可能忽略状态依赖型故障或将其误判为误报。在研究者的研究中,清单 1 所示漏洞无法由单个测试用例触发;相反,它是从数千个验证样本中提取的四条独立输入重构而来。这些输入是通过顺序重放与输入化简才被发现的,因为没有任何语义引导提示应当将只读模式切换与重置命令组合使用。这一局限表明,当前模糊测试工具在挖掘深层、与功能相关的漏洞方面存在本质不足。
(3)大语言模型:机遇与挑战
大语言模型能够对复杂 SQL 结构进行语义理解,可生成连贯的多语句 SQL 序列、推断隐式依赖,并合成缺失对象(如执行 CALL 时自动创建存储过程 PROCEDURE)。这降低了数据库模糊测试对人工编写规则的依赖,支持对系统专属功能进行更全面的测试。但在模糊测试场景中,LLM 也带来了独特挑战。由于在预训练与指令微调阶段接触的都是规范数据,模型会强烈偏向生成语法正确、语义合理、常规安全的输入。需要专门的设计来引导 LLM 基于模式上下文进行语义推理,而非默认输出通用低风险内容。
LLM 一个显著特点是幻觉(hallucination),即模型会生成与底层系统或模式不匹配的语法或语义无效内容。尽管这通常被视为缺陷,但在模糊测试中却可能有益,因为它有助于探索意外行为,可能暴露边界漏洞。在模糊测试场景下,幻觉可作为一种有效特性,推动测试超出常规输入范围。研究者将在 5.4 节进一步说明这一现象。
(4)FuzzySQL 的设计目标
基于上述动机,研究者设计 FuzzySQL 这一由 LLM 驱动的自适应模糊测试框架,目标是覆盖数据库中测试不足的功能空间。FuzzySQL 旨在实现:
- 通过基于语法的模板扩展与 LLM 引导的语义实例化,灵活适配多种数据库方言与系统专属功能。
- 生成语法合法、语义有效的 SQL 序列,以触发多样化的内部行为。
- 维护全局执行上下文,支持基于重放的漏洞验证,以发现并定位源于复杂控制流的持续性、状态依赖型漏洞。
FuzzySQL 旨在将数据库模糊测试的范式,从传统的语法驱动或随机变异转向语义引导,更深入地覆盖程序逻辑,更全面地探索系统功能。
研究方法
为挖掘数据库中深层、依赖系统状态的漏洞,FuzzySQL 采用一体化模糊测试流程,将结构化生成、语义变异、自动修复和重放验证相结合。它在持续执行上下文里生成并演化多语句 SQL 程序,重点探索数据库特殊功能与状态相关行为,对有价值的测试用例进行保留、变异和修复,最终对崩溃进行复现验证与最小化提取。
(1)语法引导的 SQL 生成
FuzzySQL 采用两阶段 SQL 生成方式。先基于数据库语法规则递归扩展出四类模板结构,控制递归深度与冗余,生成语法合法但未实例化的 SQL 骨架;再利用 LLM 结合当前数据库模式状态,将模板实例化为可执行、语义合理的完整 SQL,保证生成语句与上下文一致,覆盖从普通查询到系统管理命令的各类逻辑。
(2) 逻辑变换式渐进变异
在语法生成基础上,FuzzySQL 设计序列级渐进变异策略。首先对种子 SQL 序列进行模式统一与序列交叉合成,随机重组语句并概率删减,在保留部分执行逻辑的同时提升多样性;再对条件和连接类型进行逻辑变换改写,在不破坏语法合法性的前提下探索不同执行路径。该方法轻量通用,可适配不同数据库方言。
(3)自动化错误修复
为提升高价值测试用例利用率,FuzzySQL 构建多级错误修复流水线。先对 SQL 错误分类并过滤低价值语法错误;再对常见错误使用基于规则的快速修复,降低开销;对复杂语义错误,利用 LLM 进行上下文感知的智能修复,自动补全缺失对象、修正非法语句,形成迭代修复链路,显著提高特殊功能相关语句的成功率。
(4)重放引导的崩溃验证
为确认并复现状态依赖型崩溃,FuzzySQL 在全局执行上下文里对崩溃用例进行重放验证,区分单次触发与多语句状态依赖崩溃。随后对触发崩溃的 SQL 序列进行保留依赖的最小化化简,从语句结构和序列长度两个方向迭代精简,最终得到短小、可复现的漏洞 PoC,便于定位根因与提交修复。
研究评估
(1)Experimental Setup
实验在 Intel Xeon Gold 6430、256GB 内存、A100 显卡服务器上开展,系统为 Ubuntu 20.04 LTS,GPU 用于本地 LLM 推理。测试对象包括 MySQL、MariaDB、SQLite、PostgreSQL、ClickHouse 五款主流开源数据库。FuzzySQL 基于本地部署的 Qwen3-30B 与 vLLM 框架,温度设为 0.3–0.5,上下文窗口 8K。对比 Squirrel、EET、SQLancer 三种先进模糊测试工具,所有基线在相同环境、配置与数据库版本下运行,每组实验重复五次取平均值。
(2)Bug Discovery Effectiveness
FuzzySQL 在五款数据库中共发现 37 个漏洞,其中 29 个已确认、9 个获得 CVE 编号、14 个已修复,7 个属于此前测试不足的数据库特殊功能漏洞。24 小时模糊测试中,FuzzySQL 在所有数据库上的新执行边覆盖均超过基线工具,尤其在 MySQL、MariaDB 和 PostgreSQL 上优势明显。对比实验显示,仅有 FuzzySQL 能够稳定挖掘特殊功能相关漏洞,而基线工具均无法实现,体现其在覆盖深层语义与状态依赖路径上的核心优势。
(3)Ablation Study
消融实验验证了逻辑变换变异、自动化语义修复和 LLM 选型的重要性。完整配置的 FuzzySQL 覆盖度最高、漏洞发现速度最快,关闭修复或变异会显著降低效率。在确认漏洞中,68.96% 属于逻辑敏感漏洞,依赖逻辑变换才能触发。语义修复使 27% 的漏洞从初始非法用例中被挖掘出来。不同 LLM 对比表明,Qwen3-30B 在语义质量与覆盖增长上最优,适合大规模模糊测试任务。
(4)Case Study
案例从三个维度验证 FuzzySQL 的有效性:一是针对特殊功能,生成突破常规语法的边界 SQL,触发 MySQL、MariaDB 中 DESC、KILL、PROCEDURE 相关崩溃;二是通过轻量级逻辑变换,精准触发仅在特定条件下存在的漏洞;三是利用语义修复挽救非法用例,挖掘出 SQLite 中的堆缓冲区溢出漏洞。三类案例共同表明,FuzzySQL 能够有效发现传统模糊测试工具难以触及的深层漏洞。
研究结论
本文提出了 FuzzySQL—— 一种由大语言模型驱动的模糊测试框架,能够挖掘现有工具通常遗漏的、数据库管理系统特殊功能中深藏的漏洞。通过将语法引导生成、语义变异、混合错误修复与状态感知执行相结合,FuzzySQL 实现了广泛的功能覆盖与精准的漏洞复现。
在多款数据库管理系统上的实验共发现 37 个独特漏洞,其中 7 个与此前测试不足的数据库特殊功能相关。这些结果验证了本文方法的有效性,并凸显了在数据库安全领域开展语义引导模糊测试的必要性。
研究表明,将大语言模型与结构化生成相结合,为在复杂软件系统中推进语义模糊测试提供了极具前景的方向。
-End-
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全极客 知识分享者 知识分享者《【论文速读】| FuzzySQL:基于大模型驱动的模糊测试挖掘数据库管理系统特殊功能中的隐藏漏洞》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论