可用

广泛使用的 SQLite 数据库被曝高危漏洞

  • 浏览次数 13165
  • 喜欢 0
  • 评分 12345

Hackernews 编译,转载请注明出处:

微信截图_20221026093741

SQLite数据库中已披露了一个高严重性漏洞,该漏洞是2000年10月代码更改的一部分,可能使攻击者崩溃或控制程序。

该漏洞被追踪为CVE-2022-35737(CVSS评分:7.5),已有22年历史,会影响SQLite版本1.0.12至3.39.1,并在2022年7月21日发布的版本3.39.2中得到解决。

“CVE-2022-35737在64位系统上是可利用的,可利用性取决于程序的编译方式。”Trail of Bits研究人员Andreas Kellas在今天发表的一篇技术文章中表示

当编译库时没有堆栈金丝雀时,任意代码执行是确认的,但是当堆栈金丝雀存在时,任意代码执行是未确认的,并且在所有情况下都确认拒绝服务。

微信截图_20221026094858

SQLite是用C语言编程,使用最广泛的数据库引擎,默认情况下包含Android、iOS、Windows和macOS,以及流行的web浏览器,如谷歌Chrome、Mozilla Firefox和Apple Safari。

Trail of Bits发现的漏洞涉及一个整数溢出漏洞,当超大字符串输入作为参数传递给printf函数的SQLite实现时,就会出现该漏洞,而PRINTF函数又会使用另一个函数来处理字符串格式化(“sqlite3_str_vappendf”)。

然而,漏洞库成功武器化的前提是字符串包含%Q、%Q或%w格式替换类型,当用户控制的数据写入超出堆栈分配缓冲区的边界时,可能会导致程序崩溃。

Kellas解释道:“如果格式字符串包含’!’特殊字符以启用unicode字符扫描,那么在最坏的情况下就有可能实现任意代码执行,或者导致程序无限期地挂起和循环。”

该漏洞也是几十年前被认为不切实际的一个例子——分配1GB字符串作为输入——随着64位计算系统的出现而变得可行。

Kellas说:“当系统主要是32位体系结构时,这个bug在编写时(可以追溯到SQLite源代码中的2000年)可能看起来并不是一个错误。”

 

消息来源:TheHackerNews,译者:Shirley;
本文由 HackerNews.cc 翻译整理,封面来源于网络;
转载请注明“转自 HackerNews.cc ” 并附上原文