小组两项研究成果被ACM会议SIGMOD 2026接收
国际数据管理会议SIGMOD(ACM SIGMOD International Conference on Management of Data),是数据库和数据管理领域最具权威性的三大会议之一,与其他会议VLDB、ICDE齐名,并被中国计算机学会(CCF)推荐为数据库领域的A类国际会议。本次清华大学软件系统安全保障小组共有2项研究成果被SIGMOD 2026接收。
第一项成果是 “Detecting Logic Bugs in DBMSs via Equivalent Data Construction”。该工作聚焦于数据库系统(DBMS)中数据操作实现层面的逻辑缺陷,提出了全新的测试方法——EDC(Equivalent Data Construction),用于系统性地检测由于实现错误导致的隐性逻辑缺陷。该方法通过构造等价数据并替换表达式,验证查询结果的一致性,从而识别出算术运算、类型转换等操作中的逻辑错误。与传统聚焦于查询优化阶段的测试工具不同,EDC将关注点前移至数据操作实现本身,能够发现类型溢出、精度损失等底层逻辑缺陷。该工作在7个主流数据库系统(如MySQL、MariaDB)上进行实证分析,共检测出54个未公开的漏洞,其中39个已被开发者确认并修复。MariaDB 开发团队称该方法“颠覆直觉”,帮助他们发现了多个历史遗留的问题。本研究由清华大学硕士生邓文倩等人合作完成,北航梁杰副教授和清华大学姜宇副教授等人共同指导。
研究成果概要:
数据库管理系统在执行 SQL 查询过程中,需要完成大量底层数据操作,例如数学运算、字符串处理、类型转换等。这些操作由于数据类型多样、边界行为复杂,在实现中极易引入逻辑缺陷,例如隐式类型转换错误、算术溢出、精度丢失等问题。如果这类缺陷未被及时发现,可能会导致查询结果偏差,严重影响系统的正确性和用户数据的可信度。现有的数据库逻辑错误检测方法,主要集中在查询优化层面,依赖于语义变换和查询重写等策略。这类方法对于底层数据操作的实现错误覆盖能力有限,尤其难以发现由特定数据类型组合引发的隐性逻辑缺陷。 为此,该工作提出了EDC(Equivalent Data Construction),一种新颖的测试方法,用于检测 DBMS 中由数据操作实现错误导致的逻辑漏洞。EDC 的核心思想是:对于 SQL 查询中的数据操作表达式,若将其替换为等价的“预计算结果值”,则查询的语义和结果应保持不变。任何替换前后的结果差异,即可被视为潜在的逻辑缺陷。
EDC 的主要流程包括两个阶段:
- 等价数据构造 在第一阶段,EDC 从数据库系统支持的运算操作中随机选择一个数据操作,并结合多个数据类型生成原始数据表。随后,系统会使用所选操作计算该表中的操作表达式结果,并将其作为等价值存入新建的“等价数据表”。
- 数据操作导向的查询生成与结果验证 在第二阶段,EDC 会基于原始表达式构造一条查询,然后再生成一条等价查询,将操作表达式全部替换为前面计算出的等价数据列。例如,如果原始查询使用了 HAVING varSamp(a1) > 10,则替换后的查询会使用预计算值进行判断。最后,通过对比两条查询的执行结果,若发现结果不一致,即可判定数据库系统在该操作实现中存在潜在漏洞。
EDC 被应用于包括 MySQL、MariaDB 在内的7个主流数据库系统中,在多个数据操作和数据类型组合场景下,发现了 54 个此前未公开的逻辑缺陷,其中 39 个 已被官方开发者确认。
第二项成果是“SRS: Detecting Logic Bugs of Join Implementation in DBMSs via Set Relation Synthesis”。该工作针对数据库管理系统(DBMSs)中Join实现的逻辑缺陷,提出了一种基于集合关系合成的逻辑缺陷检测方法SRS,在MySQL、MariaDB、TiDB、PostgreSQL、DuckDB共五个流行的DBMSs中发现了36个未知缺陷,具有广泛的工程应用前景和实践价值。本工作由南昌大学赖锦辉博士、清华大学张弛博士后等人共同完成,清华大学姜宇副教授和南昌大学徐子晨教授等人共同指导。
研究成果概要:
Join是DBMSs的关键操作,用于连接数据库多张表中的数据。然而,Join非常复杂,具有各种Join类型、Join顺序及Join约束,其实现极容易引入逻辑缺陷,导致DBMSs返回错误的结果。现有方法主要通过改变查询提示和系统变量以影响优化器对执行计划的选择,从而检测Join优化中的逻辑错误。然而,当查询提示或系统变量无法改变优化器行为,或当逻辑错误存在于与优化无关的Join实现中,现有方法往往难以检测这类缺陷。
对此,本文提出了一种基于集合关系合成的逻辑缺陷检测方法SRS,通过利用不同Join操作之间的集合关系,检测DBMSs中Join实现的逻辑缺陷。具体而言,SRS首先随机生成一个包含Join操作的原始查询;然后基于本文提出的集合关系模型,生成一个或两个转换查询;最后检验原始查询和转换查询的结果是否满足预定义的集合关系。任何违背预定义集合关系的结果,都表明DBMSs中Join实现可能存在逻辑缺陷。