CN114676436A - 一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘系统及方法 - Google Patents
一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘系统及方法 Download PDFInfo
- Publication number
- CN114676436A CN114676436A CN202210314159.5A CN202210314159A CN114676436A CN 114676436 A CN114676436 A CN 114676436A CN 202210314159 A CN202210314159 A CN 202210314159A CN 114676436 A CN114676436 A CN 114676436A
- Authority
- CN
- China
- Prior art keywords
- multimedia analysis
- android application
- module
- multimedia
- variation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘系统及方法,系统包括模块测试方案制定模块、及与模糊测试方案制定模块信号相连的模糊测试模块,模块测试方案制定模块包括依次单向信号相连的多媒体解析接口确定器、多媒体解析接口调用程序生成器和变异方案确定器,模糊测试模块包括双向信号相连的测试数据变异器和模糊测试器,实现了在无源码背景下,在x86平台下展开大规模的对于安卓应用多媒体解析库解析接口的模糊测试,可以更高效地定位其中的内存破坏型漏洞。到目前为止,本发明已经找到三星通用gif解析库中的两个漏洞,分别可以造成远程内存堆块中的越界读和越界写,其中的越界写漏洞被三星官方评级为高危漏洞。
Description
技术领域
本发明涉及漏洞挖掘领域,具体地说,涉及一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘系统及方法。
背景技术
针对安卓应用多媒体解析库的远程内存破坏型攻击是一中普遍存在且影响广泛的攻击手段,其主要利用的是多媒体解析库中存在的内存破坏型漏洞,常见的漏洞类型有重释放(double-free)、释放后重利用(use-after-free)、越界读写(out-of-bound read/write)等。攻击者可以通过构造畸形的多媒体数据,例如伪造看似正常的一张gif图片,将其通过网络或者是蓝牙从安卓应用发送给受害用户,当受害用户从该应用中打开图片时,多媒体解析库中的函数就会被调用,从而触发漏洞。漏洞利用的效果可以从最简单的导致应用崩溃,到绕过安卓应用沙箱进而实现远程代码任意执行,任意读取手机内隐私数据,使得漏洞影响广而深。由于此类攻击具有的普遍性和危害性,减少或者是防止这类攻击就显得十分必要。
针对安卓应用多媒体解析库的远程内存破坏型攻击已经提出不少防御手段,例如通过加强沙箱机制进而提高漏洞利用难度,但是最本质的方法还是开发者能够主动找到漏洞所在处并及时修补。目前挖掘此类漏洞最流行的技术是基于模糊测试(fuzz)的漏洞挖掘方法。该方法的思想是通过产生随机数据输入到对应的解析接口,然后观察进程是否崩溃以及查看崩溃日志来寻找潜在的漏洞。目前模糊测试在安卓应用多媒体解析库的场景中,主要有存在以下几点挑战:
1.找到需要测试的库以及解析接口。安卓应用中会调用大量的三方库并且每个库中都有大量的接口,这给确定需要测试的多媒体解析库以及其相应接口带来了挑战。
2.确定解析接口的参数并且生成调用接口的程序。在没有库源代码的场景之下,确定对应接口的参数个数与类型也是一个挑战。
3.针对不同的接口选择合适的变异方案。多媒体解析库解析的对象格式有多种,常见的有图像文件、视频文件等,随机生成的数据大概率无法通过解析前的检查从而无法探测深层次的代码,因此需要根据这些文件格式选择合适的变异方案以提高模糊测试的效率。
发明内容
本方案基于以上问题提出了基于结构变异的模糊测试方案,并整合成一个针对安卓应用多媒体解析库的模糊测试框架,针对安卓应用多媒体解析库的内存破坏型漏洞,提出了一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘系统及方法。
具体技术方案如下:
本发明公开了一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘系统,系统包括模块测试方案制定模块、及与模糊测试方案制定模块信号相连的模糊测试模块,模块测试方案制定模块包括依次单向信号相连的多媒体解析接口确定器、多媒体解析接口调用程序生成器和变异方案确定器,模糊测试模块包括双向信号相连的测试数据变异器和模糊测试器。
本发明还公开了一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘方法,包括以下步骤:
1)通过多媒体解析接口确定器定位安卓应用的多媒体解析库、多媒体解析接口以及多媒体解析接口的参数信息;
2)通过多媒体解析接口调用程序生成器生成正常调用安卓多媒体解析库的解析接口的程序;
3)通过变异方案确定器确定对于步骤2)中的某个多媒体解析接口解析的文件结构类型,进而制定变异方案;
4)通过测试数据变异器根据步骤3)中的多媒体解析接口调用程序与变异方案产生对应的结构化数据作为模糊测试的输入数据;
5)通过模糊测试器调用步骤3)中的程序来解析步骤4)中的输入数据,观察进程情况,收集运行时信息,这些信息会被反馈给步骤四用来指导变异,然后进入步骤4)变异数据,进入新一轮的循环。
作为进一步地改进,本发明所述的步骤1)中的参数信息包括包括参数个数以及参数类型,其中的参数类型分为指针型以及非指针型。
作为进一步地改进,本发明所述的步骤3)中文件结构类型是通用标准的多媒体文件类型,包括通用的图片文件类型(例如png,jpg)以及音视频文件类型(例如mp3,avi),但不包括安卓应用厂商自定义的文件格式类型。
作为进一步地改进,本发明所述的步骤5)中运行时信息包括进程是否崩溃、崩溃时的崩溃日志以及运行结束后的多媒体解析库覆盖率。
本发明的有益效果:
本发明针对安卓应用多媒体解析库的内存破坏型攻击问题,在没有多媒体解析库源代码的背景之下,综合考虑多媒体解析库的文件对象,根据其对应的格式生成结构化的测试数据,提出一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘方法。总体上,本发明实现了在无源码背景下,在x86平台下展开大规模的对于安卓应用多媒体解析库解析接口的模糊测试,可以更高效地定位其中的内存破坏型漏洞。到目前为止,本发明已经找到三星通用gif解析库中的两个漏洞,分别可以造成远程内存堆块中的越界读和越界写,其中的越界写漏洞被三星官方评级为高危漏洞。
附图说明
图1为本发明的基于结构化变异的安卓应用多媒体解析库漏洞挖掘方法示意图。
具体实施方式
下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明公开了一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘系统,其特征在于,系统包括模块测试方案制定模块、及与模糊测试方案制定模块信号相连的模糊测试模块,模块测试方案制定模块包括依次单向信号相连的多媒体解析接口确定器、多媒体解析接口调用程序生成器和变异方案确定器,模糊测试模块包括双向信号相连的测试数据变异器和模糊测试器。
图1为本发明的基于结构化变异的安卓应用多媒体解析库漏洞挖掘方法示意图。
1)通过多媒体解析接口确定器定位安卓应用的多媒体解析库、多媒体解析接口以及多媒体解析接口的参数信息;
2)通过多媒体解析接口调用程序生成器生成正常调用安卓多媒体解析库的解析接口的程序;
3)通过变异方案确定器确定对于步骤2)中的某个多媒体解析接口解析的文件结构类型,进而制定变异方案;
4)通过测试数据变异器根据步骤3)中的多媒体解析接口调用程序与变异方案产生对应的结构化数据作为模糊测试的输入数据;
5)通过模糊测试器调用步骤3)中的程序来解析步骤4)中的输入数据,观察进程情况,收集运行时信息,这些信息会被反馈给步骤四用来指导变异,然后进入步骤4)变异数据,进入新一轮的循环。
具体地包括如下内容:
(1)模糊测试方案指定模块,该模糊测试方案指定模块的输入为要测试的安卓应用,输出为多媒体解析接口调用程序与变异方案,模糊测试方案制定模块包括:
①多媒体解析接口确定器:使用静态分析工具查找LoadLibrary()调用处,其参数就是所有载入的第三方库,然后继续使用静态分析工具提取其之后的native函数声明,保留函数名中包含deocde的函数,对于这些可能的解析接口,生成对应的frida hook脚本,然后通过脚本来验证这些接口是否是用以解析多媒体的接口,通过验证的函数将会被保留,并且其运行时的参数信息会被保存,其中的参数如果位于该程序的虚拟地址范围内,那么会被判定为是指针类型,反之则会被判定为非指针类型参数。最终多媒体解析接口确定器将输出多媒体解析库信息、解析接口名以及其参数信息。
frida是一种可用于安卓应用的动态插桩工具。
②多媒体解析接口调用程序生成器:将①中产生的多媒体解析库信息、解析接口名以及其参数信息进行填入c++语言写的库函数调用模板,然后编译。最终多媒体解析接口调用程序生成器会生成调用多媒体解析库的解析接口程序。
③变异方案确定器:根据①中产生的解析接口的函数名信息判断解析的多媒体的文件格式,如果是通用的标准文件格式,则根据其文件格式生成对应的protobuf描述文件,反之则弃用该接口。最终,变异方案确定器会输出对应的protobuf描述文件。
protobuf是谷歌公司开发的一种描述结构化数据的语言。
(2)模糊测试模块,输入为模糊测试方案制定模块输出的多媒体解析接口调用程序与变异方案,输出为漏洞报告与数据样本。所述的模糊测试包括:
①测试数据变异器:将输入的媒体解析接口调用程序与变异方案中的protobuf描述文件交给protobuf变异器。最终,测试数据变异器将生成对应文件的结构化测试数据。
②模糊测试器:基于afl-qemu进行模糊测试。在qemu模拟环境中执行模糊测试方案指定模块中②产生的调用多媒体解析接口程序来解析模糊测试模块中①产生的测试数据,在执行解析完成之后,首先观察解析进程是否崩溃,如果崩溃,则记录下测试数据以及对应的崩溃日志,如果没有崩溃,则通过对于qemu的执行指令进行插桩来收集此次解析在对应的对媒体解析库中产生的代码覆盖信息,崩溃信息以及覆盖率信息都将被反馈给测试数据变异器用来指导其变异,然后回到测试数据变异器中进行新一轮的模糊测试循环。
afl-qemu是一种基于qemu虚拟机技术模拟执行的模糊测试工具。
下面将列举使用基于结构化变异的安卓应用多媒体解析库漏洞挖掘方法的原型工具在三星相册应用程序中的效果,以对本发明进行进一步详细说明。
该原型首先使用多媒体解析接口确定器找到了3个音视频的解析库,其中包括libagifencoder.quram.so、libSEF.quram.so,以libagifencoder.quram.so为例进一步找到了其中解析GIF文件的接口QURAMWINKI_DecodeAGIF(),并且使用frida动态hook的方式确定了参数,然后使用多媒体解析接口调用程序生成器根据模板生成了相应的调用程序。之后使用变异方案确定器确定其解析的文件格式为GIF,生成使用protobuf描述GIF结构的文件,之后测试数据变异器根据输入的描述文件生成测试数据并变异,然后使用基于afl-qemu的模糊测试器进行时长为24小时的模糊测试,经过对输出报告与数据样本的梳理,最后确定在这一接口中发现了两个漏洞,分别是堆上的越界读以及堆上的越界写,前者可以造成应用在解析图片的时候直接崩溃,后者可能可以进行进一步的利用造成远程代码执行。
本领域普通技术人员可以理解,以上所述仅为发明的单个实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。
Claims (5)
1.一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘系统,其特征在于,所述的系统包括模块测试方案制定模块、及与模糊测试方案制定模块信号相连的模糊测试模块,所述的模块测试方案制定模块包括依次单向信号相连的多媒体解析接口确定器、多媒体解析接口调用程序生成器和变异方案确定器,所述的模糊测试模块包括双向信号相连的测试数据变异器和模糊测试器。
2.一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘方法,其特征在于,包括以下步骤:
1)通过多媒体解析接口确定器定位安卓应用的多媒体解析库、多媒体解析接口以及多媒体解析接口的参数信息;
2)通过多媒体解析接口调用程序生成器生成正常调用安卓多媒体解析库的解析接口的程序;
3)通过变异方案确定器确定对于步骤2)中的某个多媒体解析接口解析的文件结构类型,进而制定变异方案;
4)通过测试数据变异器根据步骤3)中的多媒体解析接口调用程序与变异方案产生对应的结构化数据作为模糊测试的输入数据;
5)通过模糊测试器调用步骤3)中的程序来解析步骤4)中的输入数据,观察进程情况,收集运行时信息,这些信息会被反馈给步骤四用来指导变异,然后进入步骤4)变异数据,进入新一轮的循环。
3.根据权利要求2所述的基于结构化变异的安卓应用多媒体解析库漏洞挖掘方法,其特征在于,所述的步骤1)中的参数信息包括包括参数个数以及参数类型,其中的参数类型分为指针型以及非指针型。
4.根据权利要求2所述的基于结构化变异的安卓应用多媒体解析库漏洞挖掘方法,其特征在于,所述的步骤3)中文件结构类型是通用标准的多媒体文件类型,包括通用的图片文件类型以及音视频文件类型,而不包括安卓应用厂商自定义的文件格式类型。
5.根据权利要求2或3或4所述的基于结构化变异的安卓应用多媒体解析库漏洞挖掘方法,其特征在于,所述的步骤5)中运行时信息包括进程是否崩溃、崩溃时的崩溃日志以及运行结束后的多媒体解析库覆盖率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210314159.5A CN114676436A (zh) | 2022-03-28 | 2022-03-28 | 一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210314159.5A CN114676436A (zh) | 2022-03-28 | 2022-03-28 | 一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114676436A true CN114676436A (zh) | 2022-06-28 |
Family
ID=82076366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210314159.5A Pending CN114676436A (zh) | 2022-03-28 | 2022-03-28 | 一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114676436A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056921A (zh) * | 2023-08-11 | 2023-11-14 | 上海弘连网络科技有限公司 | 生成Frida脚本与APK动态分析的方法、系统、设备及介质 |
-
2022
- 2022-03-28 CN CN202210314159.5A patent/CN114676436A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056921A (zh) * | 2023-08-11 | 2023-11-14 | 上海弘连网络科技有限公司 | 生成Frida脚本与APK动态分析的方法、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110162977B (zh) | 一种Android车载终端系统漏洞检测系统及方法 | |
US20130117855A1 (en) | Apparatus for automatically inspecting security of applications and method thereof | |
TW201610735A (zh) | 利用運行期代理器及動態安全分析之應用程式逐點保護技術 | |
CN102402479B (zh) | 用于静态分析的中间表示结构 | |
CN110674506B (zh) | 快速验证应用程序漏洞状态的方法及系统 | |
US20070061641A1 (en) | Apparatus and method for generating test driver | |
CN110928777B (zh) | 测试用例的处理方法、装置、设备及存储介质 | |
CN103631573A (zh) | 可迁移函数执行时间的获得方法及系统 | |
US20150143342A1 (en) | Functional validation of software | |
CN111859380A (zh) | Android App漏洞的零误报检测方法 | |
CN110609687A (zh) | 一种编译方法、装置、电子设备和存储介质 | |
Ognawala et al. | Compositional fuzzing aided by targeted symbolic execution | |
CN110597704A (zh) | 应用程序的压力测试方法、装置、服务器和介质 | |
Kröll et al. | Aristoteles–dissecting apple’s baseband interface | |
CN113778897B (zh) | 接口的自动测试方法、装置、设备及存储介质 | |
CN114676436A (zh) | 一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘系统及方法 | |
CN114116509A (zh) | 程序分析方法、装置、电子设备和存储介质 | |
CN116414722B (zh) | 模糊测试处理方法、装置、模糊测试系统及存储介质 | |
US8997048B1 (en) | Method and apparatus for profiling a virtual machine | |
CN112632547A (zh) | 一种数据处理方法和相关装置 | |
CN115292178A (zh) | 测试数据搜索方法、装置、存储介质以及终端 | |
Zhang et al. | Daisy: Effective Fuzz Driver Synthesis with Object Usage Sequence Analysis | |
US9495278B2 (en) | Dynamic discovery of data segments within instrumented code | |
CN113419738A (zh) | 接口文档的生成方法、装置及接口管理设备 | |
CN114047923A (zh) | 错误代码定位方法、装置、存储介质以及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |