一种源代码缺陷静态审计检测系统的制作方法

未命名 10-19 阅读:95 评论:0


1.本技术涉及代码检测技术领域,尤其涉及一种源代码缺陷静态审计检测系统。


背景技术:

2.随着越来越多数据泄露、勒索病毒、ddos攻击等安全事件发生,信息安全越来越被人们熟知并得到企业的重视。代码审计就是用来主动防御的一种方式,代码审计是指专业人员对开发人员所编写的代码进行缺陷检测,以期望在被黑客攻击之前最大程度的发现代码中的缺陷,用来减少损失。代码审计分为静态检测和动态检测,静态检测是指在不运行程序代码的前提下,通过词法分析,语法分析,控制流、数据流分析等技术对程序代码进行扫描和分析,来寻找代码中潜在的安全问题。动态检测是指在程序运行时,通过提取运行过程中产生的各种信息并加以分析,来完成代码检测的分析方式。静态检测具有检测范围广,检测深度广等优点,效率低、误报率高、成本高等缺点;动态检测具有准确率高优点,但是覆盖率低的缺点。


技术实现要素:

3.有鉴于此,本技术的目的在于提出一种源代码缺陷静态审计检测系统,本技术能够针对性的解决现有的问题。
4.基于上述目的,本技术还提出了一种源代码缺陷静态审计检测系统,包括:
5.ai自动审计模块,通过机器自学习技术,基于历史代码审计信息、函数白名单、和代码缺陷知识库,学习识别有效缺陷;
6.第三方组件检测模块,用于根据公开漏洞库的缺陷规则集,进行开源代码漏洞检测;
7.字节码扫描模块,通过java字节码扫描技术,进行图形化展示和缺陷定位追踪;
8.部署模块,用于进行虚拟化云部署、分布式部署、镜像部署。
9.进一步地,所述ai自动审计模块,包括:
10.在与软件产品相关的代码构建期间检测故障,生成历史代码审计信息;
11.识别自上次与软件产品相关的代码构建以来的每个变更集,生成函数白名单;
12.使用自然语言处理(nlp)分析每个变更集以提取变更集特征;
13.将软件缺陷起源模型应用于每个分析的变更集中提取的特征以检测故障的起源,生成代码缺陷知识库,所述软件缺陷起源模型包括从先前检测到的故障及其相应的变更集特征和起源中学习的模式的数学描述。
14.进一步地,所述识别自上次代码构建以来的每个变更集包括识别以下至少一项:与变更集相关联的聊天历史、与变更集相关联的至少一个电子邮件线程、与变更集相关联的会议纪要以及相关联的演示材料与更改集。
15.进一步地,所述第三方组件检测模块,包括:
16.将一组与代码相关的公开漏洞库的缺陷规则集分为多个类别;
17.选择至少包括第一参照漏洞和第二参照漏洞的缺陷规则;
18.执行第一测试以确定第一类是否包括与第一参照漏洞相匹配的第一个单独漏洞;
19.执行第二测试以确定第二类是否包含与第二参照漏洞相匹配的第二个单独漏洞;
20.根据所述第一测试和第二测试的结果,识别与所选缺陷规则相对应的复合漏洞,该复合漏洞基于第一个和第二个单独漏洞。
21.进一步地,所述第一和第二参照漏洞中的至少一个选自以下缺陷规则集:共同弱点枚举(cwe)、sans协会软件安全和分类、ieee软件缺陷标准分类和开放web应用程序安全项目(owasp)缺陷分类;
22.当指定为第一类的每个漏洞都包含与数据通信相关的漏洞时,指定为第二类的每个漏洞都包含一个与数据通信无关的漏洞。
23.进一步地,所述字节码扫描模块,包括:
24.对java源程序的字节码进行静态分析,生成函数调用图,进行图形化展示;
25.根据所述函数调用图生成保存有所述java源程序的基本信息的关系数据库;
26.根据预先建立的漏洞模式,以关系数据库查询的方式对所述java源程序进行指针分析,对所述源程序进行缺陷定位追踪。
27.进一步地,所述部署模块,包括:
28.虚拟化云部署单元,将所述代码缺陷知识库、复合漏洞、缺陷定位追踪的java源程序部署在云服务器上,该云服务器被配置为识别正在开发的包括源代码的目标应用程序的潜在错误;或者,
29.分布式部署单元,在解决方案模板存储库中搜索与所述代码缺陷知识库、复合漏洞、缺陷定位追踪的java源程序相匹配的解决方案模板,找到匹配的解决方案模板:根据所述匹配的解决方案模板创建修改后的源文件,其中修改后的源文件包括软件缺陷缓解;根据修改后的源文件创建更新的软件分发;将更新的软件分发部署到多个电子计算设备。
30.进一步地,所述部署模块,包括:
31.镜像部署单元,根据所述代码缺陷知识库、复合漏洞、缺陷定位追踪的java源程序创建服务器的标记语言(yaml)文件;制作服务器的基础镜像;将代码检测的客户端集成至服务器的基础镜像中;将所述服务器部署至预设容器化应用中管理;触发服务器构建代码缺陷检测任务。
32.总的来说,本技术的优势及给用户带来的体验在于:
33.1、固本清源:从代码源头解决安全问题,实现安全左移,增强了应用软件系统的安全性和健壮性;
34.2、自主可控:产品自主研发、安全可控,符合信创要求;
35.3:部署灵活:产品能够虚拟化部署、分布式部署、docker镜像部署;
36.4:性价比高:性能指标高、价格较低。
附图说明
37.在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本技术公开的一些实施方式,而不应将其视为是对本技术范围的限制。
38.图1示出根据本技术实施例的源代码缺陷静态审计检测系统的构成图。
39.图2示出根据本技术实施例的ai自动审计模块的具体实现方法示意图。
40.图3示出根据本技术实施例的第三方组件检测模块的具体实现方法示意图。
41.图4示出根据本技术实施例的字节码扫描模块的具体实现方法示意图。
42.图5示出了本技术一实施例所提供的一种电子设备的结构示意图。
43.图6示出了本技术一实施例所提供的一种存储介质的示意图。
具体实施方式
44.下面结合附图和实施例对本技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
45.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
46.如图1所示,申请实施例提供了一种源代码缺陷静态审计检测系统,该系统包括:
47.ai自动审计模块,通过机器自学习技术,基于历史代码审计信息、函数白名单、和代码缺陷知识库,学习识别有效缺陷;
48.第三方组件检测模块,用于根据公开漏洞库的缺陷规则集,进行开源代码漏洞检测;
49.字节码扫描模块,通过java字节码扫描技术,进行图形化展示和缺陷定位追踪;
50.部署模块,用于进行虚拟化云部署、分布式部署、镜像部署。
51.以下详细介绍每个模块的具体实现方式及技术细节:
52.ai自动审计模块,如图2所示,包括:
53.s1、在与软件产品相关的代码构建期间检测故障,生成历史代码审计信息;
54.s2、识别自上次与软件产品相关的代码构建以来的每个变更集,生成函数白名单;
55.s3、使用自然语言处理(nlp)分析每个变更集以提取变更集特征;
56.s4、将软件缺陷起源模型应用于每个分析的变更集中提取的特征以检测故障的起源,生成代码缺陷知识库,所述软件缺陷起源模型包括从先前检测到的故障及其相应的变更集特征和起源中学习的模式的数学描述。
57.其中识别自上次代码构建以来的每个变更集包括识别以下至少一项:与变更集相关联的聊天历史、与变更集相关联的至少一个电子邮件线程、与变更集相关联的会议纪要以及相关联的演示材料与更改集。
58.第三方组件检测模块,如图3所示,包括:
59.s31、将一组与代码相关的公开漏洞库的缺陷规则集分为多个类别;
60.s32、选择至少包括第一参照漏洞和第二参照漏洞的缺陷规则;
61.s33、执行第一测试以确定第一类是否包括与第一参照漏洞相匹配的第一个单独漏洞;
62.s34、执行第二测试以确定第二类是否包含与第二参照漏洞相匹配的第二个单独漏洞;
63.s35、根据所述第一测试和第二测试的结果,识别与所选缺陷规则相对应的复合漏
洞,该复合漏洞基于第一个和第二个单独漏洞。
64.其中第一和第二参照漏洞中的至少一个选自以下缺陷规则集:共同弱点枚举(cwe)、sans协会软件安全和分类、ieee软件缺陷标准分类和开放web应用程序安全项目(owasp)缺陷分类。
65.当指定为第一类的每个漏洞都包含与数据通信相关的漏洞时,指定为第二类的每个漏洞都包含一个与数据通信无关的漏洞。
66.另外,与数据通信相关的漏洞包括数据渗漏漏洞和数据注入漏洞中的至少一种。
67.字节码扫描模块,如图4所示,包括:
68.s41、对java源程序的字节码进行静态分析,生成函数调用图,进行图形化展示;
69.s42、根据所述函数调用图生成保存有所述java源程序的基本信息的关系数据库;
70.s43、根据预先建立的漏洞模式,以关系数据库查询的方式对所述java源程序进行指针分析,对所述源程序进行缺陷定位追踪。
71.所述以关系数据库查询的方式对所述java源程序进行指针分析,具体包括:
72.获得每个函数调用图以及函数依赖分析生成的函数调用序列;以main函数为入口,根据函数调用持续迭代计算每个过程的指针信息;根据所述函数调用序列分别计算每个语句对所述指针信息的影响;其中,在此框架中过程内分析与过程间分析是并行的,当在过程内分析,遇到函数调用时,则进行过程间的分析;当在过程间分析,如果将调用者名字空间内的信息映射到被调用者名字空间中,则可进入过程间分析。
73.部署模块,包括:
74.虚拟化云部署单元,将所述代码缺陷知识库、复合漏洞、缺陷定位追踪的java源程序部署在云服务器上,该云服务器被配置为识别正在开发的包括源代码的目标应用程序的潜在错误;
75.分布式部署单元,在解决方案模板存储库中搜索与所述代码缺陷知识库、复合漏洞、缺陷定位追踪的java源程序相匹配的解决方案模板,找到匹配的解决方案模板:根据所述匹配的解决方案模板创建修改后的源文件,其中修改后的源文件包括软件缺陷缓解;根据修改后的源文件创建更新的软件分发;将更新的软件分发部署到多个电子计算设备;
76.镜像部署单元,根据所述代码缺陷知识库、复合漏洞、缺陷定位追踪的java源程序创建服务器的标记语言(yaml)文件;制作服务器的基础镜像;将代码检测的客户端集成至服务器的基础镜像中;将所述服务器部署至预设容器化应用中管理;触发服务器构建代码缺陷检测任务。
77.本技术的源代码缺陷静态审计检测系统,产品优势如下:
78.安全缺陷种类全:超过一千种缺陷种类,全面兼容cwe、owasp、cert等国际编码标准;
79.超快检测速度:大于1万行/分钟,支持百万行级代码扫描;
80.部署方式灵活多样:
81.超强容错机制:java/c/c++语言不依赖于编译环境,提高分析的容错性,提高分析成功率;
82.开放性系统:可整合其他商业或开源代码扫描工具,实现多工具多维度扫描,减少漏报和误报率。
83.请参考图5,其示出了本技术的一些实施方式所提供的一种电子设备的示意图。如图5所示,所述电子设备20包括:处理器200,存储器201,总线202和通信接口203,所述处理器200、通信接口203和存储器201通过总线202连接;所述存储器201中存储有可在所述处理器200上运行的计算机程序,所述处理器200运行所述计算机程序时执行本技术前述任一实施方式所提供的源代码缺陷静态审计检测系统。
84.其中,存储器201可能包含高速随机存取存储器(ram:random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口203(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
85.总线202可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。其中,存储器201用于存储程序,所述处理器200在接收到执行指令后,执行所述程序,前述本技术实施例任一实施方式揭示的所述源代码缺陷静态审计检测系统可以应用于处理器200中,或者由处理器200实现。
86.处理器200可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器200中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器200可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器201,处理器200读取存储器201中的信息,结合其硬件完成上述方法的步骤。
87.本技术实施例提供的电子设备与本技术实施例提供的源代码缺陷静态审计检测系统出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
88.本技术实施方式还提供一种与前述实施方式所提供的源代码缺陷静态审计检测系统对应的计算机可读存储介质,请参考图6,其示出的计算机可读存储介质为光盘30,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会执行前述任意实施方式所提供的源代码缺陷静态审计检测系统。
89.需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
90.本技术的上述实施例提供的计算机可读存储介质与本技术实施例提供的源代码缺陷静态审计检测系统出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
91.需要说明的是:
92.在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备有固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本技术也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本技术的内容,并且上面对特定语言所做的描述是为了披露本技术的最佳实施方式。
93.在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本技术的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
94.类似地,应当理解,为了精简本技术并帮助理解各个发明方面中的一个或多个,在上面对本技术的示例性实施例的描述中,本技术的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本技术要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本技术的单独实施例。
95.本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
96.此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本技术的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
97.本技术的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本技术实施例的虚拟机的创建系统中的一些或者全部部件的一些或者全部功能。本技术还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者系统程序(例如,计算机程序和计算机程序产品)。这样的实现本技术的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
98.应该注意的是上述实施例对本技术进行说明而不是对本技术进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的
元件。本技术可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干系统的单元权利要求中,这些系统中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
99.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。

技术特征:
1.一种源代码缺陷静态审计检测系统,其特征在于,包括:ai自动审计模块,通过机器自学习技术,基于历史代码审计信息、函数白名单、和代码缺陷知识库,学习识别有效缺陷;第三方组件检测模块,用于根据公开漏洞库的缺陷规则集,进行开源代码漏洞检测;字节码扫描模块,通过java字节码扫描技术,进行图形化展示和缺陷定位追踪;部署模块,用于进行虚拟化云部署、分布式部署、镜像部署。2.根据权利要求1所述的系统,其特征在于,所述ai自动审计模块,包括:在与软件产品相关的代码构建期间检测故障,生成历史代码审计信息;识别自上次与软件产品相关的代码构建以来的每个变更集,生成函数白名单;使用自然语言处理(nlp)分析每个变更集以提取变更集特征;将软件缺陷起源模型应用于每个分析的变更集中提取的特征以检测故障的起源,生成代码缺陷知识库,所述软件缺陷起源模型包括从先前检测到的故障及其相应的变更集特征和起源中学习的模式的数学描述。3.根据权利要求2所述的系统,其特征在于,所述识别自上次代码构建以来的每个变更集包括识别以下至少一项:与变更集相关联的聊天历史、与变更集相关联的至少一个电子邮件线程、与变更集相关联的会议纪要以及相关联的演示材料与更改集。4.根据权利要求3所述的系统,其特征在于,所述第三方组件检测模块,包括:将一组与代码相关的公开漏洞库的缺陷规则集分为多个类别;选择至少包括第一参照漏洞和第二参照漏洞的缺陷规则;执行第一测试以确定第一类是否包括与第一参照漏洞相匹配的第一个单独漏洞;执行第二测试以确定第二类是否包含与第二参照漏洞相匹配的第二个单独漏洞;根据所述第一测试和第二测试的结果,识别与所选缺陷规则相对应的复合漏洞,该复合漏洞基于第一个和第二个单独漏洞。5.根据权利要求4所述的系统,其特征在于,所述第一和第二参照漏洞中的至少一个选自以下缺陷规则集:共同弱点枚举(cwe)、sans协会软件安全和分类、ieee软件缺陷标准分类和开放web应用程序安全项目(owasp)缺陷分类;当指定为第一类的每个漏洞都包含与数据通信相关的漏洞时,指定为第二类的每个漏洞都包含一个与数据通信无关的漏洞。6.根据权利要求5所述的系统,其特征在于,所述字节码扫描模块,包括:对java源程序的字节码进行静态分析,生成函数调用图,进行图形化展示;根据所述函数调用图生成保存有所述java源程序的基本信息的关系数据库;根据预先建立的漏洞模式,以关系数据库查询的方式对所述java源程序进行指针分析,对所述源程序进行缺陷定位追踪。7.根据权利要求6所述的系统,其特征在于,
所述部署模块,包括:虚拟化云部署单元,将所述代码缺陷知识库、复合漏洞、缺陷定位追踪的java源程序部署在云服务器上,该云服务器被配置为识别正在开发的包括源代码的目标应用程序的潜在错误;或者,分布式部署单元,在解决方案模板存储库中搜索与所述代码缺陷知识库、复合漏洞、缺陷定位追踪的java源程序相匹配的解决方案模板,找到匹配的解决方案模板:根据所述匹配的解决方案模板创建修改后的源文件,其中修改后的源文件包括软件缺陷缓解;根据修改后的源文件创建更新的软件分发;将更新的软件分发部署到多个电子计算设备。8.根据权利要求6所述的系统,其特征在于,所述部署模块,包括:镜像部署单元,根据所述代码缺陷知识库、复合漏洞、缺陷定位追踪的java源程序创建服务器的标记语言文件;制作服务器的基础镜像;将代码检测的客户端集成至服务器的基础镜像中;将所述服务器部署至预设容器化应用中管理;触发服务器构建代码缺陷检测任务。9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序以实现如权利要求1-8任一项所述的系统。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行实现如权利要求1-8中任一项所述的系统。

技术总结
本申请提供一种源代码缺陷静态审计检测系统,包括:AI自动审计模块,通过机器自学习技术,基于历史代码审计信息、函数白名单、和代码缺陷知识库,学习识别有效缺陷;第三方组件检测模块,用于根据公开漏洞库的缺陷规则集,进行开源代码漏洞检测;字节码扫描模块,通过Java字节码扫描技术,进行图形化展示和缺陷定位追踪;部署模块,用于进行虚拟化云部署、分布式部署、镜像部署。本申请的优势在于:固本清源:从代码源头解决安全问题,实现安全左移,增强了应用软件系统的安全性和健壮性;自主可控:产品自主研发、安全可控,符合信创要求;部署灵活:产品能够虚拟化部署、分布式部署、Docker镜像部署;性价比高:性能指标高、价格较低。低。低。


技术研发人员:赵永杰 曲涛 刘如君 廖其林
受保护的技术使用者:北京东方通网信科技有限公司
技术研发日:2023.05.31
技术公布日:2023/9/23
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐