SQLite 漏洞由腾讯的安全研究人员(属于 Blade Team)于 2018 年首次发现,它继续将数百万应用程序、软件、物联网设备等暴露在 SQLite 注入攻击的风险中。尽管是中等影响漏洞,但SQLite 漏洞是一个严重的安全漏洞。让我们进一步深入研究这个漏洞。


SQLite 漏洞:简介


什么是 SQLite?


SQLite 是一个开源、零配置、自包含且功能齐全的关系数据库管理系统,包含在 C 编程库中。它是一个嵌入式 SQL 数据库引擎,没有客户端-服务器关系。它根据需要与应用程序动态或静态链接。与其他 SQL 数据库不同,它是无服务器的,不需要单独的服务器进程。


SQLite 注入攻击如何工作?


SQLite 注入背后的基本思想是从数据库中获取机密信息并执行易受攻击的操作,例如更新、修改或删除记录、添加新记录等。


通常,要使 SQLite 注入攻击成功,必须满足以下先决条件之一:

  • 该应用程序存在 SQLi 漏洞或运行过时的 SQLite 版本。
  • 应用程序必须允许未经消毒和未经验证的用户输入。

应用程序必须允许攻击者提交恶意制作的数据库文件,应用程序将打开和查询这些文件。


假设您的网站中有一个注册页面,用户必须在其中输入其用户名。如果用户输入 SQLite 语句而不是他们的名字怎么办?查询将直接进入数据库并获取查询语句中请求的数据。这就是大多数SQLite 注入攻击的发生方式。

让我们再举一个例子。您的应用程序允许第三方应用程序从 SQLite 数据库读取数据或提交恶意制作的数据库文件。利用这个漏洞,攻击者可以在数据库中存储恶意代码,前提是他们拥有相关的文件系统访问权限。当应用程序从数据库访问数据时,会执行恶意代码。


基于 Chromium 的浏览器,如 Google Chrome、Brave、Vivaldi 等,实现了 JavaScript 的 Web SQL 特性。这使攻击者能够创建向应用程序的嵌入式 SQLite 代码发送 SQL 命令的网页。利用这个 SQLite 漏洞,攻击者可以运行任意 SQL 文本。像在支持 SQLite 的浏览器中访问网页这样简单的事情就足以让攻击者利用该漏洞并触发远程代码执行。Web SQL API 将恶意代码转换为常规 SQL 语法。


为什么 SQLite 安全漏洞很危险?


发现较新的缺陷


腾讯安全团队于 2018 年首次发现 SQLite 中的远程代码执行漏洞。 此后,其他 SQL 安全漏洞,如整数流、释放后使用、空指针延迟、输入验证错误、SELECT 查询功能缺陷等使得攻击者按照他们的意愿行事。

研究人员一直在寻找缺陷和方法来利用不同操作系统、软件、应用程序、平台、程序和设备中的 SQLite 引擎。它可能是一大堆新漏洞的起点。

影响


攻击者利用 SQLite 漏洞进行各种恶意活动,从远程代码执行、内存程序泄漏和程序崩溃到编排DDoS 攻击。


其广泛使用增加了相关风险


鉴于其兼容性、轻量级(在设置复杂性、资源使用和管理开销方面)和其他优势,SQLite 通常用于整个计算领域,包括应用程序、软件和物联网设备(包括语音助手、智能电视等)。


它还用于运行这些应用程序的底层操作系统,例如 Android、Unix 风格、MacOS 等。它也是基于 Chromium 的浏览器的一部分,例如 Google Chrome、Brave、Vivaldi、Opera 等。因此,SQLite 被嵌入到数十亿的应用程序、智能手机和设备中。甚至某些版本的 Safari 和 Firefox 也存在此漏洞。


考虑到它的广泛使用,您的应用程序面临风险的可能性很高。即使您使用的第三方应用程序存在 SQLite 安全漏洞,您的应用程序也可能面临风险。


巨大的攻击面


由于这些被归类为中等影响漏洞,开发人员/供应商可能会误以为安全,并且可能无法修复漏洞。这最终可能会创建一个广泛的攻击面,攻击者将来可能会利用这些攻击面来编排未修补系统的链式攻击。


即使在补丁发布后,应用程序也可能存在风险


谷歌等使用 SQLite 引擎的应用程序已经发布补丁。将嵌入式数据库引擎更新到应用程序可能是一个危险的过程,会导致数据损坏。因此,开发人员倾向于避免长时间修复这些缺陷。应用程序的库和组件很少更新,这增加了 SQLite 漏洞的风险。