CN113779589A - 一种安卓智能手机应用误配置检测方法 - Google Patents
一种安卓智能手机应用误配置检测方法 Download PDFInfo
- Publication number
- CN113779589A CN113779589A CN202111076737.8A CN202111076737A CN113779589A CN 113779589 A CN113779589 A CN 113779589A CN 202111076737 A CN202111076737 A CN 202111076737A CN 113779589 A CN113779589 A CN 113779589A
- Authority
- CN
- China
- Prior art keywords
- component
- intent
- components
- calling
- application
- 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
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种安卓智能手机应用误配置检测方法,本发明的框架可以提供对应用的错误配置检测、静态文件信息提取、动态组件错误配置和安全规则的检测,大大提高了错误配置检测的全面性和准确性。本发明采用了快速解析算法和匹配算法,本发明遍历应用程序的整个配置并完成静态分析所需的开销较小。本发明可以看到组件的调用时间受总调用时间和相应组件的初始化函复杂性的影响,组件调用和内存计算时间开销都与执行次数呈线性相关,调用时间的计算包含组件从初始化开始到结束。因此,复杂的初始化函数在调用中会导致更多的开销,在处理不同组件时,本发明的调用时间变化不大,主要受组件初始化函数的影响。
Description
技术领域
本发明属于安卓智能手机应用安全机制领域,具体涉及一种安卓智能手机应用误配置检测方法。
背景技术
随着安卓系统迅速发展,安卓智能手机的市场份额将从2020年的84.8%增加到2024年的85.7%,这表明安卓智能手机已经普遍,成为大多数人的选择。安卓应用程序的爆发式增长使安卓手机更加多功能,它与几乎所有用户活动相关,如社交网络、财务管理和交易、智能旅行等。因此,应用安全在保护用户隐私和数据安全方面起着重要作用。然而,安卓应用程序的安全性面临许多挑战,包括特权升级、远程控制、Intent欺骗、数据泄漏等,这些挑战与应用的配置有一定的关联,配置对应用程序的安全性有关键影响。但是应用程序的配置并不总是正确的,应用程序和信息系统的错误或未达标准的配置称为错误配置,是由多种原因造成。虽然安卓官方文件中提供了大量安全开发提示,但大多数缺乏安全知识的开发人员并没有意识到这些提示的重要性,并且无法安全地配置应用程序。此外,多样化库实现的不同特征是相互冲突的,这就对开发人员提出了更高的要求,一旦开发人员误解了这些功能,他们可能会不自觉地错误配置应用程序,例如,开发人员可能会使用隐式Intent,用敏感数据调用组件,这些数据可能被恶意应用泄露。安卓WebView的默认配置允许任意文件访问,因此,一旦应用程序配置为默认选项,攻击者可以绕过SOP(同源策略)并泄漏任意文件。此外,各种漏洞如数据泄露、特权升级和隐式Intent欺骗都是由于配置错误造成的。
目前在系统分析和检测安卓手机中的配置漏洞中,已经实现了SADroid工具漏洞检测原型分析,并且可以检测安卓错误配置的漏洞,已知的原型SADroid由两大部分构成:静态分析器和逻辑检查器。SADroid是一个可扩展的工具,用于发现违反安全规定的行为并根据已知的威胁分析检测安全性,该工具主要实现找出配置错误导致的漏洞,如果要涉及更多的权限应将新权限和相关API添加到静态分析器,可以进一步提高静态错误配置检测的性能。
对于静态分析器,可以提取安卓应用程序中的配置信息,提取manifest文件中定义的静态配置信息,包括app名称、声明的权限、组件和相关强制权限,导出属性以及Intent过滤器等。同时也可提取动态配置信息,如动态广播接收器、安卓API等信息。对于逻辑检查器,其目标是可扩展性地检测由错误配置引起的漏洞和潜在的威胁。首先根据静态分析提取的信息,逻辑检查器生成并维护整个ICC图(内部组件通讯图),该图描绘了基于Intent机制的不同组件之间的通信关系,其中结点表示一个组件的调用,每条边是连接两个组件的Intent或广播,组件间通过Intent或广播进行通信;其次,将配置信息和要检测的安全规则与威胁编码为逻辑谓词的形式,将谓词逻辑表达式输入逻辑检查器;最后,通过安全规则和威胁分析来检测可能的漏洞,可以利用逻辑检查器推理检查安全属性,并检测模型实例和ICC图上的威胁,逻辑检查器将报告所有违反安全规则的行为和威胁场景。逻辑检查器使我们的方法具有可扩展性,分析人员可以指定并检查安全规则和威胁。
发明内容
本发明的目的在于克服上述不足,提供一种安卓智能手机应用误配置检测方法,以提高静态和动态错误配置检测的性能,解决了当前错误配置检测系统无法找到运行时产生潜在威胁的问题。
为了达到上述目的,本发明包括以下步骤:
S1,收集组件信息,并提取组件的属性;
S2,计算每个组件的得分,通过启发式评分算法,记录分数高于阈值的组件来构建组件表;
S3,构建Intent数据,根据Intent数据实例调用组件;
S3,查找所有类Intent数据实例并对现存Intent数据实例进行内存快照;
S4,根据Intent数据实例再次调用组件,生成类Intent数据实例,对此时的内存进行内存快照,通过比较两次内存快照的变化,在调用过程中过滤已更改的实例;
S5,对安卓运行时堆对象提取,选择存在安全威胁的Intent数据实例,并与相应的组件结合;
S6,根据内置规则对结合后的组件进行配置错误的判断,并执行相应的规则;
S7,报告配置错误的组件信息。
S1中,从manifest中收集组件信息。
S1中,用xml解析器提取组件的属性。
S2中,计算每个组件的得分前,首先过滤所有可能配置错误的组件,根据显式Intent过滤器和隐式Intent过滤器计算每个组件的基本得分。
组件表包括潜在配置错误组件的详细信息。
S3中,使用类调用框架构建Intent数据。
S6中,执行规则包括:
当配置错误的应用程序使用隐式Intent发送数据而不指定过滤器时,系统将广播该Intent并根据过滤器找到一个合适的组件进行检索;
显式权限升级为一个请求可以直接或间接调用代理接口,从而导致代理调用特权API的方法;
内容泄漏为具有特定权限的应用程序代表另一个没有此权限的应用程序访问内容提供商。
与现有技术相比,本发明通过改进现有的规则方案,获得更好的性能,本发明的框架可以提供对应用的错误配置检测、静态文件信息提取、动态组件错误配置和安全规则的检测,大大提高了错误配置检测的全面性和准确性。本发明通过与其他检测工具(如Drozer、SADroid)的比较,从应用程序中发现静态错误配置所需的时间更短。当前的应用程序种类多样,比如具有复杂组件、受混淆保护的应用程序等。因为采用了快速解析算法和匹配算法,本发明遍历应用程序的整个配置并完成静态分析所需的开销较小。本发明可以看到组件的调用时间受总调用时间和相应组件的初始化函复杂性的影响,组件调用和内存计算时间开销都与执行次数呈线性相关,调用时间的计算包含组件从初始化开始到结束。因此,复杂的初始化函数在调用中会导致更多的开销,在处理不同组件时,本发明的调用时间变化不大,主要受组件初始化函数的影响。
进一步的,本发明比较了三种检测工具,可以得到三种检测工具下系统预装应用和真实应用的检测能力结果,结果表明本发明可以检测覆盖配置的情况,而其他工具无法检测,本发明检测到更多类型的与Intent和权限相关的动态错误配置。因为使用内存评估来处理代码混淆的障碍,当涉及到受代码保护的应用程序时,本发明的工作性能比其他工具更好。
附图说明
图1是本发明的实现流程图;
图2是本发明中自动检测子流程图;
图3是本发明检测静态错误配置性能图。
具体实施方式
下面结合附图对本发明做进一步说明。
在综合分析中,本发明主要有两大步骤:组件抽象和配置检查。由于组件声明位于安卓manifest文件中,需要预处理步骤来解析组件信息。通过解压工具从apk文件中提取java代码和manifest文件。manifest文件包含组件信息,如类名、权限和过滤器。因此,需要将manifest放入解析函数中,该函数可以根据xml格式解析组件字段。最后,所有组件信息将以表的形式存储在结构化实体中,如表1所示。
表1组件字段
字段 | 描述 |
类名 | 组件的类名称 |
启用 | 组件是否被启用 |
导出 | 组件是否被导出 |
过滤器 | Intent-Filter的信息 |
组件种类 | 活动、服务、内容、提供广播接收器 |
显著性得分 | 根据错误配置风险评估的分数 |
其它 | 字符串形式的其它属性 |
在大型应用程序中,存在数量庞大的组件,为了有效地评估关键组件并指导后续的动态分析,需要首先根据静态组件声明来估计所有组件的错误配置风险,使用显著性得分来衡量错误配置风险的水平。这样,在综合分析步骤中产生有价值的组件信息,并指导自动检查步骤按得分顺序对组件进行评估。通过权衡相关属性和判断风险声明来计算一个组件的得分。如果组件允许被导出,则认为它有被滥用的风险,其风险性得分将变高。此外,禁用或内置的用户界面相关声明将降低风险性得分。分数越高,组件配置错误的可能性越大。在此基础上,本发明提出了一个启发式算法来计算组件的显著性得分,算法描述了从组件字段评估显著性得分的过程。遍历组件字段并移除阈值下得分较低的组件,这意味着该组件被错误配置的可能性极低。通过该操作,最终得到需要进行动态分析的组件信息,并以显著性得分指导自动检测。下面的自动检测将侧重于动态分析和报告生成。
通过对组件的综合分析,了解组件的基本信息及其显著性得分。然而,显著性得分仅反映在静态错误配置的使用上,为了进行全面分析,需要自动检查以获得组件的动态分析,从而完成动态检测错误配置的实现。
对于自动检查部分,本发明需要三个步骤来查找配置错误的组件,对于远程组件调用旨在独立运行目标组件;为了找出运行时产生的威胁,本发明提出了一种内存评估算法,用于实时发现数据泄漏和权限升级,从而有效解决代码保护的障碍和静态分析中的误报结果。该方法调用远程程序,获取内存布局,对组件的执行进行合理分析。对于自动检查具体实现方法步骤如下:
步骤1,远程组件调用
首先,RPC(远程程序调用)框架设置从主活动启动的应用程序的初始状态。然后本发明遍历按降序排列的组件得分字段,并向具有类名的RPC框架发送调用请求。一旦RPC收到请求,它就用类名自动处理Intent,并准备好调用请求的组件。对比静态分析器产生的高误报率和缺乏真实代码覆盖率结果外,RPC框架强制执行组件,生成真实代码覆盖率,并动态准确地形成分析。
对于初始化远程组件调用的算法,主要为应用程序准备相应环境并调用组件。通过对组件类名和app包的请求,解析应用的主要活动,即每个应用的入口点,然后通过startactivity API启动主活动;之后,通过用组件类名构建Intent的目标类参数,还可以尝试用start Activity API调用组件,为了检查组件是否正在运行,使用ActivityManager获取安卓框架提供的当前正在运行的任务信息,遍历它的列表来搜索组件。如果在正在运行的任务信息中找到了组件类,则该组件被成功调用,否则,将重新初始化环境并在合理的时间内进行调用尝试。
步骤2,内存评估
由于组件运行期间内存环境复杂,系统应用程序、事件或其他组件生成的琐碎堆实例会动态影响内存计算。为了解决这个问题,本发明提出了一种在每次运行之前和运行之后进行内存快照的方法,并考虑了这些方法的差异。在快照S(M,F,T,C)中,M是在组件的整个调用过程中跟踪的一组java堆实例,F是在调用组件之前生成的一组与敏感数据相关的堆实例,T是在调用之后生成的一组堆实例,C是这个组件的类名。每个快照都由RPC框架生成和管理。在开始生成每个组件的快照时,RPC框架将重新初始化环境,以避免垃圾回收和最后一次执行所产生的影响。然后利用堆搜索算法开始搜索java堆内存实例,堆搜索算法主要实现了使用堆搜索来识别有价值的实例,以便在当前的过程中分析使用,通过利用objective搜索实例,动态地收集所有Intent实例并解析Intent类成员。然后遍历所有Intent实例并将Intent和附加数据放入表中。最后得到当前内存映射的Intent实例表,如表2。
表2 Intent实例表
Intent内存标识 | Intent内存标识包括堆内存顺序、地址 |
组件类型 | 源和目标类的组件 |
附加数据 | Intent的附加类成员 |
表2说明了收集受关注的Intent实例的相关字段。通过检查附加数据字段,可以利用上述方法来实现快照。首先,RPC启动主活动,用附加数据搜索受关注的Intent,并将相应的Intent记录到快照的F字段中;其次,初始化远程组件调用,再次搜索受关注的Intent,并将带有附加数据的Intent记录到快照的T字段中;最后,将在整个过程中发现的所有Intent添加到快照的M字段中,将生成的快照作为结果。
与静态分析方法相比,该方法可以降低误报率,实时准确地捕获错误配置的使用情况。当采用附加数据或其他案例捕捉到增加的隐式Intent时,能够识别出应用程序的错误配置点,其误报率可以忽略不计。
步骤3,规则执行
(3a)隐式Intent可以具有键值对,这些键值对在其额外字段中携带完成请求操作所需的附加信息。有时,额外的Intent域可能包含一些秘密信息,例如用户名、密码,甚至银行帐户信息。然而,恶意应用可以在没有权限保护的情况下拦截任何隐式Intent,并访问存储在额外字段中的隐私信息。因此,含有额外信息的隐式Intent可能导致数据泄漏,采用以下算法正式描述这种情况:
算法1:检查隐式数据泄露的风险
(3b)安卓中的显式权限提升是一种复杂的代理攻击。一个请求可以直接或间接调用代理接口,从而导致代理调用特权API方法。在这种情况下,如果代理拥有所需的权限,则API调用成功,请求者成功地执行了特权操作,这也违反了最小特权原则。通过以下算法正式描述这种情况:
算法2:检查显式权限提升的风险
(3c)与显式权限提升类似,具有特定权限的应用程序可以代表另一个没有此权限的应用程序访问内容提供商,这可以称为内容泄漏。由于内容泄漏不仅是一种显式的权限提升,也是一种数据泄漏,通过以下算法来正式描述这种情况:
算法3:检查升级和数据泄露的风险
以上描述仅是本发明的一个具体实例,不构成对本发明的任何限制。显然对本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修正和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。
Claims (7)
1.一种安卓智能手机应用误配置检测方法,其特征在于,包括以下步骤:
S1,收集组件信息,并提取组件的属性;
S2,计算每个组件的得分,通过启发式评分算法,记录分数高于阈值的组件来构建组件表;
S3,构建Intent数据,根据Intent数据实例调用组件;
S3,查找所有类Intent数据实例并对现存Intent数据实例进行内存快照;
S4,根据Intent数据实例再次调用组件,生成类Intent数据实例,对此时的内存进行内存快照,通过比较两次内存快照的变化,在调用过程中过滤已更改的实例;
S5,对安卓运行时堆对象提取,选择存在安全威胁的Intent数据实例,并与相应的组件结合;
S6,根据内置规则对结合后的组件进行配置错误的判断,并执行相应的规则;
S7,报告配置错误的组件信息。
2.根据权利要求1所述的一种安卓智能手机应用误配置检测方法,其特征在于,S1中,从manifest中收集组件信息。
3.根据权利要求1所述的一种安卓智能手机应用误配置检测方法,其特征在于,S1中,用xml解析器提取组件的属性。
4.根据权利要求1所述的一种安卓智能手机应用误配置检测方法,其特征在于,S2中,计算每个组件的得分前,首先过滤所有可能配置错误的组件,根据显式Intent过滤器和隐式Intent过滤器计算每个组件的基本得分。
5.根据权利要求1所述的一种安卓智能手机应用误配置检测方法,其特征在于,组件表包括潜在配置错误组件的详细信息。
6.根据权利要求1所述的一种安卓智能手机应用误配置检测方法,其特征在于,S3中,使用类调用框架构建Intent数据。
7.根据权利要求1所述的一种安卓智能手机应用误配置检测方法,其特征在于,S6中,执行规则包括:
当配置错误的应用程序使用隐式Intent发送数据而不指定过滤器时,系统将广播该Intent并根据过滤器找到一个合适的组件进行检索;
显式权限升级为一个请求可以直接或间接调用代理接口,从而导致代理调用特权API的方法;
内容泄漏为具有特定权限的应用程序代表另一个没有此权限的应用程序访问内容提供商。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111076737.8A CN113779589A (zh) | 2021-09-14 | 2021-09-14 | 一种安卓智能手机应用误配置检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111076737.8A CN113779589A (zh) | 2021-09-14 | 2021-09-14 | 一种安卓智能手机应用误配置检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113779589A true CN113779589A (zh) | 2021-12-10 |
Family
ID=78843633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111076737.8A Pending CN113779589A (zh) | 2021-09-14 | 2021-09-14 | 一种安卓智能手机应用误配置检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113779589A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115694438A (zh) * | 2023-01-04 | 2023-02-03 | 华中科技大学 | 一种轻量级宽电压域时序错误检测单元 |
-
2021
- 2021-09-14 CN CN202111076737.8A patent/CN113779589A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115694438A (zh) * | 2023-01-04 | 2023-02-03 | 华中科技大学 | 一种轻量级宽电压域时序错误检测单元 |
CN115694438B (zh) * | 2023-01-04 | 2023-03-17 | 华中科技大学 | 一种轻量级宽电压域时序错误检测单元 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Corina et al. | Difuze: Interface aware fuzzing for kernel drivers | |
Linares-Vásquez et al. | An empirical study on android-related vulnerabilities | |
CN107368417B (zh) | 一种漏洞挖掘技术测试模型的测试方法 | |
US10581879B1 (en) | Enhanced malware detection for generated objects | |
Zhang et al. | Vetting undesirable behaviors in android apps with permission use analysis | |
US8028336B2 (en) | Intrusion detection using dynamic tracing | |
Xu et al. | Permlyzer: Analyzing permission usage in android applications | |
KR101122650B1 (ko) | 정상 프로세스에 위장 삽입된 악성코드 탐지 장치, 시스템 및 방법 | |
Potharaju et al. | Plagiarizing smartphone applications: attack strategies and defense techniques | |
RU2535506C2 (ru) | Система и способ формирования сценариев модели поведения приложений | |
Jiang et al. | Pdiff: Semantic-based patch presence testing for downstream kernels | |
US20200012793A1 (en) | System and Method for An Automated Analysis of Operating System Samples | |
CN110225029B (zh) | 注入攻击检测方法、装置、服务器及存储介质 | |
CN110414222B (zh) | 一种基于组件关联的应用隐私泄露问题检测方法和装置 | |
CN114329489A (zh) | Web应用程序漏洞攻击检测方法、服务器、电子设备及存储介质 | |
IL265518B2 (en) | Management of security vulnerabilities | |
Fang et al. | A static technique for detecting input validation vulnerabilities in Android apps | |
Elkhail et al. | On relating code smells to security vulnerabilities | |
Sinha et al. | Flowmine: Android app analysis via data flow | |
CN117579395B (zh) | 一种应用人工智能进行网络安全漏洞扫描的方法及系统 | |
CN113779589A (zh) | 一种安卓智能手机应用误配置检测方法 | |
El-Rewini et al. | Dissecting residual APIs in custom android ROMs | |
Nirumand et al. | A model‐based framework for inter‐app Vulnerability analysis of Android applications | |
Fang et al. | IVDroid: Static detection for input validation vulnerability in Android inter-component communication | |
Dam et al. | Learning android malware |
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 |