用于实现隐私保护的代码漏洞审查方法、装置及可读介质与流程

文档序号:23923243发布日期:2021-02-09 19:45阅读:113来源:国知局
用于实现隐私保护的代码漏洞审查方法、装置及可读介质与流程

[0001]
本发明涉及计算机软件技术领域,特别涉及用于实现隐私保护的代码漏洞审查方法、装置及可读介质。


背景技术:

[0002]
随着互联网技术和计算机技术的不断发展,电子产品在生活中的应用场景越来越多,其中,通过在电子产品中预置应用软件来实现各种功能。用户在使用应用软件的过程中,需要在应用软件中注册用户信息,用户信息属于隐私数据,如果这些隐私数据被不法分子所利用,则会给用户带来人身或财产安全上的威胁。
[0003]
在软件开发初期,通常需要对应用软件的源代码进行审查,以对错误的软件代码进行更正,而代码审查人员在进行代码审查时,主要是对源代码能够实现的功能进行审查,并不能防止隐私数据的泄露问题。


技术实现要素:

[0004]
本发明实施例提供了用于实现隐私保护的代码漏洞审查方法、装置及可读介质,能够解决隐私数据的泄露问题。
[0005]
第一方面,本发明实施例提供了用于实现隐私保护的代码漏洞审查方法,包括:
[0006]
获取待审查的源代码;
[0007]
从所述源代码中识别出若干个对象,以及所述若干个对象中具有的对象关系;
[0008]
针对识别出的每一个对象,均执行:
[0009]
根据识别出的对象关系,找出与当前对象对应的对象关系,将找出的对象关系确定为所述当前对象的关系图谱;
[0010]
确定在预先构建的漏洞规则图谱中是否存在针对所述当前对象设置的漏洞规则,若存在,执行下一步骤;
[0011]
根据存在的漏洞规则,确定在所述当前对象的关系图谱中是否存在满足该存在的漏洞规则的目标对象关系;若存在,执行下一步骤;
[0012]
确定所述目标对象关系存在漏洞。
[0013]
可选地,所述当前对象为一个待审查的组件;
[0014]
所述存在的漏洞规则包括:组件在manifest.xml中定义有exported属性, exported属性被显性设置为true,或,组件内包括一个intent filter;
[0015]
所述根据存在的漏洞规则,确定在所述当前对象的关系图谱中是否存在满足该存在的漏洞规则的目标对象关系,包括:在所述待审查的组件的关系图谱中,是否存在一个目标对象关系,所述目标对象关系用于表征所述待审查的组件的exported属性被显性设置为true,或,所述目标对象关系用于表征所述待审查的组件内包括一个intent filter。
[0016]
可选地,所述当前对象为隐私特征向量;
[0017]
所述存在的漏洞规则包括:隐私特征向量明文出现在程序文件、配置文件、日志文
件、备份文件和数据库中的任一个存储区中;
[0018]
所述根据存在的漏洞规则,确定在所述当前对象的关系图谱中是否存在满足该存在的漏洞规则的目标对象关系,包括:在所述隐私特征向量的关系图谱中,是否存在一个目标对象关系,所述目标对象关系用于表征所述隐私特征向量明文出现在程序文件、配置文件、日志文件、备份文件和数据库中的任一个存储区中。
[0019]
可选地,所述当前对象为一个待审查的加密算法;
[0020]
所述存在的漏洞规则至少包括如下任意一条:
[0021]
被加密数据需要本地存储且需要密文与明文进行转换,对该被加密数据使用低于aes128的加密算法;
[0022]
被加密数据应用于认证场景,对该被加密数据采用低于sha256的加密算法;
[0023]
被加密数据需要进行跨信任网络传输,对该被加密数据采用低于 rsa2048的加密算法;
[0024]
所述根据存在的漏洞规则,确定在所述当前对象的关系图谱中是否存在满足该存在的漏洞规则的目标对象关系,包括:在所述待审查的加密算法的关系图谱中,是否存在一个目标对象关系,所述目标对象关系用于表征:
[0025]
采用所述待审查的加密算法进行加密的被加密数据,需要本地存储且需要密文与明文进行转换,所述待审查的加密算法是低于aes128的加密算法;或,
[0026]
采用所述待审查的加密算法进行加密的被加密数据,应用于认证场景,所述待审查的加密算法是低于sha256的加密算法;或,
[0027]
采用所述待审查的加密算法进行加密的被加密数据,需要进行跨信任网络传输,所述待审查的加密算法是低于rsa2048的加密算法。
[0028]
可选地,
[0029]
所述关系图谱中存储有所述对象关系在所述源代码中的地址信息;
[0030]
在所述确定所述目标对象关系存在漏洞之后,进一步包括:从所述关系图谱中确定所述目标对象关系的地址信息,并根据确定出的地址信息在所述源代码中对所述目标对象关系进行定位。
[0031]
可选地,从所述源代码中识别出属于预设对象类型的数据,其中,所述对象类型包括:int、short、long、byte、char、float、double和boolean中的一种或多种;
[0032]
判断识别出的数据所属于的对象类型是否与堆区中的一个实例化对象存在链接关系,其中,所述堆区存储有class类对应的若干个实例化对象;
[0033]
若存在链接关系,则将存在链接关系的该实例化对象与所述识别出的数据均识别为对象,将存在的所述链接关系识别为对象关系。
[0034]
第二方面,本发明实施例提供了用于实现隐私保护的代码漏洞审查装置,包括:
[0035]
获取模块,用于获取待审查的源代码;
[0036]
识别模块,用于从该所述获取模块获取的所述源代码中识别出若干个对象,以及所述若干个对象中具有的对象关系;
[0037]
处理模块,用于在所述识别模块识别出若干个对象以及所述若干个对象具有的对象关系之后,执行以下操作:
[0038]
针对识别出的每一个对象,均执行:
[0039]
根据识别出的对象关系,找出与当前对象对应的对象关系,将找出的对象关系确定为所述当前对象的关系图谱;
[0040]
确定在预先构建的漏洞规则图谱中是否存在针对所述当前对象设置的漏洞规则,若存在,执行下一步骤;
[0041]
根据存在的漏洞规则,确定在所述当前对象的关系图谱中是否存在满足该存在的漏洞规则的目标对象关系;若存在,执行下一步骤;
[0042]
确定所述目标对象关系存在漏洞。
[0043]
可选地,当所述当前对象为一个待审查的组件,所述存在的漏洞规则包括:组件在manifest.xml中定义有exported属性,exported属性被显性设置为ture,或,组件内包括一个intent filter时;
[0044]
所述处理模块,用于执行以下操作:
[0045]
在所述待审查的组件的关系图谱中,是否存在一个目标对象关系,所述目标对象关系用于表征所述待审查的组件的exported属性被显性设置为true,或,所述目标对象关系用于表征所述待审查的组件内包括一个intent filter。
[0046]
可选地,当所述当前对象为隐私特征向量,所述存在的漏洞规则包括:隐私特征向量明文出现在程序文件、配置文件、日志文件、备份文件和数据库中的任一个存储区中时;
[0047]
所述处理模块,用于执行以下操作:
[0048]
在所述隐私特征向量的关系图谱中,是否存在一个目标对象关系,所述目标对象关系用于表征所述隐私特征向量明文出现在程序文件、配置文件、日志文件、备份文件和数据库中的任一个存储区中。
[0049]
可选地,当所述当前对象为一个待审查的加密算法;
[0050]
所述存在的漏洞规则至少包括如下任意一条:
[0051]
被加密数据需要本地存储且需要密文与明文进行转换,对该被加密数据使用低于aes128的加密算法;
[0052]
被加密数据应用于认证场景,对该被加密数据采用低于sha256的加密算法;
[0053]
被加密数据需要进行跨信任网络传输,对该被加密数据采用低于 rsa2048的加密算法;
[0054]
所述处理模块,用于执行以下操作:
[0055]
在所述待审查的加密算法的关系图谱中,是否存在一个目标对象关系,所述目标对象关系用于表征:
[0056]
采用所述待审查的加密算法进行加密的被加密数据,需要本地存储且需要密文与明文进行转换,所述待审查的加密算法是低于aes128的加密算法;或,
[0057]
采用所述待审查的加密算法进行加密的被加密数据,应用于认证场景,所述待审查的加密算法是低于sha256的加密算法;或,
[0058]
采用所述待审查的加密算法进行加密的被加密数据,需要进行跨信任网络传输,所述待审查的加密算法是低于rsa2048的加密算法。
[0059]
可选地,当所述关系图谱中存储有所述对象关系在所述源代码中的地址信息时,进一步包括:定位模块;
[0060]
所述定位模块,用于所述处理模块确定所述目标对象关系存在漏洞之后,从所述
关系图谱中确定所述目标对象关系的地址信息,并根据确定出的地址信息在所述源代码中对所述目标对象关系进行定位。
[0061]
可选地,所述识别模块,用于执行以下操作:
[0062]
从所述源代码中识别出属于预设对象类型的数据,其中,所述对象类型包括:int、short、long、byte、char、float、double和boolean中的一种或多种;
[0063]
判断识别出的数据所属于的对象类型是否与堆区中的一个实例化对象存在链接关系,其中,所述堆区存储有class类对应的若干个实例化对象;
[0064]
若存在链接关系,则将存在链接关系的该实例化对象与所述识别出的数据均识别为对象,将存在的所述链接关系识别为对象关系。
[0065]
第三方面,本发明实施例提供了用于实现隐私保护的代码漏洞审查装置,其特征在于,包括:至少一个存储器和至少一个处理器;
[0066]
所述至少一个存储器,用于存储机器可读程序;
[0067]
所述至少一个处理器,用于调用所述机器可读程序,执行上述第一方面或第一方面的任一可能的实现方式所提供的方法。
[0068]
第四方面,本发明实施例提供了计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行上述第一方面或第一方面的任一可能的实现方式所提供的方法。
[0069]
由上述方案可知,本发明实施例提供的用于实现隐私保护的代码漏洞审查方法通过获取待审查的源代码,从获取到的待审查的源代码中识别出若干个对象以及若干个对象具有的对象关系;针对识别出的每一个对象,均执行:根据识别出的对象关系,找出与当前对象对应的对象关系,将找出的对象关系确定为当前对象的关系图谱,该关系图谱中包括当前对象与该当前对象对应的每一个对象关系;确定在预先构建的漏洞规则图谱中是否存在针对当前对象设置的漏洞规则,若存在,执行根据存在的漏洞规则,确定在当前对象的关系图谱中是否存在满足该存在的漏洞规则的目标对象关系;若存在,执行确定目标对象关系存在漏洞。本发明能够解决隐私数据的泄漏问题。
附图说明
[0070]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0071]
图1是本发明一个实施例提供的一种用于实现隐私保护的代码漏洞审查方法的流程图;
[0072]
图2是本发明一个实施例提供的一种用于实现隐私保护的代码漏洞审查装置所在设备的示意图;
[0073]
图3是本发明一个实施例提供的一种用于实现隐私保护的代码漏洞审查装置的示意图。
具体实施方式
[0074]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0075]
图1是本发明一个实施例提供的一种用于实现隐私保护的代码漏洞审查方法的流程图。如图1所示,该方法可以包括以下步骤:
[0076]
步骤101、获取待审查的源代码;
[0077]
步骤102、从源代码中识别出若干个对象,以及若干个对象中具有的对象关系;
[0078]
步骤103、针对识别出的每一个对象,根据识别出的对象关系,找出与当前对象对应的对象关系,将找出的对象关系确定为当前对象的关系图谱;
[0079]
步骤104、确定在预先构建的漏洞规则图谱中是否存在针对当前对象设置的漏洞规则,若存在,执行步骤105;
[0080]
步骤105、根据存在的漏洞规则,确定在当前对象的关系图谱中是否存在满足该存在的漏洞规则的目标对象关系;若存在,执行步骤106;
[0081]
步骤106、确定目标对象关系存在漏洞。
[0082]
在本发明实施例中,通过获取待审查的源代码,从源代码中识别出若干个对象以及若干个对象具有的对象关系;针对识别出的每一个对象,均执行:根据识别出的对象关系,找出与当前对象对应的对象关系,将找出的对象关系确定为当前对象的关系图谱,该关系图谱中包括当前对象与该当前对象对应的每一个对象关系;确定在预先构建的漏洞规则图谱中是否存在针对当前对象设置的漏洞规则,若存在,执行根据存在的漏洞规则,确定在当前对象的关系图谱中是否存在满足该存在的漏洞规则的目标对象关系;若存在,则表明目标对象关系与漏洞关系图谱中的一条漏洞规则对应,进一步确定目标对象关系存在漏洞,因此能够解决隐私数据的泄漏问题。
[0083]
可选地,应用程序在编写过程中存在逻辑上泄露隐私数据的可能(如差分隐私)。具体地,应用程序在设计过程中存在的逻辑漏洞会导致隐私数据泄露,这是因为这种逻辑漏洞是有迹可循的,例如采用差分隐私攻击即可破解源代码中存在的逻辑漏洞。另外,应用程序的隐私数据流泄露包括单组件隐私数据泄露和组件间隐私数据泄露。
[0084]
针对应用程序在编写过程中存在逻辑上泄露隐私数据这一问题,本发明在漏洞规则图谱中设定若干个漏洞规则。具体地,如图1所示的用于实现隐私保护的代码漏洞审查方法的流程图,若当前对象为一个待审查的组件,漏洞规则图谱中存在的漏洞规则包括:组件在manifest.xml中定义有exported 属性,exported属性被显性设置为true,或,组件内包括一个intent filter,步骤105根据存在的漏洞规则,确定在当前对象的关系图谱中是否存在满足该存在的漏洞规则的目标对象关系,可以进行如下操作:
[0085]
在所述待审查的组件的关系图谱中,是否存在一个目标对象关系,所述目标对象关系用于表征所述待审查的组件的exported属性被显性设置为true,或,所述目标对象关系用于表征所述待审查的组件内包括一个intent filter。
[0086]
在本步骤中,应用软件中的隐私数据包括单组件隐私数据泄漏和组件间隐私数据漏洞,隐私数据对应的代码漏洞包括可调试/可备份漏洞、暴露组件和api误用漏洞。以安卓
应用软件为例,安卓应用软件包括activity、service 服务、content provider内容提供者和broadcast receiver广播接收器四个组件,其应用程序私有组件只能被当前应用软件启动,若被其他应用程序启动则表明该组件存在代码漏洞。具体地,漏洞规则图谱存在的漏洞规则包括:每一个组件在manifest.xml都有一个属性为android:exported的定义方式,具体地定义方式如下:当“显式设置exported属性为true”或者“没有显式设定exported值,但组件下面有intent filter,其组件exported默认值仍为true”,在这种情况下,即表明组件存在漏洞。本发明实施例能够从源代码的逻辑设计和开发过程中可能存在的漏洞组件中确定源代码中是否存在代码漏洞,解决了源代码逻辑流程中暴露隐私数据的问题。
[0087]
需要说明的是,以上是在应用软件开发过程中使用了存在代码漏洞的开发组件,若待审查的组件落在漏洞规则图谱的组件漏洞的漏洞规则中,则表明该待审查的组件存在漏洞。在另一方面,源代码在设计过程中存在逻辑漏洞也有可能泄露隐私数据。例如,在一项差分隐私攻击过程中,若攻击者获取到1000名用户的购物数据,其中,10名用户购买了电子产品,990名用户购买了生活用品,与此同时,攻击者获得其中999名用户购买了电子产品或生活用品的数据,则攻击者能够确定第1000名用户实际购物数据。
[0088]
可选地,应用程序在编写过程中夹杂隐私数据或者注释中存在隐私数据。具体地,当源代码存储如有姓名、联系方式、身份证号的隐私数据时,极易造成隐私数据的直接泄漏。另外,当一些数据库用户名密码硬编码或者直接明文存储到配置文件里,这会造成隐私数据的间接泄露。而在网页界面应用中,前端javascript会暴露隐私数据,因此用户可以在浏览器中能够轻易的看到这些隐私数据,这减少了攻击者攻击网站的难度。
[0089]
针对应用程序在编写过程中夹杂隐私数据或者注释中存在隐私数据这一问题,本发明在漏洞规则图谱中设定若干个漏洞规则。具体地,如图1所示的用于实现隐私保护的代码漏洞审查方法的流程图,若当前对象为隐私特征向量,该隐私特征向量包括但不限于姓名、住址、电话、身份证号、银行账号等个人数据,存在的漏洞规则包括:隐私特征向量明文出现在程序文件、配置文件、日志文件、备份文件和数据库中的任一个存储区中,步骤105根据存在的漏洞规则,确定在当前对象的关系图谱中是否存在满足该存在的漏洞规则的目标对象关系,可以进行如下操作:
[0090]
在所述隐私特征向量的关系图谱中,是否存在一个目标对象关系,所述目标对象关系用于表征所述隐私特征向量明文出现在程序文件、配置文件、日志文件、备份文件和数据库中的任一个存储区中。
[0091]
在本步骤中,若源代码在编写过程中夹杂隐私数据或者存在隐私数据的明文注释,则表明代码存在漏洞。具体地,隐私特征向量即隐私数据包括但不限于姓名、住址、电话、口令、密钥、证书、license、短消息的内容、授权凭据等。将隐私特征向量明文出现在程序文件、配置文件、日志文件、备份文件及数据库中的任一个存储区中作为漏洞规则图谱的漏洞规则。若在隐私特征向量的关系图谱中,存在一个目标对象关系,其中目标对象关系用于表征隐私特征向量明文出现在程序文件、配置文件、日志文件、备份文件和数据库中的任一个存储区中。本发明实施例从代码层面解决源代码中存在的隐私数据以及存在隐私数据的明文注释的代码漏洞的问题。
[0092]
需要说明的是,以上是隐私特征向量明文出现在存储区时导致存在代码漏洞的实例。在另一方面,若存在一个用户的姓名与另一个用户的身份证号,这两者之间不存在联
系,因此虽然出现用户与身份证件的对应关系,但这种情况不属于隐私数据暴露。若存在隐私数据,则可将上述与用户身份相关联的隐私数据固化到漏洞规则图谱中。若当前对象为隐私特征向量,且该隐私特征向量是与当前对象具有对象关系的,则表明当前对象存在漏洞。
[0093]
例如,若源代码中存在隐私特征向量为密码密钥如secretkey deskey= new secretkeyspec(keybytes2,"desede"),表明匹配了漏洞规则图谱中的漏洞规则的硬编码密钥问题,提示“密码密钥不应该被保存在源代码中”,则确定该源代码存在代码漏洞。
[0094]
可选地,应用程序在编写过程中对隐私数据考虑到了加密处理,但是处理时加密强度不够,在数据传输中可能会引起数据的暴力破解。具体地,针对本地存储且需要密文明文转换的需要使用aes128及以上的安全加密算法;对于使用于认证场景的不需要可逆的需要采用sha256及以上的安全hash 算法,如pbkdf2等;对于需要加盐值的需要采用安全随机数加密方式以防彩虹表攻击;对于跨信任网络传输的隐私数据,需要使用非对称加密算法,公钥加密,私钥解密,如rsa2048及以上算法;常见的md5、des,sha1,甚至不能算加密的bsae64位编码都是不安全的做法,当采用这些弱加密方式进行加密时,通过网络抓包简单解密就可以获取真实的原始数据,因此,弱加密的加密算法会导致隐私数据的泄漏。
[0095]
针对应用程序涉及属于用户隐私的个人数据时,必须使用安全的加密算法对个人数据进行加密存储这一问题,本发明在漏洞规则图谱中设定若干个漏洞规则。具体地,如图1所示的用于实现隐私保护的代码漏洞审查方法的流程图,若当前对象为一个待审查的加密算法,存在的漏洞规则至少包括如下任意一条:被加密数据需要本地存储且需要密文与明文进行转换,对该被加密数据使用低于aes128的加密算法,被加密数据应用于认证场景,对该被加密数据采用低于sha256的加密算法,被加密数据需要进行跨信任网络传输,对该被加密数据采用低于rsa2048的加密算法;步骤105根据存在的漏洞规则,确定在当前对象的关系图谱中是否存在满足该存在的漏洞规则的目标对象关系,可以进行如下操作:
[0096]
在所述待审查的加密算法的关系图谱中,是否存在一个目标对象关系,所述目标对象关系用于表征:
[0097]
采用所述待审查的加密算法进行加密的被加密数据,需要本地存储且需要密文与明文进行转换,所述待审查的加密算法是低于aes128的加密算法;或,
[0098]
采用所述待审查的加密算法进行加密的被加密数据,应用于认证场景,所述待审查的加密算法是低于sha256的加密算法;或,
[0099]
采用所述待审查的加密算法进行加密的被加密数据,需要进行跨信任网络传输,所述待审查的加密算法是低于rsa2048的加密算法。
[0100]
在本步骤中,当被加密数据需要本地存储且性需要明文与密文进行转换时,对该加密数据使用低于aes128的加密算法,即加密数据使用低于密钥长度为128位的aes加密算法时,则可认为加密数据在需要本地存储且性需要明文与密文进行转换的情况时的安全性不足;当被加密数据应用于认证场景,对该被加密数据采用低于sha256的加密算法,即加密数据使用低于密钥长度为256位的sha加密算法时,则可认为加密数据应用于认证场景的情况时的安全性不足;当被加密数据需要进行跨信任网络传输,对该被加密数据采用低于rsa2048的加密算法,即加密数据使用密钥长度为2048位的rsa 加密算法时,则可认为加密数据需要进行跨信任网络传输的情况时的安全性不足。另外地,当针对个人隐私数据进行
加密时采用包括md5、des、sha1 中的一种或多种的加密算法时,即可认为个人隐私数据的加密安全性不足,若采用上述弱加密密码,则使得源代码的安全程度过低,极易使得攻击者通过网络抓包简单解密方式直接获得真实的源代码数据,不利于隐私数据的保护。将上述加密安全性不足的实例作为漏洞规则图谱的漏洞规则,若待审查的加密算法落入漏洞规则中,则认为该待审查的加密算法存在代码漏洞。
[0101]
例如,存在以下情况:
[0102][0103][0104]
由上述实例可知,存在的漏洞规则包括md5的加密算法,且在加密算法的关系图谱中,存在一个目标对象关系messagedigest md= messagedigest.getinstance("md5"),则表明该目标对象关系存在漏洞,具体为此加密方式为弱加密,md5是不推荐的加密哈希函数,可以使用pbkdf2 创建哈希密码。
[0105]
需要说明的是,针对用户个人数据,必须采用安全的加密算法进行加密存储。具体地,针对本地存储且需要密文明文转换的使用aes128及以上的安全加密算法;对于使用于认证场景的不需要可逆的可以采用sha256及以上的安全hash算法,如pbkdf2等;需要加盐值采用安全随机数加密算法,以防彩虹表攻击;对于跨信任网络传输的隐私数据,需要使用非对称加密算法,公钥加密,私钥解密,如rsa2048及以上算法。因此在漏洞规则图谱中也可设置上述安全的加密算法,若在加密算法的关系图谱中不存在一个目标对象关系,该目标对象关系用于表示上述安全的加密算法中的一种或多种。
[0106]
可选地,当所述关系图谱中存储有对象关系在源代码中的地址信息时,在步骤106确定目标对象关系存在漏洞之后,进一步包括:
[0107]
从所述关系图谱中确定所述目标对象关系的地址信息,并根据确定出的地址信息在源代码中对所述目标对象关系进行定位。
[0108]
在本步骤中,从源代码识别出若干个对象以及若干个对象具有的对象关系后,将识别出的对象关系的地址信息存储在存储区。当从关系图谱中确定目标对象关系存在漏洞后,进一步确定该目标对象关系在存储区的地址信息,根据地址信息,对该目标对象关系进行定位,将该代码漏洞进行标识显示,以便于代码审查人员对该代码漏洞进行修改。
[0109]
可选地,如图1所示的用于实现隐私保护的代码漏洞审查方法的流程图,步骤102中从源代码中识别出若干个对象,以及若干个对象中具有的对象关系,具体可以通过以下方式实现:
[0110]
从所述源代码中识别出属于预设对象类型的数据,其中,所述对象类型包括:int、short、long、byte、char、float、double和boolean中的一种或多种;
[0111]
判断识别出的数据所属于的对象类型是否与堆区中的一个实例化对象存在链接关系,其中,所述堆区存储有class类对应的若干个实例化对象;
[0112]
若存在链接关系,则将存在链接关系的该实例化对象与所述识别出的数据均识别为对象,将存在的所述链接关系识别为对象关系。
[0113]
在本步骤中,源代码的数据类型包括对象类型即基本数据类型和包装数据类型两种,其中,基本数据类型包括int、short、long、byte、char、float、 double和boolean,包装数据类型包括string、integer、double等,它是将相应的基本数据类型包装起来的类,这些数据存放在堆中。在对源代码的数据进行识别时,首先确定源代码的数据所属的对象类型,源代码的数据与所属的对象类型是源代码定义的,因此能够直接根据源代码定义确定源代码的数据所属的对象类型,并判断识别出的数据所属于的对象类型是否与堆区中的一个实例化对象存在链接关系,在判断时,从源代码中识别该数据是否有相对应的引用关系,若是,则将存在链接关系的该实例化对象与所述识别出的数据均识别为对象,将存在的所述链接关系识别为对象关系。
[0114]
需要说明的是,源代码对应的class类在实例化过程中会存储在栈区、堆区和方法区内存中。具体地,堆区存储对象以及每个对象包含的一个与之对应的class类的信息,即堆区只存放对象本身;栈区保存源代码所属对象类型的值和对象以及对象类型与实例化对象的链接关系;方法区包括每一个源代码对应的class和static变量。
[0115]
如图2、图3所示,本发明实施例提供了用于实现隐私保护的代码漏洞审查装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图2所示,为本发明实施例提供的用于实现隐私保护的代码漏洞审查装置的一种硬件结构图,除了图2所示的处理器、内存、网络接口、内部总线以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等,处理器与网络接口、内存和非易失性存储器通过内部总线连接。以软件实现为例,如图3所示,作为一个逻辑意义上的装置,是通过其所在设备的cpu将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。
[0116]
本发明实施例提供的一种用于实现隐私保护的代码漏洞审查装置,包括:
[0117]
获取模块301,用于获取待审查的源代码;
[0118]
识别模块302,用于从该所述获取模块301获取的所述源代码中识别出若干个对象,以及所述若干个对象中具有的对象关系;
[0119]
处理模块303,用于在所述识别模块302识别出若干个对象以及所述若干个对象具有的对象关系之后,执行以下操作:
[0120]
针对识别出的每一个对象,均执行:
[0121]
根据识别出的对象关系,找出与当前对象对应的对象关系,将找出的对象关系确定为所述当前对象的关系图谱;
[0122]
确定在预先构建的漏洞规则图谱中是否存在针对所述当前对象设置的漏洞规则,若存在,执行下一步骤;
[0123]
根据存在的漏洞规则,确定在所述当前对象的关系图谱中是否存在满足该存在的漏洞规则的目标对象关系;若存在,执行下一步骤;
[0124]
确定所述目标对象关系存在漏洞。
[0125]
可选地,当所述当前对象为一个待审查的组件,所述存在的漏洞规则包括:组件在manifest.xml中定义有exported属性,exported属性被显性设置为ture,或,组件内包括一个intent filter时;
[0126]
所述处理模块,用于执行以下操作:
[0127]
在所述待审查的组件的关系图谱中,是否存在一个目标对象关系,所述目标对象关系用于表征所述待审查的组件的exported属性被显性设置为true,或,所述目标对象关系用于表征所述待审查的组件内包括一个intent filter。
[0128]
可选地,当所述当前对象为隐私特征向量,所述存在的漏洞规则包括:隐私特征向量明文出现在程序文件、配置文件、日志文件、备份文件和数据库中的任一个存储区中时;
[0129]
所述处理模块,用于执行以下操作:
[0130]
在所述隐私特征向量的关系图谱中,是否存在一个目标对象关系,所述目标对象关系用于表征所述隐私特征向量明文出现在程序文件、配置文件、日志文件、备份文件和数据库中的任一个存储区中。
[0131]
可选地,当所述当前对象为一个待审查的加密算法;
[0132]
所述存在的漏洞规则至少包括如下任意一条:
[0133]
被加密数据需要本地存储且需要密文与明文进行转换,对该被加密数据使用低于aes128的加密算法;
[0134]
被加密数据应用于认证场景,对该被加密数据采用低于sha256的加密算法;
[0135]
被加密数据需要进行跨信任网络传输,对该被加密数据采用低于 rsa2048的加密算法;
[0136]
所述处理模块,用于执行以下操作:
[0137]
在所述待审查的加密算法的关系图谱中,是否存在一个目标对象关系,所述目标对象关系用于表征:
[0138]
采用所述待审查的加密算法进行加密的被加密数据,需要本地存储且需要密文与明文进行转换,所述待审查的加密算法是低于aes128的加密算法;或,
[0139]
采用所述待审查的加密算法进行加密的被加密数据,应用于认证场景,所述待审查的加密算法是低于sha256的加密算法;或,
[0140]
采用所述待审查的加密算法进行加密的被加密数据,需要进行跨信任网络传输,所述待审查的加密算法是低于rsa2048的加密算法。
[0141]
可选地,当所述关系图谱中存储有所述对象关系在所述源代码中的地址信息时,进一步包括:定位模块;
[0142]
所述定位模块,用于所述处理模块确定所述目标对象关系存在漏洞之后,从所述关系图谱中确定所述目标对象关系的地址信息,并根据确定出的地址信息在所述源代码中对所述目标对象关系进行定位。
[0143]
可选地,所述识别模块,用于执行以下操作:
[0144]
从所述源代码中识别出属于预设对象类型的数据,其中,所述对象类型包括:int、short、long、byte、char、float、double和boolean中的一种或多种;
[0145]
判断识别出的数据所属于的对象类型是否与堆区中的一个实例化对象存在链接关系,其中,所述堆区存储有class类对应的若干个实例化对象;
[0146]
若存在链接关系,则将存在链接关系的该实例化对象与所述识别出的数据均识别为对象,将存在的所述链接关系识别为对象关系。
[0147]
可以理解的是,本发明实施例示意的结构并不构成对用于实现隐私保护的代码漏洞审查装置的具体限定。在本发明的另一些实施例中,用于实现隐私保护的代码漏洞审查
装置可以包括比图示更多或者更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或者软件和硬件的组合来实现。
[0148]
上述装置内的各模块、各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0149]
本发明实施例还提供了用于实现隐私保护的代码漏洞审查装置,包括:至少一个存储器和至少一个处理器;
[0150]
所述至少一个存储器,用于存储机器可读程序;
[0151]
所述至少一个处理器,用于调用所述机器可读程序,执行本发明任一实施例中的用于实现隐私保护的代码漏洞审查方法。
[0152]
本发明实施例还提供了一种计算机可读介质,存储用于使计算机执行如本文所述的用于实现隐私保护的代码漏洞审查方法的指令。具体地,可以提供配有存储介质的方法或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该方法或者装置的计算机(或cpu 或mpu)读出并执行存储在存储介质中的程序代码。
[0153]
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
[0154]
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如 cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。
[0155]
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作方法等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
[0156]
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu 等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
[0157]
综上所述,本发明各个实施例提供的用于实现隐私保护的代码漏洞审查方法、装置及可读介质,至少具有如下有益效果:
[0158]
1、在本发明实施例中,通过获取待审查的源代码,从源代码中识别出若干个对象以及若干个对象具有的对象关系;针对识别出的每一个对象,均执行:根据识别出的对象关系,找出与当前对象对应的对象关系,将找出的对象关系确定为当前对象的关系图谱,该关系图谱中包括当前对象与该当前对象对应的每一个对象关系;确定在预先构建的漏洞规则图谱中是否存在针对当前对象设置的漏洞规则,若存在,执行根据存在的漏洞规则,确定在当前对象的关系图谱中是否存在满足该存在的漏洞规则的目标对象关系;若存在,则表明目标对象关系与漏洞关系图谱中的一条漏洞规则对应,进一步确定目标对象关系存在漏洞,因此能够解决隐私数据的泄漏问题。
[0159]
2、在本发明实施例中,应用软件中的隐私数据包括单组件隐私数据泄漏和组件间隐私数据漏洞,隐私数据对应的代码漏洞包括可调试/可备份漏洞、暴露组件和api误用漏洞。本发明实施例能够从源代码的逻辑设计和开发过程中可能存在的漏洞组件中确定源代码中是否存在代码漏洞,解决了源代码逻辑流程中暴露隐私数据的问题。
[0160]
3、在本发明实施例中,若源代码在编写过程中夹杂隐私数据或者存在隐私数据的明文注释,则表明代码存在漏洞。具体地,隐私特征向量即隐私数据包括但不限于姓名、住址、电话、口令、密钥、证书、license、短消息的内容、授权凭据等。将隐私特征向量明文出现在程序文件、配置文件、日志文件、备份文件及数据库中的任一个存储区中作为漏洞规则图谱的漏洞规则。若在隐私特征向量的关系图谱中,存在一个目标对象关系,其中目标对象关系用于表征隐私特征向量明文出现在程序文件、配置文件、日志文件、备份文件和数据库中的任一个存储区中。本发明实施例从代码层面解决源代码中存在的隐私数据以及存在隐私数据的明文注释的代码漏洞的问题。
[0161]
4、在本发明实施例中,当被加密数据需要本地存储且性需要明文与密文进行转换时,对该加密数据使用低于aes128的加密算法,即加密数据使用低于密钥长度为128位的aes加密算法时,则可认为加密数据在需要本地存储且性需要明文与密文进行转换的情况时的安全性不足;当被加密数据应用于认证场景,对该被加密数据采用低于sha256的加密算法,即加密数据使用低于密钥长度为256位的sha加密算法时,则可认为加密数据应用于认证场景的情况时的安全性不足;当被加密数据需要进行跨信任网络传输,对该被加密数据采用低于rsa2048的加密算法,即加密数据使用密钥长度为2048 位的rsa加密算法时,则可认为加密数据需要进行跨信任网络传输的情况时的安全性不足。另外地,当针对个人隐私数据进行加密时采用包括md5、 des、sha1中的一种或多种的加密算法时,即可认为个人隐私数据的加密安全性不足,若采用上述弱加密密码,则使得源代码的安全程度过低,极易使得攻击者通过网络抓包简单解密方式直接获得真实的源代码数据,不利于隐私数据的保护。因此,针对源代码中关于用户个人信息加密安全性低的问题,从代码审查完成隐私数据的安全加密保护。
[0162]
5、在本发明源代码识别出若干个对象以及若干个对象具有的对象关系后,将识别出的对象关系的地址信息存储在存储区。当从关系图谱中确定目标对象关系存在漏洞后,进一步确定该目标对象关系在存储区的地址信息,根据地址信息,对该目标对象关系进行定位,将该代码漏洞进行标识显示,以便于代码审查人员对该代码漏洞进行修改。
[0163]
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制情况下,由语句“包括一〃
····
〃”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
[0164]
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。
[0165]
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1