近日,安全专家 Andreas Kellas详细介绍了2000年10月引入的 SQLite 数据库库中的一个高严重性漏洞,该漏洞被跟踪为 CVE-2022-35737(CVSS 评分:7.5)。这个有 22 年历史的漏洞是一个整数溢出问题,影响 SQLite 版本1.0.12到 3.39.1,并已在2022年7月21日发布的版本 3.39.2中得到解决。
在没有堆栈金丝雀的情况下编译库时确认任意代码执行,但在存在堆栈金丝雀时未确认,并且在所有情况下都确认拒绝服务。
SQLite采用C 语言编程,是使用最广泛的 数据库引擎,默认包含在 Android、iOS、Windows 和 macOS 以及流行的 Web 浏览器(如 Google Chrome、Mozilla Firefox 和 Apple Safari)中。
Trail of Bits 发现的漏洞涉及整数溢出错误,当超大字符串输入作为参数传递给printf 函数的 SQLite 实现时,会发生整数溢出错误,而 printf 函数又使用另一个函数来处理字符串格式(“ sqlite3_str_vappendf ”)。
“CVE-2022-35737 可在 64 位系统上利用,可利用性取决于程序的编译方式;当库在没有堆栈金丝雀的情况下编译时,任意代码执行得到确认,但在堆栈金丝雀存在时未确认,并且在所有情况下都确认了拒绝服务。” 凯拉斯写道。
专家解释说,为了利用CVE-2022-35737漏洞,攻击者必须将大字符串输入传递给printf函数的 SQLite 实现,并且格式字符串包含 %Q、%q 或 %w 格式替换类型。该漏洞与printf调用的名为“ sqlite3_str_vappendf ”的函数处理字符串格式的方式有关。
当sqlite3_str_vappendf函数接收到大字符串并且格式替换类型为 %q、%Q 或 %w 时,将触发有符号整数溢出。
启用 unicode 字符扫描的特殊字符,那么在最坏的情况下有可能实现任意代码执行,或者导致 DoS 条件。
“当系统主要是 32 位架构时,在编写它时(在 SQLite 源代码中可以追溯到 2000 年),这个错误可能看起来不像是一个错误,”Kellas 总结道。
2022.10.26
2022.10.25
.10.24
注:本文由E安全编译报道,转载请联系授权并注明来源。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...