广泛使用的 SQLite 数据库中披露了一个22年漏洞

中科天齐软件源代码安全检测中心

共 1311字,需浏览 3分钟

 · 2022-10-26

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

这个已有 22 年历史的问题被跟踪为 CVE-2022-35737(CVSS 分数:7.5),影响 SQLite 1.0.12 至 3.39.1版本,并已在 2022 年 7 月 21 日发布的版本 3.39.2 中得到解决。

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

“当编译库没有stack canaries的情况下编译时,会确认任意代码执行,但当存在stack canaries时,不会确认任意代码执行,并且在所有情况下都会确认拒绝服务。”

uqlYgFh2oP.png

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

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

专家解释说,为了利用CVE-2022-35737漏洞,攻击者必须将大型字符串输入传递给printf函数的SQLite实现,并且格式字符串包含%Q,%q或%w格式替换类型。当用户控制的数据写入超出堆栈分配缓冲区的范围时,可能会导致程序崩溃。

研究人员还发现,如果格式字符串包含启用Unicode字符扫描的特殊字符'!',那么在最坏的情况下就有可能实现任意代码执行,或者导致DoS条件。

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

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

随着网络攻击事件愈发频繁,安全已成为重点关注问题。美国国家标准与技术局(NIST)、国家漏洞数据库(NVD)调查数据显示,90%以上的网络安全问题是由软件自身的安全漏洞被利用导致。这就要求企业不但及时对出现漏洞的软件进行升级或打好补丁,在做软件开发时更要关注软件安全问题,尤其在开发阶段,使用静态代码检测工具可以及时发现代码缺陷及安全漏洞等易引起网络安全事故的问题,第一时间修正漏洞及缺陷不但有利于提高软件自身安全性,也能为网络安全防御做好重要补充工作。


来源:

https://thehackernews.com/2022/10/22-year-old-vulnerability-reported-in.html

https://securityaffairs.co/wordpress/137629/hacking/cve-2022-35737-sqlite-bug.html

浏览 17
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报