CN115774881A - 代码审计方法、装置、设备及介质 - Google Patents
代码审计方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115774881A CN115774881A CN202310103438.1A CN202310103438A CN115774881A CN 115774881 A CN115774881 A CN 115774881A CN 202310103438 A CN202310103438 A CN 202310103438A CN 115774881 A CN115774881 A CN 115774881A
- Authority
- CN
- China
- Prior art keywords
- code
- vulnerability
- audit
- audited
- auditing
- 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
- 238000000034 method Methods 0.000 title claims abstract description 79
- 238000012550 audit Methods 0.000 claims abstract description 216
- 238000004458 analytical method Methods 0.000 claims description 70
- 238000004422 calculation algorithm Methods 0.000 claims description 13
- 239000013589 supplement Substances 0.000 claims description 6
- 230000001502 supplementing effect Effects 0.000 claims description 4
- 238000011161 development Methods 0.000 abstract description 8
- 230000000694 effects Effects 0.000 abstract description 7
- 230000000737 periodic effect Effects 0.000 abstract description 5
- 230000008569 process Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 7
- 230000008439 repair process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000003245 working effect Effects 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种代码审计方法、装置、设备及介质,所述方法包括:接收待审计的源代码;对所述源代码进行扫描分析,得到扫描报告文件,并确定所述源代码对应的当次审计漏洞列表;将所述当次审计漏洞列表与已审计漏洞列表进行匹配,判断所述当次审计漏洞列表中是否存在已审计的代码漏洞;若所述当次审计漏洞列表存在已审计的代码漏洞,则获取所述已审计的代码漏洞对应的审计记录,并根据所述审计记录解决所述代码漏洞。本发明通过在不断迭代开发并且周期性代码审计中新一轮的代码审计工作中自动保留上次的代码审计记录,避免在面对同一漏洞做重复的代码审计,有效地提高了审计结果的准确性,完成审计工作的审计效果以及审计效率。
Description
技术领域
本发明涉及代码审计技术领域,尤其是涉及一种代码审计方法、装置、设备及介质。
背景技术
随着现代互联网的不断发展和业务越来越复杂,软件系统的设计规模也日益增大,代码数量由几万行发展到现在经常出现的几十万行,甚至几百万行的代码规模,系统的逻辑结构愈加复杂,通过现有的人工代码审核方式无法满足代码审计对于时效和成本等各方面的要求,因此,需要发展自动化的分析工具来检测源代码中的安全漏洞和编码规范问题,并通过人工审核确认这些安全漏洞和编码问题是否是真实的、可疑的或误报。
然而,现有的代码自动化分析工具在对项目源代码进行迭代开发并且周期性代码审计的过程中,对同一个安全漏洞和编码规范问题的审计结果并没有实现有效记忆,因此,当项目中存在对同一个漏洞时,自动化分析工具会对同一漏洞进行重复的审计工作,这就造成了代码审计工作效率低的问题。
发明内容
本发明的主要目的在于提供一种代码审计方法、装置、设备及介质,旨在提高代码审计工作的效率。
为实现上述目的,本发明还提供一种代码审计方法,所述代码审计方法,包括:
接收待审计的源代码;
对所述源代码进行扫描分析,得到扫描报告文件,并确定所述源代码对应的当次审计漏洞列表;
将所述当次审计漏洞列表与已审计漏洞列表进行匹配,判断所述当次审计漏洞列表中是否存在已审计的代码漏洞;
若所述当次审计漏洞列表存在已审计的代码漏洞,则获取所述已审计的代码漏洞对应的审计记录,并根据所述审计记录解决所述代码漏洞。
可选地,在所述判断所述源代码中是否携带已审计的代码漏洞的步骤之后,所述方法还包括:
若所述当次审计漏洞列表不携带已审计的代码漏洞,则需要对所述审计漏洞列表进行审计,得到对应的审计结果;
对所述审计结果进行分析,得到对应的分析结果;
将所述当次审计漏洞列表对应的审计结果和分析结果整理成审计记录,并将所述审计记录存储至所述已审计漏洞列表。
可选地,所述将所述当次审计漏洞列表与已审计漏洞列表进行匹配,判断所述当次审计漏洞列表中是否存在已审计的代码漏洞的步骤,包括:
根据所述已审计漏洞列表,查询所述源代码是否存在历史审计记录;
若所述已审计漏洞列表中存在所述源代码历史的审计记录,则将所述扫描报告文件的代码漏洞与所述已审计漏洞列表上次的审计记录进行一次匹配,判断所述源代码中是否存在已审计的代码漏洞;
若不存在,则将所述扫描报告文件的代码漏洞与所述已审计漏洞列表上次的审计记录进行二次匹配,以补充所述源代码中一次匹配未确定的已审计的代码漏洞。
可选地,所述将所述扫描报告文件的审计与所述已审计漏洞列表对应的审计记录进行一次匹配,判断所述源代码中是否存在已审计的代码漏洞的步骤,包括:
基于预设的严格匹配算法,将所述扫描报告文件与审计文件进行严格匹配,获取对应的一次匹配结果;
根据所述一次匹配结果,判断所述源代码中是否存在已审计的代码漏洞。
可选地,所述将所述扫描报告文件与所述已审计漏洞列表对应的审计记录进行二次匹配,以补充所述源代码中一次匹配未确定的已审计的代码漏洞的步骤,包括:
基于预设的模糊匹配算法,将所述扫描报告文件与审计文件进行模糊匹配,获取对应的二次匹配结果;
根据所述二次匹配结果,补充所述源代码中的已审计的代码漏洞。
可选地,在所述接收待审计的源代码的步骤之前,所述方法还包括:
登录预设的代码审计分析平台;
通过所述代码审计分析平台,创建代码审计任务,并通过所述代码审计任务接收待审计的源代码。
可选地,在所述对所述源代码进行扫描分析,得到扫描报告文件,并确定所述源代码对应的当次审计漏洞列表的步骤之前,所述方法还包括:
通过所述代码审计任务对所述待审计的源代码进行自动化安全分析,并判断所述自动化源代码分析是否成功;
若所述自动化源代码分析成功,则对所述源代码进行扫描分析;
若所述自动化源代码分析失败,则结束当次代码审计工作,并进行工作报错。
为实现上述目的,本发明还提供一种代码审计装置,所述代码审计装置,包括:
接收模块,用于接收待审计的源代码;
分析模块,用于对所述源代码进行扫描分析,得到扫描报告文件,并确定所述源代码对应的当次审计漏洞列表;
匹配模块,用于将所述当次审计漏洞列表与已审计漏洞列表进行匹配,判断所述当次审计漏洞列表中是否存在已审计的代码漏洞;
确认模块,用于若所述当次审计漏洞列表存在已审计的代码漏洞,则获取所述已审计的代码漏洞对应的审计记录,并根据所述审计记录解决所述代码漏洞。
其中,本发明代码审计装置的各个功能模块各自在运行时均实现如上所述的代码审计方法的步骤。
为实现上述目的,本发明还提供一种设备,所述设备包括:存储器、处理器和存储在所述存储器上并可在所述处理器上运行的代码审计程序,所述代码审计程序被所述处理器执行时实现如上所述的代码审计方法的步骤。
为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有代码审计程序,所述代码审计程序被处理器执行时实现如上所述的代码审计方法的步骤。
本发明提供一种代码审计方法、装置、设备及介质,所述方法包括:接收待审计的源代码;对所述源代码进行扫描分析,得到扫描报告文件,并确定所述源代码对应的当次审计漏洞列表;将所述当次审计漏洞列表与已审计漏洞列表进行匹配,判断所述当次审计漏洞列表中是否存在已审计的代码漏洞;若所述当次审计漏洞列表存在已审计的代码漏洞,则获取所述已审计的代码漏洞对应的审计记录,并根据所述审计记录解决所述代码漏洞。
相比于目前的自动化分析工具在对代码进行安全审计的过程中,对代码中相同类型、相同逻辑的漏洞进行重复审计,在一定程度上影响了代码审计工作的工作效果和工作便利性,导致代码审计工作效率低,本方案通过先对待审计的源代码进行扫描分析,并将扫描分析后的扫描报告文件与预设的已审计漏洞列表进行匹配,查找已审计的代码漏洞,并根据已审计的代码漏洞对应的审计记录解决代码漏洞。本方案通过在不断迭代开发并且周期性代码审计中新一轮的代码审计工作中自动保留上次的代码审计记录,避免在面对同一漏洞做重复的代码审计,有效地提高了审计结果的准确性,完成审计工作的审计效果以及审计效率。
附图说明
图1为本发明实施例方案涉及的硬件运行环境的结构示意图;
图2为本发明代码审计方法第一实施例的流程示意图;
图3为本发明代码审计方法第一实施例中另一实施过程的流程示意图;
图4为本发明代码审计方法第一实施例的具体流程示意图;
图5为本发明代码审计方法第二实施例的流程示意图;
图6为本发明代码审计方法第二实施例中步骤S32的子流程示意图;
图7为本发明代码审计方法第二实施例中步骤S33的子流程示意图;
图8为本发明代码审计方法第三实施例的流程示意图;
图9为本发明代码审计方法第三实施例中另一种实施过程的流程示意图;
图10为本发明代码审计方法涉及到的代码审计装置的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案:
本方案提供一种代码审计方法,通过自动化分析工具对当次进行审计的源代码进行扫描,确定待审计的源代码中已审计的漏洞,并直接调用已审计的漏洞对应的审计记录进行漏洞处理,面对新一轮的代码审计,自动保留当次代码审计的漏洞以及对应的审计结果用于后续相同漏洞的代码审计,避免了对同一个漏洞做重复代码审计的工作。
现有的代码审计方法的具体技术手段:
通过人工对代码进行漏洞审计,将审核的漏洞进行人工标记,确认漏洞的处理状态,另外,现有的代码审计还包括通过自动化分析工具对源代码进行漏洞审计。
采用上述现有的技术手段存在以下技术问题:
1)因为人工的局限性,通过人工进行代码安全和编码规范审计,存在一些漏洞误报和漏报的问题,代码审核过程中人力成本高、时效性差,且人工审核的审核效果差;
2)通过自动化审计工具进行代码安全和编码规范审计时会出现对同一个代码安全和编码规范做重复的审计动作,降低代码审计的审计效率。
具体地,参照图1,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。如图1所示,该设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及代码审计程序。其中,操作系统是管理和控制设备硬件和软件资源的程序,支持代码审计程序以及其它软件或程序的运行;网络通信模块用于管理和控制网络接口1002;用户接口1003主要用于与客户端进行数据通信;网络接口1004主要用于与服务器建立通信连接;而处理器1001可以用于调用存储器1005中存储的代码审计程序。
其中,上述存储器1005中存储的代码审计程序被处理器执行时实现以下步骤:
接收待审计的源代码;
对所述源代码进行扫描分析,得到扫描报告文件,并确定所述源代码对应的当次审计漏洞列表;
将所述当次审计漏洞列表与已审计漏洞列表进行匹配,判断所述当次审计漏洞列表中是否存在已审计的代码漏洞;
若所述当次审计漏洞列表存在已审计的代码漏洞,则获取所述已审计的代码漏洞对应的审计记录,并根据所述审计记录解决所述代码漏洞。
进一步地,存储器1005中存储的代码审计程序被处理器执行时还实现以下步骤:
若所述当次审计漏洞列表不携带已审计的代码漏洞,则需要对所述审计漏洞列表进行审计,得到对应的审计结果;
对所述审计结果进行分析,得到对应的分析结果;
将所述当次审计漏洞列表对应的审计结果和分析结果整理成审计记录,并将所述审计记录存储至所述已审计漏洞列表。
进一步地,存储器1005中存储的代码审计程序被处理器执行时还实现以下步骤:
根据所述已审计漏洞列表,查询所述源代码是否存在历史审计记录;
若所述已审计漏洞列表中存在所述源代码历史的审计记录,则将所述扫描报告文件的代码漏洞与所述已审计漏洞列表上次的审计记录进行一次匹配,判断所述源代码中是否存在已审计的代码漏洞;
若不存在,则将所述扫描报告文件的代码漏洞与所述已审计漏洞列表上次的审计记录进行二次匹配,以补充所述源代码中一次匹配未确定的已审计的代码漏洞。
进一步地,存储器1005中存储的代码审计程序被处理器执行时还实现以下步骤:
基于预设的严格匹配算法,将所述扫描报告文件与审计文件进行严格匹配,获取对应的一次匹配结果;
根据所述一次匹配结果,判断所述源代码中是否存在已审计的代码漏洞。
进一步地,存储器1005中存储的代码审计程序被处理器执行时还实现以下步骤:
基于预设的模糊匹配算法,将所述扫描报告文件与审计文件进行模糊匹配,获取对应的二次匹配结果;
根据所述二次匹配结果,补充所述源代码中的已审计的代码漏洞。
进一步地,存储器1005中存储的代码审计程序被处理器执行时还实现以下步骤:
登录预设的代码审计分析平台;
通过所述代码审计分析平台,创建代码审计任务,并通过所述代码审计任务接收待审计的源代码。
进一步地,存储器1005中存储的代码审计程序被处理器执行时还实现以下步骤:
通过所述代码审计任务对所述待审计的源代码进行自动化安全分析,并判断所述自动化源代码分析是否成功;
若所述自动化源代码分析成功,则对所述源代码进行扫描分析;
若所述自动化源代码分析失败,则结束当次代码审计工作,并进行工作报错。
为了更好的理解上述技术方案,下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
基于上述终端设备架构但不限于上述架构,提出本发明代码审计方法的具体实施例。
具体地,参照图2,图2为本发明代码审计方法第一实施例的流程示意图,所述代码审计方法包括:
步骤S10,接收待审计的源代码;
需要说明的是,在本实施例中,待审计的源代码一般是指用于实现互联网的业务以及软件系统功能的静态代码,本实施例通过对应用程序源代码进行系统性的检查工作,以检测代码中的安全漏洞,并修复应用程序在开发阶段存在的安全漏洞或者程序逻辑错误,以避免应用程序在投入生产使用的过程中被非法利用,并避免应用程序在开发阶段的安全漏洞导致企业受到不必要的风险。
步骤S20,对所述源代码进行扫描分析,得到扫描报告文件,并确定所述源代码对应的当次审计漏洞列表;
需要说明的是,在本实施例中,通过预设的测试工具对待审计的源代码进行扫描分析,得到源代码对应的扫描报告文件,根据源代码对应的扫描报告文件,确定源代码中的当次审计漏洞列表,其中,源代码的当次审计漏洞列表包括:代码安全和编码规范问题。
具体地,例如,本实施例通过登录自动化代码审计分析平台,通过自动化代码审计分析平台创建任务,根据该任务启动自动化源代码安全分析对源代码进行扫描分析,并确定源代码是否能够成功被分析,若分析失败,则直接结束当次的扫描分析;若分析成功,则生成与源代码对应的扫描报告文件。
步骤S30,将所述当次审计漏洞列表与已审计漏洞列表进行匹配,判断所述当次审计漏洞列表中是否存在已审计的代码漏洞;
需要说明的是,在本实施例中,存在一个预先设置的已审计漏洞列表,通过将扫描报告文件中的漏洞文件与该预先设置的已审计漏洞列表进行匹配,比对出漏洞文件中在已审计漏洞列表中出现的上次漏洞记录,并通过比对结果,判断进行当次代码审计的源代码是否携带上次审计过程中已审计的代码漏洞。
具体地,在本实施例中,将扫描报告文件中的漏洞文件与该预先设置的已审计漏洞列表进行匹配,比对出漏洞文件中在已审计漏洞列表中出现的上次漏洞记录的比对方式是通过将当次审计的漏洞文件与已审计漏洞列表进行多次比对,例如,通过严格匹配算法和模糊匹配算法检测当次审计的漏洞文件与已审计漏洞列表中的漏洞是否为同一漏洞。
步骤S40,若所述当次审计漏洞列表存在已审计的代码漏洞,则获取所述已审计的代码漏洞对应的审计记录,并根据所述审计记录解决所述代码漏洞。
需要说明的是,在本实施例中,若已审计漏洞列表与当次审计漏洞文件的比对结果中出现重叠,则在当次审计的源代码中携带了已审计漏洞列表中的代码漏洞,因此,通过调取该代码漏洞对应的审计记录,并读取已审计漏洞列表中与审计记录对应的审计结果,根据该审计结果对进行当次审计的漏洞文件进行漏洞修复。
本实施例通过对当次审计的源代码进行解析扫描,并根据分析解析扫描后的扫描报告文件,判断当次审计的源代码中是否携带上次审计的漏洞,若携带,则直接调用上次审计的审计结果进行漏洞修复,无需再进行人工分析或是自动化审计的计算过程,增加了一次代码审核的复用性,有效地提升了代码审计的审计效率,另外,通过读取上次的审计结果进行漏洞修复,保证了修复过程不会出现错误,或对上次审计结果进行二次审核,提升了代码漏洞审计结果的准确度,有效优化了代码审计的审计效果。
进一步地,参照图3,在所述判断所述源代码中是否携带已审计的代码漏洞的步骤之后,所述方法还包括:
步骤S50,若所述当次审计漏洞列表不携带已审计的代码漏洞,则需要对所述审计漏洞列表进行审计,得到对应的审计结果;
需要说明的是,在本实施例中,若已审计漏洞列表与当次审计漏洞文件的比对结果中并未出现重叠,则在当次审计的源代码中并未携带已审计漏洞列表中的代码漏洞,则说明已审计代码列表中还没有对该代码漏洞进行审计,因此,需要对源代码中的代码漏洞进行审计,得到对应的审计结果。
具体地,例如,对源代码中的代码漏洞进行审计的方式可以是,通过人工协同对当前审计的源代码中的代码漏洞进行人工标记,确认标记为可以、确认、误报、已处理等审计状态,并通过审计工具对已标记的代码漏洞进行修复,生成对应的审计结果。
步骤S60,对所述审计结果进行分析,得到对应的分析结果;
需要说明的是,在本实施例中,审计结果是指当次审计过程中分析得到的漏洞,具体包括漏洞所在的文件夹位置,漏洞的类型种类等有关于当次审计过程中代码漏洞的基础信息,而审计结果对应的分析结果是指对当前代码进行标记的标记信息以及对漏洞代码进行修复的具体修复信息。
步骤S70,将所述当次审计漏洞列表对应的审计结果和分析结果整理成审计记录,并将所述审计记录存储至所述已审计漏洞列表。
进一步地,在完成对一个项目源代码中某一类型或某一种类的代码漏洞进行初次代码审计后,将审计结果和分析结果进行整理,生成根据代码漏洞生成的对应的审计记录,并将该审计记录存储至预设区域记录为已审计漏洞列表,当该项目出现同一类型或种类的代码漏洞再次出现时,则直接调用已审计漏洞列表中的审计记录进行漏洞修复。
参照图4,图4为本实施例的具体流程示意图,具体地,在登录预设的自动化代码审计平台后,创建审计任务,并通过该审计任务上传待审计的源代码,收到待审计的源代码后启动自动化安全分析,对待审计的源代码进行扫描分析,源代码分析成功后,对源代码进行扫描解析生成对应的扫描分析报告,并将扫描分析后的扫描报告文件与预设的已审计漏洞列表进行匹配,查找已审计的代码漏洞,并根据已审计的代码漏洞对应的审计记录解决代码漏洞。
本实施例通过对当次审计的源代码进行解析扫描,并根据分析解析扫描后的扫描报告文件,判断当次审计的源代码中是否携带上次审计的漏洞,若携带,则直接调用上次审计的审计结果进行漏洞修复,无需再进行人工分析或是自动化审计的计算过程,通过在不断迭代开发并且周期性代码审计中新一轮的代码审计工作中自动保留上次的代码审计记录,避免在面对同一漏洞做重复的代码审计,有效地提高了审计结果的准确性,完成审计工作的审计效果以及审计效率。
进一步地,基于上述本发明代码审计方法的第一实施例,提出本发明代码审计方法的第二实施例。
在本实施例是对步骤S30,将所述当次审计漏洞列表与已审计漏洞列表进行匹配,判断所述当次审计漏洞列表中是否存在已审计的代码漏洞的细化,参照图5,具体包括:
步骤S31,根据所述已审计漏洞列表,查询所述源代码是否存在历史审计记录;
需要说明的是,在本实施例中,通过将当次代码审计的代码安全和编码规范问题与已审计漏洞列表进行匹配,比对出已审计漏洞列表与当次的代码漏洞是否重合,具体地,在本实施例中,匹配并比对的方式可以是通过对已审计漏洞列表进行遍历,查询出已携带的审计记录。
步骤S32,若所述已审计漏洞列表中存在所述源代码历史的审计记录,则将所述扫描报告文件的代码漏洞与所述已审计漏洞列表上次的审计记录进行一次匹配,判断所述源代码中是否存在已审计的代码漏洞;
可选地,参照图6,步骤S32具体包括:
步骤S321,基于预设的严格匹配算法,将所述扫描报告文件与审计文件进行严格匹配,获取对应的一次匹配结果;
步骤S322,根据所述一次匹配结果,判断所述源代码中是否存在已审计的代码漏洞。
在本实施例中,若当次审计过程中的源代码与已审计漏洞列表中存在重合,则将源代码中的代码漏洞与已审计漏洞列表中的漏洞进行遍历扫描,首先,对每个代码漏洞进行第一次匹配,得到对应的一次匹配结果,并根据该一次匹配结果判断是否能在已审计漏洞列表中的上次代码漏洞匹配到当次代码审计的扫描中的漏洞,如果能匹配到,则将该漏洞审计状态同步为上次扫描记录的漏洞审计状态,将分析结果存入数据库中。
需要说明的是,在本实施例中,一次匹配可以是基于严格匹配算法进行漏洞匹配,具体地,严格匹配算法是指通过漏洞所在的文件名称、漏洞编号、漏洞所在行数、漏洞的等级、漏洞节点的文件名称、漏洞节点函数等进行严格的匹配,判断两次检测出来的漏洞是否为同一漏洞。
步骤S33,若不存在,则将所述扫描报告文件的代码漏洞与所述已审计漏洞列表上次的审计记录进行二次匹配,以补充所述源代码中一次匹配未确定的已审计的代码漏洞。
可选地,参照图7,步骤S33具体包括:
步骤S331,基于预设的模糊匹配算法,将所述扫描报告文件与审计文件进行模糊匹配,获取对应的二次匹配结果;
步骤S332,根据所述二次匹配结果,补充所述源代码中的已审计的代码漏洞。
在本实施例中,若在一次匹配后,扫描报告文件中的代码漏洞与已审计漏洞列表不存在重合部分,则对扫描报告文件中的代码漏洞进行二次匹配,得到对应的二次匹配结果。具体地,二次匹配的方式可以是对每个代码漏洞进行模糊匹配,判断是否能匹配到上次扫描中的漏洞,如果能匹配到,则将该漏洞审计状态同步为上次扫描记录的漏洞审计状态,将分析结果存入数据库中,如果不能匹配到则直接将分析结果存入数据库中,不携带上次代码审计的结果。
需要说明的是,在本实施例中,二次匹配所用的模糊匹配算法是指通过漏洞所在的文件名称、漏洞编号、漏洞的等级、漏洞节点的文件名称、漏洞节点函数等匹配,不判断漏洞所在的行数来判断两次检测出来的漏洞是否为同一漏洞的方法。
本实施例通过在不断迭代开发并且周期性代码审计中新一轮的代码审计工作中自动保留上次的代码审计记录,避免在面对同一漏洞做重复的代码审计,有效地提高了审计结果的准确性,完成审计工作的审计效果以及审计效率。
进一步地,基于上述本发明代码审计方法的第一、第二实施例,提出本发明代码审计方法的第三实施例。
本实施例是在步骤S10,接收待审计的源代码之前,所述方法还包括创建扫描分析任务的方案,参照图8,具体包括:
步骤S101,登录预设的代码审计分析平台;
示例性地,在本实施例中,代码审计分析平台可以是白盒测试工具,针对需要进行代码审计的用户,需要在白盒测试工具界面将自动检测出来的代码漏洞进行人工审核并提交,提交后在下一次通过白盒测试工具进行代码审计时会自动携带本次提交的代码漏洞审计标识。本实施例通过简单的交互界面实现代码漏洞的审计工作,一定程度上提升了代码审计工作的便捷性与简易性,优化用户的体验。
步骤S102,通过所述代码审计分析平台,创建代码审计任务,并通过所述代码审计任务接收待审计的源代码。
需要说明的是,本实施例通过代码审计任务进行代码审计工作,通过创建代码审计任务将任务中的各个步骤进行整合,将代码审计任务作为一个整体接收待审计的源代码,提升了代码审计工作的复用性。
进一步地,参照图9,在步骤S20,对所述源代码进行扫描分析,得到扫描报告文件,并确定所述源代码对应的当次审计漏洞列表之前,所述方法还包括对待审计的源代码进行自动化安全分析的方案,具体包括:
步骤S201,通过所述代码审计任务对所述待审计的源代码进行自动化安全分析,并判断所述自动化源代码分析是否成功;
需要说明的是,在本实施例中,在带审计的源代码进行漏洞匹配和审计之前,需要先对带审计的源代码进行自动化安全分析,判断待审计的源代码进行解析分析的安全性。
步骤S202,若所述自动化源代码分析成功,则对所述源代码进行扫描分析;
步骤S203,若所述自动化源代码分析失败,则结束当次代码审计工作,并进行工作报错。
需要说明的是,在本实施例中,首先通过代码审计分析平台对自动源代码进行扫描确定待审计的源代码的安全性,提升了代码审计工作的安全性,为后续漏洞匹配创建条件,提升漏洞匹配的精确性,优化代码审计的审计效果。
此外,本发明实施例还提出一种代码审计装置,参照图10,图10为本发明代码审计装置的各个功能模块示意图,所述代码审计装置包括:
接收模块10,用于接收待审计的源代码;
分析模块20,用于对所述源代码进行扫描分析,得到扫描报告文件,并确定所述源代码对应的当次审计漏洞列表;
匹配模块30,用于将所述当次审计漏洞列表与已审计漏洞列表进行匹配,判断所述当次审计漏洞列表中是否存在已审计的代码漏洞;
确认模块40,用于若所述当次审计漏洞列表存在已审计的代码漏洞,则获取所述已审计的代码漏洞对应的审计记录,并根据所述审计记录解决所述代码漏洞。
此外,本发明实施例还提出一种设备,所述设备包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的代码审计程序,所述代码审计程序被所述处理器执行时实现如上所述的代码审计方法的步骤。
本发明代码审计装置和计算机可读存储介质的各实施例,均可参照本发明代码审计方法各个实施例,此处不再赘述。
本发明计算机程序产品的具体实施例与上述代码审计方法的各实施例基本相同,在此不作赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种代码审计方法,其特征在于,所述代码审计方法,包括:
接收待审计的源代码;
对所述源代码进行扫描分析,得到扫描报告文件,并确定所述源代码对应的当次审计漏洞列表;
将所述当次审计漏洞列表与已审计漏洞列表进行匹配,判断所述当次审计漏洞列表中是否存在已审计的代码漏洞;
若所述当次审计漏洞列表存在已审计的代码漏洞,则获取所述已审计的代码漏洞对应的审计记录,并根据所述审计记录解决所述代码漏洞。
2.如权利要求1所述的代码审计方法,其特征在于,在所述判断所述源代码中是否携带已审计的代码漏洞的步骤之后,所述方法还包括:
若所述当次审计漏洞列表不携带已审计的代码漏洞,则需要对所述审计漏洞列表进行审计,得到对应的审计结果;
对所述审计结果进行分析,得到对应的分析结果;
将所述当次审计漏洞列表对应的审计结果和分析结果整理成审计记录,并将所述审计记录存储至所述已审计漏洞列表。
3.如权利要求1所述的代码审计方法,其特征在于,所述将所述当次审计漏洞列表与已审计漏洞列表进行匹配,判断所述当次审计漏洞列表中是否存在已审计的代码漏洞的步骤,包括:
根据所述已审计漏洞列表,查询所述源代码是否存在历史审计记录;
若所述已审计漏洞列表中存在所述源代码历史的审计记录,则将所述扫描报告文件的代码漏洞与所述已审计漏洞列表上次的审计记录进行一次匹配,判断所述源代码中是否存在已审计的代码漏洞;
若不存在,则将所述扫描报告文件的代码漏洞与所述已审计漏洞列表上次的审计记录进行二次匹配,以补充所述源代码中一次匹配未确定的已审计的代码漏洞。
4.如权利要求3所述的代码审计方法,其特征在于,所述将所述扫描报告文件的审计与所述已审计漏洞列表对应的审计记录进行一次匹配,判断所述源代码中是否存在已审计的代码漏洞的步骤,包括:
基于预设的严格匹配算法,将所述扫描报告文件与审计文件进行严格匹配,获取对应的一次匹配结果;
根据所述一次匹配结果,判断所述源代码中是否存在已审计的代码漏洞。
5.如权利要求4所述的代码审计方法,其特征在于,所述将所述扫描报告文件与所述已审计漏洞列表对应的审计记录进行二次匹配,以补充所述源代码中一次匹配未确定的已审计的代码漏洞的步骤,包括:
基于预设的模糊匹配算法,将所述扫描报告文件与审计文件进行模糊匹配,获取对应的二次匹配结果;
根据所述二次匹配结果,补充所述源代码中的已审计的代码漏洞。
6.如权利要求1所述的代码审计方法,其特征在于,在所述接收待审计的源代码的步骤之前,所述方法还包括:
登录预设的代码审计分析平台;
通过所述代码审计分析平台,创建代码审计任务,并通过所述代码审计任务接收待审计的源代码。
7.如权利要求6所述的代码审计方法,其特征在于,在所述对所述源代码进行扫描分析,得到扫描报告文件,并确定所述源代码对应的当次审计漏洞列表的步骤之前,所述方法还包括:
通过所述代码审计任务对所述待审计的源代码进行自动化安全分析,并判断所述自动化源代码分析是否成功;
若所述自动化源代码分析成功,则对所述源代码进行扫描分析;
若所述自动化源代码分析失败,则结束当次代码审计工作,并进行工作报错。
8.一种代码审计装置,其特征在于,所述代码审计装置包括:
接收模块,用于接收待审计的源代码;
分析模块,用于对所述源代码进行扫描分析,得到扫描报告文件,并确定所述源代码对应的当次审计漏洞列表;
匹配模块,用于将所述当次审计漏洞列表与已审计漏洞列表进行匹配,判断所述当次审计漏洞列表中是否存在已审计的代码漏洞;
确认模块,用于若所述当次审计漏洞列表存在已审计的代码漏洞,则获取所述已审计的代码漏洞对应的审计记录,并根据所述审计记录解决所述代码漏洞。
9.一种设备,其特征在于,所述设备包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的代码审计程序,所述代码审计程序被所述处理器执行时实现如权利要求1至7中任一项所述的代码审计方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有代码审计程序,所述代码审计程序被处理器执行时实现如权利要求1至7中任一项所述的代码审计方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310103438.1A CN115774881A (zh) | 2023-02-13 | 2023-02-13 | 代码审计方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310103438.1A CN115774881A (zh) | 2023-02-13 | 2023-02-13 | 代码审计方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115774881A true CN115774881A (zh) | 2023-03-10 |
Family
ID=85393584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310103438.1A Pending CN115774881A (zh) | 2023-02-13 | 2023-02-13 | 代码审计方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115774881A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116756048A (zh) * | 2023-08-16 | 2023-09-15 | 北京安普诺信息技术有限公司 | 一种代码分析方法、装置、计算机设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150269060A1 (en) * | 2014-03-21 | 2015-09-24 | Ca, Inc. | Development tools for logging and analyzing software bugs |
CN106598842A (zh) * | 2016-11-10 | 2017-04-26 | 乐视控股(北京)有限公司 | 代码检测方法、装置及电子设备 |
US20180176245A1 (en) * | 2016-12-21 | 2018-06-21 | Denim Group, Ltd. | Method of Detecting Shared Vulnerable Code |
CN112527674A (zh) * | 2020-12-22 | 2021-03-19 | 苏州三六零智能安全科技有限公司 | Ai框架的安全评测方法、装置、设备及存储介质 |
CN114756875A (zh) * | 2022-06-16 | 2022-07-15 | 荣耀终端有限公司 | 一种代码扫描方法及电子设备 |
-
2023
- 2023-02-13 CN CN202310103438.1A patent/CN115774881A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150269060A1 (en) * | 2014-03-21 | 2015-09-24 | Ca, Inc. | Development tools for logging and analyzing software bugs |
CN106598842A (zh) * | 2016-11-10 | 2017-04-26 | 乐视控股(北京)有限公司 | 代码检测方法、装置及电子设备 |
US20180176245A1 (en) * | 2016-12-21 | 2018-06-21 | Denim Group, Ltd. | Method of Detecting Shared Vulnerable Code |
CN112527674A (zh) * | 2020-12-22 | 2021-03-19 | 苏州三六零智能安全科技有限公司 | Ai框架的安全评测方法、装置、设备及存储介质 |
CN114756875A (zh) * | 2022-06-16 | 2022-07-15 | 荣耀终端有限公司 | 一种代码扫描方法及电子设备 |
Non-Patent Citations (1)
Title |
---|
张剑 主编 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116756048A (zh) * | 2023-08-16 | 2023-09-15 | 北京安普诺信息技术有限公司 | 一种代码分析方法、装置、计算机设备及存储介质 |
CN116756048B (zh) * | 2023-08-16 | 2023-10-31 | 北京安普诺信息技术有限公司 | 一种代码分析方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109582301B (zh) | 基于任务调度系统的业务处理方法、装置、设备及介质 | |
US6629098B2 (en) | Method and system for validating data submitted to a database application | |
CN108509344B (zh) | 日切跑批测试方法、设备及可读存储介质 | |
Weigert et al. | Practical experiences in using model-driven engineering to develop trustworthy computing systems | |
CN111045944A (zh) | 回归测试方法、装置、系统及计算机可读存储介质 | |
CN109784738B (zh) | 审批方法及审批装置 | |
CN115774881A (zh) | 代码审计方法、装置、设备及介质 | |
US20230153401A1 (en) | Systems and methods for third-party library management | |
CN108650123B (zh) | 故障信息记录方法、装置、设备和存储介质 | |
CN116719817B (zh) | 一种面向科技资源的数字对象关系溯源方法及系统 | |
CN110413518B (zh) | 控件对象库的生成方法及生成装置和计算机可读存储介质 | |
CN117493188A (zh) | 接口测试方法及装置、电子设备及存储介质 | |
CN112559369A (zh) | 一种自动化测试方法、设备和存储介质 | |
CN116415258A (zh) | 漏洞检测方法、装置、设备、介质及程序产品 | |
CN116431522A (zh) | 一种低代码对象存储网关自动化测试方法及系统 | |
CN115454472A (zh) | 远程升级问题解决方法、装置、设备及可读存储介质 | |
CN108536577B (zh) | 程序代码信息处理方法及装置 | |
CN111680279B (zh) | 登录验证方法、装置及系统 | |
CN113468446B (zh) | 一种支持识别第三方二维码数据的方法、系统及设备 | |
CN115599683A (zh) | 自动化测试方法、装置、设备及存储介质 | |
CN106855804B (zh) | 代码变更管控方法及装置 | |
CN114676066A (zh) | 目标应用的安全测试方法及其装置、电子设备及存储介质 | |
CN114328257A (zh) | 自动化测试用例执行方法、系统及电子设备 | |
CN112632559A (zh) | 漏洞自动验证方法、装置、设备及存储介质 | |
KR102111392B1 (ko) | 테스트 통합 관리시스템 및 그 제어방법 |
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 |
Application publication date: 20230310 |
|
RJ01 | Rejection of invention patent application after publication |