CN110032871A - 一种应用程序的组件间通信的安全检测方法、装置及介质 - Google Patents
一种应用程序的组件间通信的安全检测方法、装置及介质 Download PDFInfo
- Publication number
- CN110032871A CN110032871A CN201910324008.6A CN201910324008A CN110032871A CN 110032871 A CN110032871 A CN 110032871A CN 201910324008 A CN201910324008 A CN 201910324008A CN 110032871 A CN110032871 A CN 110032871A
- Authority
- CN
- China
- Prior art keywords
- component
- sending assembly
- inter
- radio receiver
- communication
- 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
- 238000004891 communication Methods 0.000 title claims abstract description 172
- 238000001514 detection method Methods 0.000 title claims abstract description 50
- 238000000034 method Methods 0.000 claims abstract description 35
- 238000004590 computer program Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 8
- 230000003068 static effect Effects 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 5
- 241001269238 Data Species 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请公开了一种应用程序的组件间通信的安全检测方法、装置及计算机可读存储介质,包括:在确定出发送组件与广播接收器存在组件间通信的情况下,判断发送组件是否为广播接收器设置有接收权限;若未设置,则判断组件间通信的通信方式是否只有隐式intent;如果是,则依据预先设置的组件调用对判断广播接收器与发送组件是否为同一应用程序中的组件;若否,则判定发送组件存在广播窃听。本方法避免了现有技术中当组件间通信的通信方式为显式intent和隐式intent同时调用时的误判,能够提高对应用程序的组件间通信的安全检测的准确度,降低误判率。
Description
技术领域
本发明涉及软件程序领域,特别涉及一种应用程序的组件间通信的安全检测方法、装置及计算机可读存储介质。
背景技术
近年来,系统应用不断地发展更新,随之而来的安全性问题也日益严重。对于Android系统中的应用程序来说,应用程序由4类基本组件构成,包括活动(Activity)、服务(Service)、广播接收器(Broadcast receiver)和内容提供器(content provider);并且,各组件之间通过组件间通信(ICC)实现通信,Intent是实现Android系统中的各组件的组件间通信的主要媒介。Intent包括显式和隐式两种,对广播接收器(Broadcast receiver)而言,在利用隐式intent进行数据广播时,由于一个发送组件对应多个接收组件,因此可能存在将数据广播到非对应的广播接收器情况,这样一来,将造成广播窃听的情况,从而造成组件间通信的安全性问题。也就是说,发送组件使用隐式intent调用广播接收器,而调用的广播接收器并不是对应的接收组件,非对应的广播接收器与发送组件建立通信关系,即表示该发送组件存在广播窃听问题。
为了解决这一技术问题,现有技术通过检测发送组件是否为使用隐式intent进行数据广播,若是,则判定出发送组件存在广播窃听的危险。但是,由于发送组件在调用组件间通信方法时,可以同时调用隐式intent和显式intent,也就是说,若某个广播接收器既满足显式intent条件又满足隐式intent条件,按照现有技术的方法,会将此种情况判定为广播窃听,而实际上,由于该广播接收器也为显式intent对应的接收组件,因此,并不存在广播窃听的情况。也即,现有技术的方法在进行应用程序的组件间通信的安全检测时,将会发生误报的情况,从而给技术人员带来困扰。
因此,如何提高对应用程序的组件间通信的安全检测的准确度是本领域技术人员目前需要解决的技术问题。
发明内容
有鉴于此,本发明的目的在于提供一种应用程序的组件间通信的安全检测方法,能够相对提高对应用程序的组件间通信的安全检测的准确度;本发明的另一目的是提供一种应用程序的组件间通信的安全检测装置及计算机可读存储介质,均具有上述有益效果。
为解决上述技术问题,本发明提供一种应用程序的组件间通信的安全检测方法,包括:
在确定出发送组件与广播接收器存在组件间通信的情况下,判断所述发送组件是否为所述广播接收器设置有接收权限;
若未设置,则判断所述组件间通信的通信方式是否只有隐式intent;
如果是,则依据预先设置的组件调用对判断所述广播接收器与所述发送组件是否为同一应用程序中的组件;
若否,则判定所述发送组件存在广播窃听。
优选地,在所述判定所述发送组件存在广播窃听之前,进一步包括:
判断所述广播接收器是否存在安全问题;
若存在,则进入所述判定所述发送组件存在广播窃听的步骤。
优选地,在所述判定所述发送组件存在广播窃听之后,进一步包括:
判断所述广播接收器中是否调用用于获取所述发送组件中的广播数据的第二调用指令;
若是,则进一步判断所述第二调用指令的第二指令参数是否与所述发送组件中用于调用所述广播数据的第一调用指令的第一调用参数一致;
若一致,则判定所述发送组件存在数据泄露。
优选地,若所述组件间通信的通信方式为sendorderedbroadcast(),则在所述判定所述发送组件存在广播窃听之后,进一步包括:
判断所述广播接收器是否调用拒绝广播指令;
若是,则判定所述发送组件存在拒绝服务攻击。
优选地,预先设置所述组件调用对的过程,具体包括:
预先对Android系统中各应用程序的APK文件进行反编译,获取各所述应用程序中注册的组件;
获取所述组件中的各发送组件调用的组件间通信的通信方式和各广播接收器对应的注册类型;
若所述广播接收器为静态注册广播接收器,则通过组件调用构造器根据所述发送组件、所述发送组件的通信方式以及所述通信方式的参数信息匹配出目标广播接收器,得出组件调用对;
若所述广播接收器为动态注册广播接收器,则进一步从与所述动态注册广播接收器对应的应用程序的Java源代码中获取所述动态注册广播接收器的广播器参数;
根据所述发送组件、所述发送组件的通信方式、所述通信方式的参数信息和所述广播器参数设置所述组件调用对。
优选地,所述判断所述组件间通信的通信方式是否只有隐式intent的过程,具体包括:
判断所述发送组件调用的所述组件间通信的通信方式的参数信息中是否设置有类名;
若否,则进一步判断所述通信方式的参数信息中是否设置有组件名;
若否,则进一步判断所述通信方式的参数信息中是否设置有包名;
若否,则判定所述组件间通信的通信方式只有隐式intent。
为解决上述技术问题,本发明还提供一种应用程序的组件间通信的安全检测装置,包括:
权限判断模块,用于在确定出发送组件与广播接收器存在组件间通信的情况下,判断所述发送组件是否为所述广播接收器设置有接收权限;若未设置,则调用通信方式判断模块;
所述通信方式判断模块,用于判断所述组件间通信的通信方式是否只有隐式intent;如果是,则调用应用程序判断模块;
所述应用程序判断模块,用于依据预先设置的组件调用对判断所述广播接收器与所述发送组件是否为同一应用程序中的组件;若否,则调用安全性判定模块;
所述安全性判定模块,用于判定所述发送组件存在广播窃听。
为解决上述技术问题,本发明还提供另一种应用程序的组件间通信的安全检测装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述任一种应用程序的组件间通信的安全检测方法的步骤。
为解决上述技术问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种应用程序的组件间通信的安全检测方法的步骤。
本发明实施例提供的应用程序的组件间通信的安全检测方法,相较于现有技术中在判断出发送组件的组件间通信的通信方式中存在隐式intent的情况下,即判定发送组件存在广播窃听的方式,本方法通过判断发送组件与广播接收器的组件间通信的通信方式是否只有隐式intent,并且依据预先设置的组件调用对判断广播接收器与发送组件是否为同一应用程序中的组件判断发送组件是否存在广播窃听,避免了现有技术中当通信方式为显式intent和隐式intent同时调用时的误判,因此本方法能够提高对应用程序的组件间通信的安全检测的准确度,降低误判率。
为解决上述技术问题,本发明还提供了一种应用程序的组件间通信的安全检测装置及计算机可读存储介质,均具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种应用程序的组件间通信的安全检测方法的流程图;
图2为本发明实施例提供的一种应用程序的组件间通信的安全检测装置的结构图;
图3为本发明实施例提供的另一种应用程序的组件间通信的安全检测装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的核心是提供一种应用程序的组件间通信的安全检测方法,能够相对提高对应用程序的组件间通信的安全检测的准确度;本发明的另一核心是提供一种应用程序的组件间通信的安全检测装置及计算机可读存储介质,均具有上述有益效果。
为了使本领域技术人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
图1为本发明实施例提供的一种应用程序的组件间通信的安全检测方法的流程图。如图1所示,一种应用程序的组件间通信的安全检测方法包括:
S10:在确定出发送组件与广播接收器存在组件间通信的情况下,判断发送组件是否为广播接收器设置有接收权限;若未设置,则进入S20。
需要说明的是,本实施例主要是检测应用程序中的发送组件与广播接收器的安全情况。其中,发送组件也即用于调用组件间通信方法的组件,发送组件可以是活动(Activity)或服务(Service),本实施例对此不做限定;广播接收器也即用于接收发送组件的广播数据的组件。对应的,发送组件对应的应用程序为发送应用,广播接收器对应的应用为接收应用,并且,在具体实施中,发送应用和接收应用可以是同一个,也即,为同一应用程序的组件间通信。
具体的,首先判断发送组件是否调用了组件间通信方法,判断是否存在组件间通信:若不存在组件间通信,则不会存在广播窃听问题;若判断出发送组件与广播接收器存在组件间通信,则需要进行进一步的判断。
具体的,若发送组件与广播接收器之间存在组件间通信,则进一步判断发送组件中是否为广播接收器设置了接收权限,如receiverpermission。可以理解的是,若发送组件中设置了广播接收器的接收权限,则表示广播接收器与发送组件之间的组件间通信是安全的;若未设置,则需要进一步判断,进入S20。
S20:判断组件间通信的通信方式是否只有隐式intent;如果是,则进入S30。
本步骤的目的是判断发送组件调用的组件间通信的通信方式是否仅为隐式intent。具体的,由于发送组件调用组件间通信的通信方式可以是显式intent或隐式intent或者二者同时调用。其中,显式intent是通过Android系统直接指定接收组件,而隐式intent是通过设置action、data和category这三个属性值来确定出接收组件。若判断出组件间通信的通信方式为显式intent或显式intent和隐式intent同时调用,则表示广播接收器与发送组件之间的组件间通信是安全的;若确定出组件间通信的通信方式仅为隐式intent,则进入S30作进一步判断。
S30:依据预先设置的组件调用对判断广播接收器与发送组件是否为同一应用程序中的组件;若否,则进入S40;
S40:判定发送组件存在广播窃听。
在具体实施中,考虑到若发送组件与广播接收器为同一应用程序的组件,那么尽管发送组件与广播接收器的通信方式仅为隐式intent,也不会存在广播窃听的危险。组件调用对中设置有各发送组件与接收组件的对应关系以及各发送组件与接收组件分别对应的应用程序。因此,本步骤通过进一步根据预先设置的组件调用判断发送组件与广播接收器是否为同一应用程序中的组件,若为同一应用程序中的组件,则表示发送组件与广播接收器是在同一应用程序中通信,因此组件间通信是安全的;否则,在进一步确定出发送组件与广播接收器为不同的应用程序中的组件的情况下,判定发送组件存在广播窃听。
本发明实施例提供的应用程序的组件间通信的安全检测方法,相较于现有技术中在判断出发送组件的组件间通信的通信方式中存在隐式intent的情况下,即判定发送组件存在广播窃听的方式,本方法通过判断发送组件与广播接收器的组件间通信的通信方式是否只有隐式intent,并且依据预先设置的组件调用对判断广播接收器与发送组件是否为同一应用程序中的组件判断发送组件是否存在广播窃听,避免了现有技术中当通信方式为显式intent和隐式intent同时调用时的误判,因此本方法能够提高对应用程序的组件间通信的安全检测的准确度,降低误判率。
在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,在判定发送组件存在广播窃听之前,进一步包括:
判断广播接收器是否存在安全问题;
若存在,则进入判定发送组件存在广播窃听的步骤。
需要说明的是,为了进一步提高判定发送组件是否存在广播窃听的准确度,本实施例是在判定发送组件存在广播窃听之前,进一步检测广播接收器的安全性,具体包括判断广播接收器是否为导出状态(export=true)、广播接收器中是否设置了接收权限(permission)以及广播接收器中是否设置了意图过滤器(intent-filter),在广播接收器没有设置导出状态、设置有接收权限以及没有设置意图过滤器的情况下,表示广播接收器为安全状态;否则,表示广播接收器存在安全问题,因此进入S30:判定发送组件存在广播窃听的步骤。
可见,本实施例通过进一步对作为接收组件的广播接收器的安全问题进行检测,在判断出广播接收器存在安全问题的情况下判定发送组件存在广播窃听,能够进一步提升判定的准确度。
在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,在判定发送组件存在广播窃听之后,本实施例进一步包括:
判断广播接收器中是否调用用于获取发送组件中的广播数据的第二调用指令;
若是,则进一步判断第二调用指令的第二指令参数是否与发送组件中用于调用广播数据的第一调用指令的第一调用参数一致;
若一致,则判定发送组件存在数据泄露。
需要说明的是,在具体实施中,若发送组件存在广播窃听,则该发送组件还可能存在数据泄露的危险。本实施例通过进一步判断广播接收器中是否存在用于获取发送组件中的广播数据的第二调用指令,以及判断第二调用指令的第二指令参数是否与发送组件中用于调用广播数据的第一调用指令的第一调用参数一致,以此来判定广播接收器是否存在获取发送组件的广播数据的风险。
更具体的,若在广播接收器中存在发送组件中用于存储数据的putextra()或putxxxextra()的key值一致的getextra()值,则表示发送组件存在由广播窃听引起的数据泄露的危险。
可见,本实施例通过进一步判断发送组件是否存在数据泄露的危险,更全面地对组件间通信进行安全检测。
在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,若组件间通信的通信方式为sendorderedbroadcast(),则在判定发送组件存在广播窃听之后,本实施例进一步包括:
判断广播接收器是否调用拒绝广播指令;
若是,则判定发送组件存在拒绝服务攻击。
需要说明的是,若发送组件调用通信方式具体为隐式intent有序广播方法sendorderedbroadcast()时,对应的将多个作为接收组件的广播接收器按照优先级的从高到低顺序排列,并通过连接各广播接收器,组成有一个发送组件和多个广播接收器的组件调用链(CCLink),各广播接收器按照自身的优先级顺序依次接收并转发广播数据。但是在这过程中,广播接收器可能存在通过调用拒绝广播指令abortbroadcast()来阻止广播数据向更低优先级的广播接收器传递,从而导致发送组件的拒绝服务攻击。
因此,在本实施例中,若组件间通信的通信方式为sendorderedbroadcast(),则在判定发送组件存在广播窃听之后,通过进一步判断广播接收器是否调用拒绝广播指令,以此来判断发送组件是否存在拒绝服务攻击。在判断出广播接收器调用拒绝广播指令时,则判定发送组件存在拒绝服务攻击,能够更全面地检测组件间通信的安全性。
在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,预先设置组件调用对的过程,具体包括:
预先对Android系统中各应用程序的APK文件进行反编译,获取各应用程序中注册的组件;
获取组件中的各发送组件调用的组件间通信的通信方式和各广播接收器对应的注册类型;
若广播接收器为静态注册广播接收器,则通过组件调用构造器根据发送组件、发送组件的通信方式以及通信方式的参数信息匹配出目标广播接收器,得出组件调用对;
若广播接收器为动态注册广播接收器,则进一步从与动态注册广播接收器对应的应用程序的Java源代码中获取动态注册广播接收器的广播器参数;
根据发送组件、发送组件的通信方式、通信方式的参数信息和广播器参数设置组件调用对。
具体的,首先将Android系统中的各应用程序的APK文件进行反编译,得出manifest.xml文件、dex文件和Java源代码,通过AXMLprint2.jar提取manifest.xml文件中注册的组件的唯一对应的标识信息如组件名称、exported(导出状态)和intent-filter(意图过滤器)属性,判断对应的组件的导出状态;非导出状态表示该组件不能接收由其他组件发送的信息。本步骤主要是获取各应用程序中的发送组件的信息和广播接收器的信息,其中,发送组件包括活动(Activity)和服务(Service)。
然后,获取各发送组件调用的组件间通信的通信方式,具体的,通过从Java源代码中获取各发送组件对应的组件间通信的通信方式、入口点和getintent()方法等。
需要说明的是,广播接收器在使用之前需要先进行注册,注册类型包括静态注册与动态注册两种类型,静态注册只需在应用程序的配置文件中声明<receiver></receiver>标签,而动态注册则须在类文件中调用registerreceiver()。并且,由于根据广播接收器的不同的注册类型,对应有不同的组件调用匹配方式,因此,在实际操作中,可以通过dex文件确定获取各广播接收器对应的注册类型。
具体的,若广播接收器为静态注册广播接收器,则通过将发送组件、该发送组件的通信方式以及通信方式的参数信息输入至调用构造器(CCP构造器)中,通过调用构造器匹配得出对应的目标广播接收器,从而得出组件调用对。也即,得出发送组件与作为接收组件的目标广播接收器的对应关系。可以理解的是,目标广播接收器的数量可以是一个,也可以是多个,根据实际的匹配结果确定。
对于动态注册广播接收器,将无法使用CCP构造器得出对应的匹配结果,因此,通过从与该动态注册广播接收器对应的应用程序的反编译的Java源代码中获取动态注册广播接收器的广播器参数,如registerreciver()方法,并通过解析registerreciver()方法中的参数得出广播器参数,然后根据发送组件、发送组件的通信方式、通信方式的参数信息以及得出的广播器参数确定出对应的目标广播接收器,得出组件调用对。
更进一步的,在得出组件调用对的基础上,如果在同一应用程序中找到两组及以上的组件调用对,且组件调用对的发送组件相同,接收组件不同时,通过进一步检测该发送组件的组件间通信的通信方式是否包括有序广播sendorderedbroadcast(),若是,则将各个接收组件按优先级从高到低排列,并依次将各接收连接起来,组成一条由一个发送组件与多个接收组件构成的组件调用链(CClink)。
需要说明的是,在具体实施中,在分别得出各组件调用对之后,还可以按照预设的存储格式将各组件调用对存储于组件调用表(CCP表)中,能够更便于后续查找组件调用对的关系。
作为优选的实施方式,判断组件间通信的通信方式是否只有隐式intent的过程,具体包括:
判断发送组件调用的组件间通信的通信方式的参数信息中是否设置有类名;
若否,则进一步判断通信方式的参数信息中是否设置有组件名;
若否,则进一步判断通信方式的参数信息中是否设置有包名;
若否,则判定组件间通信的通信方式只有隐式intent。
需要说明的是,本实施例所提供的判断组件间通信的通信方式是否只有隐式intent的过程,通过依次判断发送组件的组件间通信的通信方式的参数信息中是否设置有类名(setclass),判断通信方式的参数信息中是否设置有组件名(setcomponent)以及判断通信方式的参数信息中是否设置有包名(setpackage),若设置有类名(setclass)或组件名(setcomponent)或包名(setpackage),则表示组件间通信的通信方式包括有显式intent;若不包括类名(setclass)或组件名(setcomponent)或包名(setpackage)中的任意一种,则表示发送组件调用的组件间通信的通信方式只有隐式intent。
显然,本实施例所提供的判断组件间通信的通信方式是否只有隐式intent的方法,判断结果准确,判断方式简单,便于实施。
上文对于本发明提供的一种应用程序的组件间通信的安全检测方法的实施例进行了详细的描述,本发明还提供了一种与该方法对应的应用程序的组件间通信的安全检测装置及计算机可读存储介质,由于装置及计算机可读存储介质部分的实施例与方法部分的实施例相互照应,因此装置及计算机可读存储介质部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
图2为本发明实施例提供的一种应用程序的组件间通信的安全检测装置的结构图,如图2所示,一种应用程序的组件间通信的安全检测装置包括:
权限判断模块21,用于在确定出发送组件与广播接收器存在组件间通信的情况下,判断发送组件是否为广播接收器设置有接收权限;若未设置,则调用通信方式判断模块22;
通信方式判断模块22,用于判断组件间通信的通信方式是否只有隐式intent;如果是,则调用应用程序判断模块23;
应用程序判断模块23,用于依据预先设置的组件调用对判断广播接收器与发送组件是否为同一应用程序中的组件;若否,则调用安全性判定模块24;
安全性判定模块24,用于判定发送组件存在广播窃听。
本发明实施例提供的应用程序的组件间通信的安全检测装置,具有上述应用程序的组件间通信的安全检测方法的有益效果。
图3为本发明实施例提供的另一种应用程序的组件间通信的安全检测装置的结构图,如图3所示,一种应用程序的组件间通信的安全检测装置包括:
存储器31,用于存储计算机程序;
处理器32,用于执行计算机程序时实现如上述应用程序的组件间通信的安全检测方法的步骤。
本发明实施例提供的应用程序的组件间通信的安全检测装置,具有上述应用程序的组件间通信的安全检测方法的有益效果。
为解决上述技术问题,本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述应用程序的组件间通信的安全检测方法的步骤。
本发明实施例提供的计算机可读存储介质,具有上述应用程序的组件间通信的安全检测方法的有益效果。
以上对本发明所提供的应用程序的组件间通信的安全检测方法、装置及计算机可读存储介质进行了详细介绍。本文中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
Claims (9)
1.一种应用程序的组件间通信的安全检测方法,其特征在于,包括:
在确定出发送组件与广播接收器存在组件间通信的情况下,判断所述发送组件是否为所述广播接收器设置有接收权限;
若未设置,则判断所述组件间通信的通信方式是否只有隐式intent;
如果是,则依据预先设置的组件调用对判断所述广播接收器与所述发送组件是否为同一应用程序中的组件;
若否,则判定所述发送组件存在广播窃听。
2.根据权利要求1所述的方法,其特征在于,在所述判定所述发送组件存在广播窃听之前,进一步包括:
判断所述广播接收器是否存在安全问题;
若存在,则进入所述判定所述发送组件存在广播窃听的步骤。
3.根据权利要求2所述的方法,其特征在于,在所述判定所述发送组件存在广播窃听之后,进一步包括:
判断所述广播接收器中是否调用用于获取所述发送组件中的广播数据的第二调用指令;
若是,则进一步判断所述第二调用指令的第二指令参数是否与所述发送组件中用于调用所述广播数据的第一调用指令的第一调用参数一致;
若一致,则判定所述发送组件存在数据泄露。
4.根据权利要求2所述的方法,其特征在于,若所述组件间通信的通信方式为sendorderedbroadcast(),则在所述判定所述发送组件存在广播窃听之后,进一步包括:
判断所述广播接收器是否调用拒绝广播指令;
若是,则判定所述发送组件存在拒绝服务攻击。
5.根据权利要求2至4任一项所述的方法,其特征在于,预先设置所述组件调用对的过程,具体包括:
预先对Android系统中各应用程序的APK文件进行反编译,获取各所述应用程序中注册的组件;
获取所述组件中的各发送组件调用的组件间通信的通信方式和各广播接收器对应的注册类型;
若所述广播接收器为静态注册广播接收器,则通过组件调用构造器根据所述发送组件、所述发送组件的通信方式以及所述通信方式的参数信息匹配出目标广播接收器,得出组件调用对;
若所述广播接收器为动态注册广播接收器,则进一步从与所述动态注册广播接收器对应的应用程序的Java源代码中获取所述动态注册广播接收器的广播器参数;
根据所述发送组件、所述发送组件的通信方式、所述通信方式的参数信息和所述广播器参数设置所述组件调用对。
6.根据权利要求5所述的方法,其特征在于,所述判断所述组件间通信的通信方式是否只有隐式intent的过程,具体包括:
判断所述发送组件调用的所述组件间通信的通信方式的参数信息中是否设置有类名;
若否,则进一步判断所述通信方式的参数信息中是否设置有组件名;
若否,则进一步判断所述通信方式的参数信息中是否设置有包名;
若否,则判定所述组件间通信的通信方式只有隐式intent。
7.一种应用程序的组件间通信的安全检测装置,其特征在于,包括:
权限判断模块,用于在确定出发送组件与广播接收器存在组件间通信的情况下,判断所述发送组件是否为所述广播接收器设置有接收权限;若未设置,则调用通信方式判断模块;
所述通信方式判断模块,用于判断所述组件间通信的通信方式是否只有隐式intent;如果是,则调用应用程序判断模块;
所述应用程序判断模块,用于依据预先设置的组件调用对判断所述广播接收器与所述发送组件是否为同一应用程序中的组件;若否,则调用安全性判定模块;
所述安全性判定模块,用于判定所述发送组件存在广播窃听。
8.一种应用程序的组件间通信的安全检测装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述的应用程序的组件间通信的安全检测方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的应用程序的组件间通信的安全检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910324008.6A CN110032871A (zh) | 2019-04-22 | 2019-04-22 | 一种应用程序的组件间通信的安全检测方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910324008.6A CN110032871A (zh) | 2019-04-22 | 2019-04-22 | 一种应用程序的组件间通信的安全检测方法、装置及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110032871A true CN110032871A (zh) | 2019-07-19 |
Family
ID=67239708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910324008.6A Pending CN110032871A (zh) | 2019-04-22 | 2019-04-22 | 一种应用程序的组件间通信的安全检测方法、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110032871A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988607A (zh) * | 2021-05-11 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 一种应用程序的组件检测方法、装置和存储介质 |
CN113626312A (zh) * | 2021-07-15 | 2021-11-09 | 荣耀终端有限公司 | 一种测试方法、电子设备以及存储介质 |
CN113704785A (zh) * | 2021-08-24 | 2021-11-26 | 中国信息通信研究院 | 智能家居数据的安全防护检测方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103996007A (zh) * | 2014-05-29 | 2014-08-20 | 诸葛建伟 | Android应用权限泄露漏洞的测试方法及系统 |
CN105095753A (zh) * | 2014-05-21 | 2015-11-25 | 腾讯科技(深圳)有限公司 | 广播安全检测方法、装置 |
CN105303112A (zh) * | 2014-06-24 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 组件调用漏洞的检测方法及装置 |
CN106570399A (zh) * | 2016-09-30 | 2017-04-19 | 西北大学 | 一种跨App组件间隐私泄露的检测方法 |
-
2019
- 2019-04-22 CN CN201910324008.6A patent/CN110032871A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095753A (zh) * | 2014-05-21 | 2015-11-25 | 腾讯科技(深圳)有限公司 | 广播安全检测方法、装置 |
CN103996007A (zh) * | 2014-05-29 | 2014-08-20 | 诸葛建伟 | Android应用权限泄露漏洞的测试方法及系统 |
CN105303112A (zh) * | 2014-06-24 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 组件调用漏洞的检测方法及装置 |
CN106570399A (zh) * | 2016-09-30 | 2017-04-19 | 西北大学 | 一种跨App组件间隐私泄露的检测方法 |
Non-Patent Citations (1)
Title |
---|
YUTONG CHEN: "A Static Detection of Inter-Component Communication Vulnerability in Android Application", 《INTERNATIONAL CONFERENCE ON COMPUTER, NETWORK, COMMUNICATION AND INFORMATION SYSTEMS (CNCI 2019)》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988607A (zh) * | 2021-05-11 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 一种应用程序的组件检测方法、装置和存储介质 |
CN113626312A (zh) * | 2021-07-15 | 2021-11-09 | 荣耀终端有限公司 | 一种测试方法、电子设备以及存储介质 |
CN113704785A (zh) * | 2021-08-24 | 2021-11-26 | 中国信息通信研究院 | 智能家居数据的安全防护检测方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110032871A (zh) | 一种应用程序的组件间通信的安全检测方法、装置及介质 | |
CN104994481A (zh) | 一种Android系统中应用程序之间广播消息的收发方法及系统 | |
US8931065B2 (en) | OTA bootstrap method and system | |
CN110096303B (zh) | 代码检测方法及装置 | |
CN104951675B (zh) | 一种识别盗版应用的方法及系统 | |
CN106210827B (zh) | 一种动态配置机顶盒多ca的方法及系统 | |
CN106851513A (zh) | 一种电子产品的测试方法和系统 | |
CN106485140A (zh) | 一种电能表的升级方法和升级系统 | |
CN110940874B (zh) | 一种核电站变压器保护装置的校验方法、服务器及介质 | |
CN111191216A (zh) | 具有java接口的ofd签章客户端及其用于签章验章的方法和系统 | |
CN109933988B (zh) | 一种Android应用隐私泄露漏洞检测方法 | |
CN112995344B (zh) | 区块链一体机及其内多节点的跨链方法、装置、存储介质 | |
CN101877653A (zh) | 告警变化信息是否丢失的判定方法、系统及主控板 | |
CN112099814B (zh) | 车机应用软件安装环境管理系统及方法 | |
CN111831698B (zh) | 一种数据稽核方法、系统和电子设备 | |
CN114449520A (zh) | 一种银行流水的远程获得方法及装置 | |
CN105656877A (zh) | 一种盗链的检测方法及装置 | |
CN114244427A (zh) | 光纤网络端口资源核查方法、装置及计算机可读介质 | |
CN110298654B (zh) | 基于5g网络的手机支付方法和系统 | |
CN110008709A (zh) | 一种权限提升漏洞的检测方法和相关装置 | |
CN108287710B (zh) | 一种Java模块通讯方法及系统 | |
CN115410291B (zh) | 锁的故障识别方法、装置、系统、电子设备及其存储介质 | |
CN117272392B (zh) | 用于终端的数据安全保护与备份控制方法和系统 | |
CN110008128A (zh) | 一种Android应用组件劫持漏洞检测方法、系统及相关装置 | |
CN115250291B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190719 |