广泛使用的SQlite数据库库中披露了22年前的漏洞
SQLite数据库库中披露了一个高严重性漏洞,该漏洞是作为可追溯到2000年10月的代码更改的一部分引入的,可使攻击者崩溃或控制程序。
作为CVE – 2022 – 35737 ( CVSS评分: 7.5分)的跟踪,22年前问题影响SQLite 1.0.12到3.39.1版本,并在2022年7月21日发布的3.39.2版本中得到解决。
Trail of Bits研究员安德烈亚斯·凯拉斯( Andreas Kellas )在今天发布的一份技术报告中说,CVE – 2022 – 35737在64位系统上是可利用的,可利用性取决于程序如何编译。
“任意代码执行在库没有堆栈金丝雀编译时得到确认,但在存在堆栈金丝雀时未经确认,并且在所有情况下都确认拒绝服务。”
SQLite是使用最广泛的数据库引擎,默认情况下包括Android、iOS、Windows和macOS,以及流行的Web浏览器,如Google Chrome、Mozilla Firefox和Apple Safari。
Trail of Bits发现的漏洞涉及一个整数溢出漏洞,该漏洞发生在将非常大的字符串输入作为参数传递到printf函数的SQLite实现时,该漏洞反过来利用另一个函数处理字符串格式( ‘ sqlite3 _ str _ vappendf ‘)。
然而,如果在字符串中包含% Q、% q或% w格式替换类型的前提下成功武器化缺陷库,则可能导致用户控制数据写入超出堆栈分配缓冲区的边界时导致程序崩溃。
凯拉斯解释说:”如果格式字符串中包含’ ! ‘特殊字符来实现unicode字符扫描,那么就有可能在最坏的情况下实现任意代码执行,或者导致程序无限期地挂起和循环(几乎)。
该漏洞也是几十年前被认为不切实际的场景的一个例子——分配1GB的字符串作为输入——随着64位计算系统的出现而变得可行。
凯拉斯说:”这是一个错误,不过写( SQLite源代码最早可追溯到2000年)时,系统主要是32位架构,这并不是一个错误。