CN116781327B - 自动化密码应用安全漏洞挖掘方法、装置、介质及设备 - Google Patents
自动化密码应用安全漏洞挖掘方法、装置、介质及设备 Download PDFInfo
- Publication number
- CN116781327B CN116781327B CN202310594008.4A CN202310594008A CN116781327B CN 116781327 B CN116781327 B CN 116781327B CN 202310594008 A CN202310594008 A CN 202310594008A CN 116781327 B CN116781327 B CN 116781327B
- Authority
- CN
- China
- Prior art keywords
- password
- api
- program
- slicing
- cryptographic
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000005065 mining Methods 0.000 title claims abstract description 52
- 230000003068 static effect Effects 0.000 claims abstract description 36
- 238000001514 detection method Methods 0.000 claims abstract description 14
- 238000004458 analytical method Methods 0.000 claims abstract description 13
- 238000009412 basement excavation Methods 0.000 claims abstract description 8
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 118
- 230000005540 biological transmission Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012795 verification Methods 0.000 claims description 11
- 238000009960 carding Methods 0.000 claims description 4
- 150000003839 salts Chemical class 0.000 claims description 4
- 238000013475 authorization Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 2
- 229940126655 NDI-034858 Drugs 0.000 description 1
- 241000290929 Nimbus Species 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种自动化密码应用安全漏洞挖掘方法、装置、介质及设备,涉及面向密码应用安全的漏洞挖掘领域,通过制定面向密码应用的密码漏洞规则集合;将被分析的程序文件转换成Jimple格式中间代码,生成该程序文件的系统依赖图;分析系统依赖图,确定用于静态切片分析的切片准则,包括第一类切片准则和第二类切片准则;在系统依赖图中定位第一类切片准则,根据第一类切片准则执行静态程序切片,得到对密钥参数以及所在指令产生影响的程序指令集;在该程序指令集中根据第二类切片准则执行静态程序切片,对对应不同密码漏洞检测规则的底层密码库API进行搜索,根据底层密码库API判断程序文件是否包含密码漏洞规则集合中的任一密码应用安全漏洞,得到程序文件的密码应用安全漏洞挖掘结果。本发明能够实现对密码应用中的密码相关安全漏洞的挖掘。
Description
技术领域
本发明涉及面向密码应用安全的漏洞挖掘领域,特别涉及一种基于静态程序切片技术的自动化密码应用安全漏洞挖掘方法及装置。
背景技术
密码技术在各类互联网应用中得到了越来越广泛的应用,有利地保障了互联网中系统的安全运行。密码技术作为信息安全系统的基石,对系统中的信息和资源提供了机密性、完整性、真实性、不可否认性等功能相关的保护。密码功能的实现依赖于密码技术的合规、正确、有效使用。在实际应用中,由于密码误用而产生安全漏洞的现象十分普遍,多个文献表明至少80%以上的开源应用程序中至少有一处密码误用。近年来,密码应用安全及密码检测技术受到了产业界、学术界的高度持续关注。
目前针对密码应用安全漏洞的检测方法主要以静态代码审计工具和动态分析工具为主。其中动态分析工具的准确性依赖代码执行过程中的代码覆盖率。由于密码应用中密码相关操作通常作为应用中的安全保证而非应用主体功能运行,因此动态分析工具很难完全覆盖所有的密码操作,此外相关工具强依赖于底层和Hook策略,所以现有的动态分析工具很容易产生漏报。因此目前主流的针对密码应用安全漏洞的挖掘工作主要依赖静态代码审计工具,这类工具具有较高的代码覆盖率以及较低的漏报率。这类工具通常会为程序文件构造一个完整的程序流图,其中包含程序中各个执行点以及变量的调用关系,通过分析程序流图中的路径来进行漏洞挖掘。
静态程序切片(Static program slicing)技术是静态软件分析的一种实践方法,它通过确定切片准则并针对切片准则执行前向或者后向切片获取与切片准则相关的程序指令集,通过对程序指令集进行分析以确定应用中的安全漏洞。程序切片针对某些特殊计算提取程序的部分。这些被提取出的程序片是整个程序的子集,这些子集构成程序切片的结果。被提取出的程序指令是所有可能对切片准测(Slicing criterion)产生影响的部分。切片准则一般被表示为<p,V>,其中p是程序点(Program point),而V是程序变量(Programvariables)的子集。一个基于切片准则<p,V>的程序切片(Program slice)是原程序指令的子集,这些程序切片中的指令保留了源程序在程序点P处变量V的行为,也就是在程序切片中程序点P处变量V的值与原程序是相同的。
已有工作针对底层密码学库的接口进行研究,虽然可以检测出不安全的密码使用问题,但是不能进一步对密码学在应用中带来的漏洞进行检测,不能将不安全的密码学接口与具体的应用场景结合,例如现有工作只能检测到应用中使用到不安全的伪随机数生成器,但是不能确定不安全的伪随机数生成器是否被用于生成需要密码学安全的相关参数,当不安全的伪随机数生成器只是用于生成一些无需密码学安全的参数时,现有的检测工具会产生误报。因此需要针对密码应用中密码学库的接口的调用带来的漏洞挖掘,而不是简单的检测底层密码学库的接口调用。
发明内容
本发明的目的是提供一种基于静态程序切片的自动化密码应用安全漏洞挖掘方法及装置,实现对密码应用中的密码相关安全漏洞的挖掘。
为了实现上述目的,本发明采用以下技术方案:
一种自动化密码应用安全漏洞挖掘方法,包括以下步骤:
1)制定面向密码应用的密码漏洞规则集合;
2)将被分析的程序文件转换成Jimple格式中间代码,生成该程序文件的系统依赖图,以变量和指令作为节点,变量和指令之间的控制流关系和数据流关系作为边;
3)分析系统依赖图,确定用于静态切片分析的切片准则,该切片准则包括以上层密码应用中关联的指令或参数作为的第一类切片准则和以底层密码库API作为的第二类切片准则;
4)在系统依赖图中定位第一类切片准则,根据第一类切片准则执行静态程序切片,得到对密钥参数以及所在指令产生影响的程序指令集;
5)在该程序指令集中根据第二类切片准则执行静态程序切片,对对应不同密码漏洞检测规则的底层密码库API进行搜索,根据底层密码库API判断程序文件是否包含密码漏洞规则集合中的任一密码应用安全漏洞,得到程序文件的密码应用安全漏洞挖掘结果。
进一步地,步骤1)中所述密码漏洞规则集合包括:
密钥生成阶段,禁止使用不安全的伪随机数生成器或者可预测的随机数种子,禁止使用安全强度不足的密钥;
密钥存储阶段,禁止使用硬编码的对称密钥或者私钥,禁止使用可预测或常量的PBE口令、KeyStore口令,禁止将对称密钥或者私钥存储在属性文件中,禁止将在文件中存储明文私钥;
密钥传输阶段,禁止使用HTTP链接传输密钥,禁止使用不安全的TLS协议传输密钥,禁止将验签公钥或者公钥获取方式存储在被签名的消息中;
密钥使用阶段,禁止在验证公钥证书有效性之前使用证书公钥,禁止在CBC、GCM工作模式中使用静态IV,禁止在PBE算法中使用少于1000次的迭代次数,禁止在PBE算法中使用可预测或常量盐值,禁止使用被弃用或者不安全的密码相关API。
进一步地,步骤3)中第二类切片准则包括:密钥生成相关API、密钥获取相关API、密钥存储相关API、密钥传输相关API、TLS和SSL相关API和密钥使用相关API。
进一步地,步骤4)中根据第一类切片准则执行后向程序切片。
进一步地,步骤5)中根据第二类切片准则进行执行程序的过程间的后向切片、过程间的正向切片或者过程内的正向切片。
进一步地,步骤5)中根据底层密码库API判断程序文件是否包含密码漏洞规则集合中的任一密码应用安全漏洞的方法包括:
识别程序指令集中底层密码库API的不安全伪随机数生成API调用以及确定伪随机数生成器种子参数值赋值指令,得到密码应用安全漏洞挖掘结果;或者
识别程序指令集中底层密码库API提供的密钥生成API调用以及密钥生成API的密钥长度设置参数值的指令,得到密码应用安全漏洞挖结果;或者
识别程序指令集中密钥参数值或者密钥存储相关机密信息参数值赋值指令,得到密码应用安全漏洞挖结果;或者
识别程序指令集中文件读取API调用和属性文件注释,在程序路径下或者程序包内查找对应文件或者属性文件,得到密码应用安全漏洞挖结果;或者
识别程序指令集中URL参数赋值指令,在URL参数值为http链接时得到密码漏洞,得到密码应用安全漏洞挖结果;或者
识别程序指令集中是否包含TLS和SSL中底层密码库提供的主机名验证、证书验证API调用,得到密码应用安全漏洞挖结果;或者
识别程序指令集中是否包含所述签名消息获取API的调用,得到密码应用安全漏洞挖结果;或者
识别程序指令集中是否包含所述底层密码库中证书读取API的调用,对识别到的证书读取API执行过程内后向程序切片,获取证书读取API相关程序指令集,识别该程序指令集中是否包含底层密码库提供的证书有效性验证API的调用,得到密码应用安全漏洞挖结果;或者,
识别程序指令集中是否包含底层密码库API提供的不安全工作模式API的调用,得到密码应用安全漏洞挖结果;或者
识别程序指令集中是否包含底层密码库API提供的密码算法参数API的调用,将密码参数API中的参数值作为切片准则执行后向程序切片,获取与密码参数API相关的程序指令集,识别密码参数API相关的程序指令集中密码参数的赋值指令,得到密码应用安全漏洞挖结果;或者
识别程序指令集中是否包含底层密码库API提供的不安全的或者被弃用的密码算法API的调用,得到密码应用安全漏洞挖结果。
一种自动化密码应用安全漏洞挖掘装置,包括:
切片准则生成模块,用于对密码漏洞规则进行分析,获取编程语言密码库提供的底层密码库API以及上层密码应用中密码相关API,得到对应密码漏洞规则的切片准则集合,包括以上层密码应用中关联的指令或参数作为的第一类切片准则和以底层密码库API作为的第二类切片准则;
程序获取模块,用于获取被分析的程序文件转换成Jimple格式中间代码,生成该程序文件的系统依赖图,以变量和指令作为节点,变量和指令之间的控制流关系和数据流关系作为边;
程序切片模块,用于在系统依赖图中定位第一类切片准则,根据第一类切片准则执行静态程序切片,得到对密钥参数以及所在指令产生影响的程序指令集;在该程序指令集中根据第二类切片准则执行静态程序切片,对对应不同密码漏洞检测规则的底层密码库API进行搜索;
结果生成模块,用于根据底层密码库API判断程序文件是否包含密码漏洞规则集合中的任一密码应用安全漏洞,得到程序文件的密码应用安全漏洞挖掘结果。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如上述自动化密码应用安全漏洞挖掘方法。
一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行,以实现上述自动化密码应用安全漏洞挖掘方法。
一种计算机程序产品,当所述计算机程序产品在计算机设备上运行时,使得计算机设备执行如上述自动化密码应用安全漏洞挖掘方法。
与现有技术相比,本发明具有以下优点:
1、本发明通过分析密码及密码应用相关标准及论文,对底层密码库中的密码相关API进行安全分析,对密码应用中对于底层密码库中API的调用以及密码应用中密码相关功能实现进行分析,制定了密码应用中安全漏洞规则,涉及密钥的整个生命周期,包括密钥的生成、存储、传输和使用过程中的各类安全漏洞的挖掘,并不限于密钥被传递到密码学API进行调用时的安全问题,还包括一些类似属性文件存储、明文文件存储和基于各种语言特性(例如Java中的KeyStore)存储以及密钥证书验证、密钥传输协议的安全问题等与具体应用场景相结合的密钥生命周期安全漏洞挖掘,能够解决无法通过简单的追踪底层密码库API之间的调用关系以及参数关系检测到的问题,为开发者在应用中开发安全的密码功能提供了有效指导。
2、本发明结合了底层密码库与上层应用之间的调用,将上层应用中的与密码相关的API也作为执行程序切片分析过程中的切片准则,分析从上层应用开始执行的密钥相关的密码实现,从而更精确的将底层密码库中密钥相关的不安全操作与上层应用中的密钥操作进行结合,从而确定检测到的安全漏洞,漏洞检测准确率更高。
3、本发明利用静态程序切片技术,可以覆盖到被检测项目中的所有代码,实现了对密码应用中的安全漏洞进行挖掘的自动化方法以及装置,填补了目前尚无针对应用层密码学实现进行自动化漏洞挖掘工作的空白,本发明对密码应用安全性评估领域具有重要支撑、推进作用。
附图说明
图1为本发明的一种自动化密码应用安全漏洞挖掘方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下参照各附图,对本发明作进一步详细说明。
本发明对底层密码库所提供的API以及密码应用中密码库API调用进行梳理,获得密码漏洞规则集合,将密码应用中的密码应用参数与API作为静态程序切片技术的切片准则,通过执行正向切片或者后向切片获取被密码应用中所述切片准则影响或者对所述切片准则产生影响的程序指令集合,通过分析程序指令集检测所述密码漏洞规则集合中的密码漏洞。
本发明的自动化密码应用安全漏洞挖掘方法,如图1所示,包括以下步骤:
步骤1:底层密码库所提供的API以及密码应用中密码库API调用进行梳理,获得密码漏洞规则集合。
密码漏洞规则集合为密码漏洞挖掘提供依据,通过对密码应用中的密码功能实现进行分析,对底层密码库所提供的密码学API进行梳理,确定密码应用中存在的密码库API调用相关的问题,进而梳理与密码应用场景强耦合的密码漏洞规则。
步骤1.1:对底层密码库密码算法相关API进行安全分析。
一示例中,对底层密码库密码算法进行分析,包括对密码算法的算法类型分类,以及对密码算法的安全强度和安全漏洞两个方面安全分级。底层密码库用于提供密码学相关的密码算法、密码参数、密码工作模式以及密码学相关的功能(例如证书生成、证书验证和SSL/TLS协议)相关的API封装。在密码算法类型方面,根据与密码算法结合使用的密钥类型进行分类,具体分为三个基本类别:对称密码算法、非对称密码算法和密码杂凑算法。在密码算法安全强度方面,需破解密码算法所需的计算量大小(单位是比特(bit))。一般来说,对称密码算法的安全强度与密钥长度相当,公钥密码算法的安全强度显著小于密钥长度。NIST SP 800-57提供了以最低安全强度应用加密保护的预计时间框架。首先,目前估计最大安全强度小于112比特(如80比特)的密码算法不再被认为是足够安全的;其次,具有112比特安全强度的密码算法目前被认为在2030年之前是安全的,之后它们只能用于遗留应用程序来处理已受加密保护的数据;另外,密码算法的安全强度在2031年及以后至少应达到128比特;在密码算法安全漏洞方面,需探究密码算法具体的应用场景、应用模式等,本发明也将已被公开的密码实现漏洞考虑在内,对密码算法工作模式以及密码算法工作模式中的参数(例如CBC和GCM工作模式中的iv,PBE算法中的口令)进行分析,归纳密码应用中存在的密码学API误用情况,具体描述如下:
1)使用安全强度不达标的密钥长度;
2)对密码操作中的随机性配置不充分,包括密钥、口令、盐值、IV等;
3)使用不安全的密码算法;
4)使用不安全的HTTP链接;
5)错误配置SSL/TLS协议;
6)使用被官方密码库弃用的不安全API实现;
步骤1.2:针对密码应用中的密码库API调用情况分类,归纳了密码应用中的密码漏洞,梳理密码应用中的密码漏洞规则。
一示例中,针对密码应用程序中的密码库API调用情况进行分类,将密码应用程序中的密码库API调用按照密钥生命周期进行划分,分为:密钥生成、密钥存储、密钥传输和密钥使用四个阶段,将所述密码学API误用情况与密码应用中的密码漏洞进行结合,梳理了15条密码应用中的密码漏洞规则,覆盖到了密码应用中与上述密码学API调用相结合的密码漏洞,该密码漏洞系违背密码漏洞规则所产生的漏洞。
表1面向密码应用的密码漏洞规则
如表1所示,本发明总结了面向密码应用中的密码漏洞规则,需要说明的是,由于密码应用中密码库API的调用不同,本发明与已有相关工作梳理的密码规则描述有所差异。本发明将将密码应用中的密码漏洞按照密钥管理周期中的不同阶段对密码漏洞情况划分为以下15条规则:
a.密钥生成相关规则:
1)R-01指密码生成阶段禁止使用不安全的伪随机数生成器(PRNG)和禁止使用可预测的伪随机数生成器种子值,不安全的伪随机数生成器是指可以被预测的非密码学安全的随机数生成器,例如Java密码库中提供的可预测的伪随机数生成器java.util.Random。使用可预测的种子值生成伪随机数也会导致生成的密钥熵值不足。
2)R-02指禁止使用安全强度不足的密钥。密码算法安全规范中会对密钥的强度进行限制,不安全强度的密钥会影响密码算法应用的安全性。例如:HMAC算法规范要求密钥长度需要大于等于算法输出的长度,RSA密码算法规范中认为小于等于2048bit的密钥应该被禁用。
b.密钥存储相关规则:
3)R-03关注密码应用中的硬编码密钥问题,硬编码在程序文件中的密钥容易被攻击者以反编译的方式获取,因此密钥不应该以硬编码的方式存储在密码应用中。
4)R-04关注密码应用中使用PBE算法过程中口令的硬编码问题,检测密码应用中的硬编码PBE口令。
5)R-05关注密码应用中硬编码的KeyStore口令使用问题,KeyStore是Java提供的密钥库,用于保障应用的密钥安全。但是一部分研究表明,攻击者可以通过特权攻击对使用硬编码KeyStore口令的应用进行攻击,获取KeyStore中存储的密钥。
6)R-06关注密码应用中使用属性文件存储对称密钥或者私钥。在属性文件中以明文方式进行存储的对称密钥或者私钥不能保证机密信息的安全性,密钥应该以加密的方式存储在安全的介质中。
7)R-07关注密码应用中明文存储的私钥文件。私钥文件应该以被加密的方式安全的存储在安全的介质中,以明文方式存储的私钥文件不能保障密码应用的安全性。
c.密钥传输相关规则:
8)R-08关注密码应用中的密钥传输问题,HTTP链接容易受到中间人攻击,建议使用安全的数据通信方式传输密钥。
9)R-09关注密码应用中使用安全的TLS链接传输密钥,不安全的SSL协议版本以及TLS协议版本,被弃用的密码学套件,以及不安全的TLS协议实现(例如不验证主机名、错误的证书验证实现)会给密码应用带来服务器端请求伪造攻击漏洞。
10)R-10关注密码应用中密钥或者密钥获取方式以嵌入式的方式存储在被验证消息中进行传输。被验证的消息应该被默认是不可信的,被嵌入在被验证消息中的密钥或者密钥获取方式可能会被获取到被验证消息的攻击者篡改,从而导致密码应用使用错误的密钥验证被攻击者伪造的消息。
d.密钥使用相关规则:
11)R-11指禁止在验证公钥证书有效性之前使用证书公钥。公钥证书中包含公钥所有者的信息以及公钥安全性相关的信息,在使用证书公钥前需要对证书有效性进行验证。如果密码应用不对公钥证书进行验证,攻击者可以通过利用被撤销的证书或者自签名证书对密码应用产生攻击。
12)R-12关注密码工作模式中的安全问题,在使用CBC、GCM工作模式是禁止使用可预测的IV。
13)R-13禁止PBE算法中的使用小于1000的迭代次数,少于1000次的迭代会降低PBE算法的安全性。
14)R-14禁止PBE算法中使用可预测的盐值,可预测的盐值会影响PBE算法的安全性。
15)R-15关注在密码应用中使用被启用的密码算法或者不安全的工作模式,例如DES、2TDEA、RSA-512、MD4和MD5。
步骤2:获取程序文件并生成系统依赖图。
本发明针对程序文件进行分析,在获取程序文件后将程序文件转换成Jimple格式中间代码,并且针对程序文件生成系统依赖图。系统依赖图是一种程序表示图,包含系统中的所有变量与指令之间的关系,其中变量和指令作为系统依赖图中的节点,变量和指令之间的控制流关系和数据流关系作为系统依赖图中的边。使用系统依赖图有助于下述步骤的静态切片过程中获取精确的切片结果。
一示例使用Java项目中的程序文件,以验证本发明的技术方案。
步骤3:确定用于静态切片分析的底层密码库API以及上层密码应用中关联的指令或者参数,作为切片准则。
本发明针对密码应用与密码库关联的指令进行分析,将密码应用中密钥相关参数作为本发明中执行静态程序切片的入口点,执行多轮程序切片获取密码应用中密钥相关的密码学API调用以及密码学相关参数的赋值与处理。为了将底层密码库API(例如JSSE、JCE、JCA、CryptoAPI、OpenSSL)的调用与上层密码应用中的密钥操作进行关联,并且分析密码应用中密钥生命周期中存在的密码学安全问题,本发明针对每条规则都设定了多个切片准则,针对每条规则的切片准则可以被分为两类:第一类是密码应用中的密钥调用API中的密钥参数(即所述上层密码应用中关联的指令或者参数),第二类是底层密码库中密码学API(即底层密码库API)。第一类切片准则用于检测过程中获取密码应用中与密钥相关的指令集。第二类切片准则用于在针对第一类切片准则执行切片后进行针对密码应用中密钥安全问题的检测。
步骤4:基于静态切片技术,对程序文件进行静态切片。
基于切片准则针对密码应用中的密码漏洞执行基于静态程序切片的密码应用漏洞挖掘。基于上述对程序文件进行分析获取的系统依赖图,首先在系统依赖图中定位所述密码漏洞规则对应的第一类切片准则,根据该第一类切片准则执行后向程序切片,得到对密钥参数以及所在指令产生影响的程序指令集。在程序指令集中根据所述密码漏洞规则对应的第二类切片准则对程序文件执行过程间的后向切片、过程间的正向切片或者过程内的正向切片,对对应不同密码漏洞检测规则的底层密码库API进行搜索,判断程序文件是否包含密码漏洞规则集合中的任一密码应用安全漏洞,以得到密码漏洞规则下程序文件的密码应用安全漏洞挖掘检测结果。
步骤5:综合所有密码漏洞规则下所述程序文件的密码应用安全漏洞挖掘结果,得到所属程序文件的密码应用安全漏洞挖掘结果。
本发明基于密码漏洞规则集合中设定的密码漏洞,并结合上述步骤3的切片准则以及上述步骤4中的切片方法对每一密码漏洞进行检测,得到密码应用程序文件中的密码漏洞挖掘结果。
综上所述,本发明通过对密码应用中的密码学实现进行分析,并对密码库所支持密码算法的安全性进行分类,可以制定与密码应用强耦合的密码漏洞规则,从而设计基于静态程序切片技术的自动化密码应用安全漏洞挖掘方法及装置,对密码应用供一种全面直观的密码应用安全漏洞检测机制。
本发明公开了一种自动化密码应用安全漏洞挖掘装置,包括:切片准则生成模块、程序获取模块、程序切片模块以及结果生成模块。该自动化密码应用安全漏洞挖掘装置可以为计算机设备,也可以设置在计算机设备中。其中,切片准则生成模块,用于对密码应用以及编程语言密码库所提供的密码API进行梳理,得到密码漏洞规则集合以及对应的切片准则集合;文件获取模块,用于密码应用程序文件并生成对应的系统依赖图;程序切片模块,用于基于静态程序切片技术对程序进行静态切片并生成对密钥参数以及所在指令产生影响的程序指令集;结果生成模块,用于判断密码应用程序文件是否触发所述密码漏洞规则集合中的任一密码漏洞,以得到该密码漏洞规则下所述程序文件的密码漏洞挖掘结果,综合所有密码漏洞规则下所述程序文件的密码漏洞挖掘结果,得到所述程序文件的所有密码漏洞挖掘结果。
有关装置模块的具体执行过程、有益效果等阐述,请参见上述方法实施例的介绍说明,此处不多赘述。
在示例性实施例中,还提供了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行,以实现上述Go语言密码误用自动化检测方法。
在示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述自动化密码应用安全漏洞挖掘方法。
在示例性实施例中,还提供了一种计算机程序产品,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行,以实现上述自动化密码应用安全漏洞挖掘方法。
以下给出一具体示例,对基于Java语言的身份授权协议密码应用进行安全漏洞挖掘。
步骤1:
步骤1.1:对所述应用所使用的Java底层密码库所提供的API以及所述身份授权协议密码应用中密钥相关API调用进行梳理,获得所述密码漏洞规则集合。
步骤1.2:针对基于身份授权协议的密码应用中的密码库API调用情况分类,归纳了基于身份授权协议密码应用中的密码漏洞,梳理所述密码应用中的密码漏洞规则如表1所示。
步骤2:获取所述基于Java语言的身份授权协议密码应用的程序文件并生成系统依赖图。分析所述程序文件的文件类型(如Jar类型文件、War类型文件、Apk类型文件、class类型文件或者java源文件等),处理所述程序文件,将程序文件中的代码转换成Jimple格式的中间表示并构造所述程序文件的程序依赖图。
步骤3:确定用于所述密码应用的静态切片分析的底层密码库API以及上层密码应用中关联的指令或者参数,作为切片准则。所述基于Java语言的身份授权协议密码应用基于Java底层密码库(如JSSE、JCA和JCE等)以及身份授权密码库中(如Spring Security、Auth0JWT、nimbus JWT、FusionAuth JWT)密钥相关API实现密钥生命周期过程中的密码应用实现。本发明使用身份授权密码库中的密钥相关API作为所述第一类切片准则,将Java底层密码库作为第二类切片准则,针对所述密码漏洞规则集合生成针对所述密码应用的切片准则集合。
步骤4:基于静态切片技术,对所述程序文件进行静态切片。步骤4:基于静态切片技术,对程序文件进行静态切片。
基于切片准则针对密码应用中的密码漏洞执行基于静态程序切片的密码应用漏洞挖掘。基于上述对程序文件进行分析获取的系统依赖图,首先在系统依赖图中定位所述规则对应的第一类切片准则,具体地密码应用中的密钥相关操作,执行以密钥参数作为切片准则的后向程序切片,得到对密钥参数以及所在指令产生影响的程序指令集。并且根据密码漏洞描述,对第二类中的切片准则执行过程间的后向切片、过程间的正向切片或者过程内的正向切片。
步骤5:分别对在步骤4获取的针对所述规则集合中的每一条规则对应的切片结果进行分析,判断密码应用中是否包含密码漏洞规则中相关的密码漏洞。综合所有密码漏洞规则下所述程序文件的密码漏洞挖掘结果,得到所属程序文件的密码漏洞挖掘结果。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
Claims (9)
1.一种自动化密码应用安全漏洞挖掘方法,其特征在于,包括以下步骤:
1)对底层密码库所提供的API以及密码应用中密码库API调用进行梳理,获得密码漏洞规则集合,具体包括:对底层密码库密码算法相关API进行安全分析;针对密码应用中的密码库API调用情况分类,归纳密码应用中的密码漏洞,梳理密码应用中的密码漏洞规则;
2)将被分析的程序文件转换成Jimple格式中间代码,生成该程序文件的系统依赖图,以变量和指令作为节点,变量和指令之间的控制流关系和数据流关系作为边;
3)分析系统依赖图,确定用于静态切片分析的切片准则,该切片准则包括以上层密码应用中关联的指令或参数作为的第一类切片准则和以底层密码库API作为的第二类切片准则;
4)在系统依赖图中定位第一类切片准则,根据第一类切片准则执行静态程序切片,得到对密钥参数以及所在指令产生影响的程序指令集;
5)在该程序指令集中根据第二类切片准则执行静态程序切片,对对应不同密码漏洞检测规则的底层密码库API进行搜索,根据底层密码库API判断程序文件是否包含密码漏洞规则集合中的任一密码应用安全漏洞,得到程序文件的密码应用安全漏洞挖掘结果。
2.如权利要求1所述的方法,其特征在于,步骤1)中所述密码漏洞规则集合包括:
密钥生成阶段,禁止使用不安全的伪随机数生成器或者可预测的随机数种子,禁止使用安全强度不足的密钥;
密钥存储阶段,禁止使用硬编码的对称密钥或者私钥,禁止使用可预测或常量的PBE口令、KeyStore口令,禁止将对称密钥或者私钥存储在属性文件中,禁止将在文件中存储明文私钥;
密钥传输阶段,禁止使用HTTP链接传输密钥,禁止使用不安全的TLS协议传输密钥,禁止将验签公钥或者公钥获取方式存储在被签名的消息中;
密钥使用阶段,禁止在验证公钥证书有效性之前使用证书公钥,禁止在CBC、GCM工作模式中使用静态IV,禁止在PBE算法中使用少于1000次的迭代次数,禁止在PBE算法中使用可预测或常量盐值,禁止使用被弃用或者不安全的密码相关API。
3.如权利要求1所述的方法,其特征在于,步骤3)中第二类切片准则包括:密钥生成相关API、密钥获取相关API、密钥存储相关API、密钥传输相关API、TLS和SSL相关API和密钥使用相关API。
4.如权利要求1所述的方法,其特征在于,步骤4)中根据第一类切片准则执行后向程序切片。
5.如权利要求1所述的方法,其特征在于,步骤5)中根据第二类切片准则进行执行程序的过程间的后向切片、过程间的正向切片或者过程内的正向切片。
6.如权利要求1所述的方法,其特征在于,步骤5)中根据底层密码库API判断程序文件是否包含密码漏洞规则集合中的任一密码应用安全漏洞的方法包括:
识别程序指令集中底层密码库API的不安全伪随机数生成API调用以及确定伪随机数生成器种子参数值赋值指令,得到密码应用安全漏洞挖掘结果;或者
识别程序指令集中底层密码库API提供的密钥生成API调用以及密钥生成API的密钥长度设置参数值的指令,得到密码应用安全漏洞挖结果;或者
识别程序指令集中密钥参数值或者密钥存储相关机密信息参数值赋值指令,得到密码应用安全漏洞挖结果;或者
识别程序指令集中文件读取API调用和属性文件注释,在程序路径下或者程序包内查找对应文件或者属性文件,得到密码应用安全漏洞挖结果;或者
识别程序指令集中URL参数赋值指令,在URL参数值为http链接时得到密码漏洞,得到密码应用安全漏洞挖结果;或者
识别程序指令集中是否包含TLS和SSL中底层密码库提供的主机名验证、证书验证API调用,得到密码应用安全漏洞挖结果;或者
识别程序指令集中是否包含所述签名消息获取API的调用,得到密码应用安全漏洞挖结果;或者
识别程序指令集中是否包含所述底层密码库中证书读取API的调用,对识别到的证书读取API执行过程内后向程序切片,获取证书读取API相关程序指令集,识别该程序指令集中是否包含底层密码库提供的证书有效性验证API的调用,得到密码应用安全漏洞挖结果;或者,
识别程序指令集中是否包含底层密码库API提供的不安全工作模式API的调用,得到密码应用安全漏洞挖结果;或者
识别程序指令集中是否包含底层密码库API提供的密码算法参数API的调用,将密码参数API中的参数值作为切片准则执行后向程序切片,获取与密码参数API相关的程序指令集,识别密码参数API相关的程序指令集中密码参数的赋值指令,得到密码应用安全漏洞挖结果;或者
识别程序指令集中是否包含底层密码库API提供的不安全的或者被弃用的密码算法API的调用,得到密码应用安全漏洞挖结果。
7.一种自动化密码应用安全漏洞挖掘装置,其特征在于,包括:
切片准则生成模块,用于对底层密码库所提供的API以及密码应用中密码库API调用进行梳理,获得密码漏洞规则集合,具体包括:对底层密码库密码算法相关API进行安全分析;针对密码应用中的密码库API调用情况分类,归纳密码应用中的密码漏洞,梳理密码应用中的密码漏洞规则;对密码漏洞规则进行分析,获取编程语言密码库提供的底层密码库API以及上层密码应用中密码相关API,得到对应密码漏洞规则的切片准则集合,包括以上层密码应用中关联的指令或参数作为的第一类切片准则和以底层密码库API作为的第二类切片准则;
程序获取模块,用于获取被分析的程序文件转换成Jimple格式中间代码,生成该程序文件的系统依赖图,以变量和指令作为节点,变量和指令之间的控制流关系和数据流关系作为边;
程序切片模块,用于在系统依赖图中定位第一类切片准则,根据第一类切片准则执行静态程序切片,得到对密钥参数以及所在指令产生影响的程序指令集;在该程序指令集中根据第二类切片准则执行静态程序切片,对对应不同密码漏洞检测规则的底层密码库API进行搜索;
结果生成模块,用于根据底层密码库API判断程序文件是否包含密码漏洞规则集合中的任一密码应用安全漏洞,得到程序文件的密码应用安全漏洞挖掘结果。
8.一种计算机可读存储介质,其特征在于,存储有计算机程序,该计算机程序被处理器执行时实现权利要求1-6任一项所述的方法。
9.一种计算机设备,其特征在于,包括存储器和处理器,该存储器中存储有计算机程序,该计算机程序由该处理器加载并执行,以实现权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310594008.4A CN116781327B (zh) | 2023-05-24 | 2023-05-24 | 自动化密码应用安全漏洞挖掘方法、装置、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310594008.4A CN116781327B (zh) | 2023-05-24 | 2023-05-24 | 自动化密码应用安全漏洞挖掘方法、装置、介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116781327A CN116781327A (zh) | 2023-09-19 |
CN116781327B true CN116781327B (zh) | 2024-01-16 |
Family
ID=87993970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310594008.4A Active CN116781327B (zh) | 2023-05-24 | 2023-05-24 | 自动化密码应用安全漏洞挖掘方法、装置、介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116781327B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108123956A (zh) * | 2017-12-27 | 2018-06-05 | 中国人民解放军战略支援部队信息工程大学 | 基于Petri网的密码误用漏洞检测方法及系统 |
CN112699377A (zh) * | 2020-12-30 | 2021-04-23 | 哈尔滨工业大学 | 基于切片属性图表示学习的函数级代码漏洞检测方法 |
CN115455438A (zh) * | 2022-11-09 | 2022-12-09 | 南昌航空大学 | 一种程序切片漏洞检测方法、系统、计算机及存储介质 |
CN115828224A (zh) * | 2022-11-15 | 2023-03-21 | 中国科学院信息工程研究所 | 一种Go语言密码误用自动化检测方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4044057B1 (en) * | 2021-02-12 | 2023-09-27 | Tata Consultancy Services Limited | Method and system for identifying security vulnerabilities |
-
2023
- 2023-05-24 CN CN202310594008.4A patent/CN116781327B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108123956A (zh) * | 2017-12-27 | 2018-06-05 | 中国人民解放军战略支援部队信息工程大学 | 基于Petri网的密码误用漏洞检测方法及系统 |
CN112699377A (zh) * | 2020-12-30 | 2021-04-23 | 哈尔滨工业大学 | 基于切片属性图表示学习的函数级代码漏洞检测方法 |
CN115455438A (zh) * | 2022-11-09 | 2022-12-09 | 南昌航空大学 | 一种程序切片漏洞检测方法、系统、计算机及存储介质 |
CN115828224A (zh) * | 2022-11-15 | 2023-03-21 | 中国科学院信息工程研究所 | 一种Go语言密码误用自动化检测方法及装置 |
Non-Patent Citations (1)
Title |
---|
一种基于静、动态分析相结合的漏洞挖掘分析方法;傅涛;孙文静;;软件(08);95-98 * |
Also Published As
Publication number | Publication date |
---|---|
CN116781327A (zh) | 2023-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Rahaman et al. | Cryptoguard: High precision detection of cryptographic vulnerabilities in massive-sized java projects | |
Shuai et al. | Modelling analysis and auto-detection of cryptographic misuse in android applications | |
Checkoway et al. | A systematic analysis of the Juniper Dual EC incident | |
Egele et al. | An empirical study of cryptographic misuse in android applications | |
Ma et al. | Cdrep: Automatic repair of cryptographic misuses in android applications | |
RU2718689C2 (ru) | Управление конфиденциальной связью | |
Sumagita et al. | Analysis of secure hash algorithm (SHA) 512 for encryption process on web based application | |
Chatzikonstantinou et al. | Evaluation of cryptography usage in android applications | |
Zhao et al. | All your browser-saved passwords could belong to us: A security analysis and a cloud-based new design | |
CN106055936B (zh) | 可执行程序数据包加密/解密方法及装置 | |
CN110276198B (zh) | 一种基于概率预测的嵌入式可变粒度控制流验证方法及系统 | |
CN109981285B (zh) | 一种口令保护方法、口令校验方法及系统 | |
Almeida et al. | A machine-checked proof of security for AWS key management service | |
Li et al. | CipherXRay: Exposing cryptographic operations and transient secrets from monitored binary execution | |
Bajpai et al. | An empirical study of key generation in cryptographic ransomware | |
Mazmudar et al. | Mitigator: Privacy policy compliance using trusted hardware | |
Feng et al. | FIDO gets verified: A formal analysis of the universal authentication framework protocol | |
CN115828224B (zh) | 一种Go语言密码误用自动化检测方法及装置 | |
CN116781327B (zh) | 自动化密码应用安全漏洞挖掘方法、装置、介质及设备 | |
Drăguşin et al. | A Brief Overview Of Current Encryption Techniques Used In Embedded Systems: Present And Future Technologies | |
Heinl et al. | AntiPatterns regarding the application of cryptographic primitives by the example of ransomware | |
Rahaman et al. | CHIRON: deployment-quality detection of Java cryptographic vulnerabilities | |
Somorovsky | On the insecurity of XML Security | |
Marchiori et al. | Timing analysis of algorithm substitution attacks in a post-quantum TLS protocol | |
Gupta et al. | METHS: Mapping from English language to Hindi language for secure commercial transactions |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |