休眠32位比位编码缺陷会导致64位系统的问题

SQLite的开发人员修补了22年历史的代码执行和拒绝服务漏洞,这仅是自现代64位系统出现以来的问题

SQLITE数据库引擎的维护者已经修补了很高的严重性脆弱性攻击者可以利用依靠软件的崩溃或控制程序。

该软件的开发人员提供了每日swbeplay2018官网ig令人信服的论点,即在实践中很难利用缺陷。即便如此,他们还是用补丁程序修改了该软件以防御缺陷,而不是将问题视为可以安全忽略的问题。

sqlite是一个受欢迎的开源C语言库,它为许多企业应用程序和服务提供了支持。Sqlite的著名用户包括Apple,Adobe,Google,Facebook和Microsoft。全球部署了数十亿份SQLite。

SQLite团队由于其潜在的广泛影响,因此很快就可以解决该软件中的新兴漏洞。但是,本月在22年前引入了本月披露的漏洞,并强调了最初安全的功能如何在进一步的后果中产生意想不到的后果。


赶上最新的与数据库相关的安全新闻和分析


在一个博客文章日期为10月25日的小径研究员安德烈亚斯·凯拉斯(Andreas Kellas)表示,该漏洞是在SQLite版本1.0.12中引入的,该版本是2000年的版本,该版本主要基于32位架构。根据凯拉斯(Kellas)的说法,当时的错误“可能似乎没有错误”。

高严重性脆弱性被跟踪为CVE-2022-35737,CVSS严重程度得分为7.5。

小径说该错误会影响任何依赖Sqlite库的应用程序API

当包含大的字符串输入时,在64位系统上可利用该漏洞%q,,,,%q, 或者%w在这种情况下,格式替换类型可能导致程序崩溃或更糟。

在最严重的情况下 - 当研究人员说,特殊字符字符串中存在特殊字符 - 可能“在最坏的情况下,可以实现任意代码执行,或者使程序无限期地悬挂和循环”。

根本原因分析

讲话每日swbeplay2018官网igSqlite D. Richard Hipp的创建者说,问题的根本原因是将签名的32位整数用作输入字符串中的字节索引并计算输出字符串的大小。当输入字符串足够大时,整数将溢出,并且随之而来的是“各种问题”。

但是,缺陷的潜在影响似乎受到限制。

希普告诉我们,不可能通过SQL输入或通过SQLite传递畸形的数据库文件来达到恶意目的的漏洞。相反,攻击者将不得不滥用使用sqlite3_mprintf()函数 - 或“具有格式字符串的类似C级接口,其中包括非标准之一[; ...]转换符号,然后传递到大小超过2GB的字符串”。

软件开发人员补充说:

“很多应用都使用SQLITE,但只有一小部分使用sqlite3_mprintf()API,甚至较小的百分比利用%q,,,,%q, 或者%w。在那些做的事情中,大多数人没有为攻击者安排2GB+字符串的方式提供给参数%q,,,,%q, 或者%w。”

发掘化石

此外,该项目使用化石控制系统,该软件使用printf,团队找不到注入2GB字符串的方法。

CVE-2022-35737was reported to the Computer Emergency Response Team (CERT) Coordination Center by Trail of Bits on July 14. CERT confirmed the issue, reached out to SQLite maintainers, and the team fixed the bug in the software’s source code only three days later – a task accomplished by converting to the use of 64-bit integers.

修补的SQLite版本v3.39.2于7月21日发布。

希普说:“我们感谢发现它的研究人员的负责任披露。”“升级到较新的SQLite并没有什么伤害。但是,很少有人会影响任何现实世界的应用程序。”

每日swbeplay2018官网ig已经伸出了一些其他疑问的痕迹,我们将在回音时更新这个故事。


有关的HypersQL数据库缺陷使库很容易受到RCE的影响