引入了一种利用 SQLite 漏洞的新技术。

Check Point 的研究人员 裸露 在 DEF CON 会议上,详细介绍了使用易受攻击的 SQLite 版本攻击应用程序的新技术。 检查点方法将数据库文件视为集成利用各种内部 SQLite 子系统中不可直接利用的漏洞的场景的机会。 研究人员还准备了一种利用漏洞的技术,通过在 SQLite 数据库中以 SELECT 查询链的形式对漏洞进行编码,从而允许您绕过 ASLR。

为了成功进行攻击,必须能够修改被攻击应用程序的数据库文件,这限制了攻击使用 SQLite 数据库作为传输和输入数据格式的应用程序的方法。 该方法还可用于扩展现有的本地访问,例如,将隐藏的后门集成到使用的应用程序中,以及在安全研究人员分析恶意软件时绕过安全机制。 文件替换后的操作是在应用程序针对修改的数据库中的表执行第一个 SELECT 查询时执行的。

作为示例,我们演示了打开地址簿时在 iOS 中运行代码的能力,使用所提出的方法修改了包含“AddressBook.sqlitedb”数据库的文件。 该攻击利用了 fts3_tokenizer 函数中的漏洞(CVE-2019-8602,指针取消引用功能),该漏洞已在 2.28 月份的 SQLite XNUMX 更新中修复,此外还有另一个漏洞 脆弱性 在窗口函数的实现中。 此外,还演示了使用PHP编写的远程夺取攻击者后端服务器控制权的方法,该方法会累积恶意代码运行过程中截获的密码(截获的密码以SQLite数据库的形式传输)。

该攻击方法基于“查询劫持”和“面向查询编程”两种技术的使用,允许利用导致 SQLite 引擎内存损坏的任意问题。 “查询劫持”的本质是替换sqlite_master服务表中“sql”字段的内容,该字段决定了数据库的结构。 指定字段包含一个DDL(数据定义语言)块,用于描述数据库中对象的结构。 描述是使用标准 SQL 语法指定的,即使用“CREATE TABLE”结构,
它在数据库初始化过程中执行(在第一次启动期间)
sqlite3LocateTable 函数在内存中创建与表相关的内部结构。

这个想法是,由于将“CREATE TABLE”替换为“CREATE VIEW”,因此可以通过定义自己的视图来控制对数据库的任何访问。 使用“CREATE VIEW”将“SELECT”操作绑定到表,该操作将代替“CREATE TABLE”被调用,并允许您访问 SQLite 解释器的不同部分。 接下来,最简单的攻击方法是调用“load_extension”函数,该函数允许您加载带有扩展名的任意库,但默认情况下该函数是禁用的。

为了在可以执行“SELECT”操作时进行攻击,提出了“面向查询编程”技术,该技术使得利用 SQLite 中导致内存损坏的问题成为可能。 该技术让人想起面向返回的编程(ROP,面向返回的编程),但不使用现有的机器代码片段来构建调用链(“小工具”),而是插入 SELECT 内的一组子查询。

引入了一种利用 SQLite 漏洞的新技术。

引入了一种利用 SQLite 漏洞的新技术。

来源: opennet.ru

添加评论