静态代码扫描方法、装置、设备及介质与流程
未命名
09-22
阅读:50
评论:0
1.本技术属于数据处理技术领域,具体涉及一种静态代码扫描方法、一种静态代码扫描装置、一种电子设备以及一种可读存储介质。
背景技术:
2.在软件开发领域,如何发现代码漏洞是重要的研究方向之一。
3.目前,静态代码扫描技术作为一种可发现代码中存在的漏洞的技术,被广泛使用。而现有的静态代码扫描技术是通过分析代码的语法和结构来查找代码可能存在的安全漏洞。
4.但是,现有的静态代码扫描技术存在漏洞查找效率低的问题。
技术实现要素:
5.本技术实施例的目的是提供一种静态代码扫描方法、装置、设备及介质,能够提升静态代码扫描的漏洞查找效率。
6.第一方面,本技术实施例提供了一种静态代码扫描方法,该方法包括:
7.获取程序代码;
8.根据所述程序代码,确定所述程序代码的语义逻辑,所述语义逻辑包括:语法树和/或控制流图;
9.根据所述程序代码的语义逻辑以及漏洞检测模型,确定所述程序代码的至少一个漏洞的漏洞描述信息;
10.其中,所述漏洞检测模型用于反映程序代码的语义逻辑与漏洞描述信息之间的映射关系,所述漏洞描述信息包括漏洞类型、漏洞位置、漏洞严重性、漏洞建议修复措施及漏洞利用率中的至少一个。
11.第二方面,本技术实施例提供了一种静态代码扫描装置,该装置包括:
12.获取模块,用于获取程序代码;
13.第一确定模块,用于根据所述程序代码,确定所述程序代码的语义逻辑,所述语义逻辑包括:语法树和/或控制流图;
14.第二确定模块,用于根据所述程序代码的语义逻辑以及漏洞检测模型,确定所述程序代码的至少一个漏洞的漏洞描述信息;
15.其中,所述漏洞检测模型用于反映程序代码的语义逻辑与漏洞描述信息之间的映射关系,所述漏洞描述信息包括漏洞类型、漏洞位置、漏洞严重性、漏洞建议修复措施及漏洞利用率中的至少一个。
16.第三方面,本技术实施例提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
17.第四方面,本技术实施例提供了一种可读存储介质,所述可读存储介质上存储程
序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
18.第五方面,本技术实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法。
19.第六方面,本技术实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面所述的方法。
20.在本技术实施例中,获取程序代码;根据程序代码,确定程序代码的语义逻辑,语义逻辑包括:语法树和/或控制流图;根据程序代码的语义逻辑以及漏洞检测模型,确定程序代码的至少一个漏洞的漏洞描述信息;其中,漏洞检测模型用于反映程序代码的语义逻辑与漏洞描述信息之间的映射关系,漏洞描述信息包括漏洞类型、漏洞位置、漏洞严重性、漏洞建议修复措施及漏洞利用率中的至少一个。在本技术实施例中,由于漏洞检测模型能够反映出程序代码的语义逻辑和漏洞描述信息之间的映射关系,因此漏洞检测模型对程序代码具备漏洞理解能力。这样,在本技术实施例中,根据程序代码的语义逻辑以及漏洞检测模型,即将程序代码的语义逻辑输入至漏洞检测模型中,漏洞检测模型便可对到程序代码中的漏洞进行快速且准确地检测。基于此,本技术实施例提供的静态代码扫描方法相比于传统的静态代码扫描方法,可提升对程序代码漏洞查找效率。
附图说明
21.图1为实现本技术实施例的一种静态代码扫描方法的流程示意图;
22.图2为实现本技术实施例的一种静态代码扫描装置的结构示意图;
23.图3为实现本技术实施例的一种电子设备的硬件结构示意图一;
24.图4为实现本技术实施例的一种电子设备的硬件结构示意图二。
具体实施方式
25.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本技术保护的范围。
26.本技术的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,以便本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
27.下面结合附图,通过具体的实施例及其应用场景对本技术实施例提供的静态代码扫描方法、装置、设备及介质进行详细地说明。
28.本技术实施例提供一种静态代码扫描方法,如图1所示,包括如下s1100-s1300:
29.s1100、获取程序代码。
30.在本技术实施例中,程序代码为待进行静态扫描的代码。其中,静态扫描指的是在不运行程序的情况下,通过分析程序代码来寻找程序代码中可能存在的漏洞。以及,程序代
码可示例性的为源代码或目标代码。
31.以及,本技术实施例对程序代码的编码语言类型不做限定。这也就是说,本技术实施例提供的静态代码扫描方法的兼容性高。
32.在一个示例中,本技术实施例对程序代码的编码语言类型可以为java类型、c++类型、c类型、php类型中的任一种。
33.在本技术的一个实施例中,上述s1100可通过下述s1110-s1112来实现:
34.s1110、显示目标输入入口。
35.其中,目标输入入口用于供用户输入程序代码。
36.s1111、接收对目标输入入口的输入。
37.其中,上述s1111中的输入具体指的是用户输入程序代码的输入。
38.s1112、响应于输入,获取程序代码。
39.通过响应于上述s1111中的输入,即可得到程序代码。
40.在本技术实施例中,上述s1110-s1112可实现在web ui界面提供供用户输入程序代码的输入入口,由用户通过该输入入口直接输入程序代码。这大大的提高了本技术实施例提供的静态代码扫描方法的操作便捷性。
41.s1200、根据程序代码,确定程序代码的语义逻辑。
42.其中,语义逻辑包括语法树和/或控制流图。
43.在本技术实施例中,语法树是程序代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示程序代码中的一种结构。语法树也称抽象语法树。
44.控制流图是过程或程序的抽象表现,代表了一个程序执行过程中会遍历到的所有路径,它用图的形式表示一个过程内所有基本块执行的可能流向,也能反映一个过程的实时执行过程。
45.通过确定程序代码的语法树和控制流图树,可实现对代码中各种关键信息的提取,以便后续对程序代码的扫描分析。这也就是说,上述s1200属于一个对程序代码进行预处理的过程。
46.在本技术的一个实施例中,上述s1200的具体实现可以为如下s1210:
47.s1210、对程序代码执行语法分析和词法分析处理,得到程序代码的语义逻辑。
48.在本技术实施例中,通过词法分析,程序代码会被拆分成不同的标记和符号,例如变量名、函数名、操作符和关键字等。这些标记和符号被归类为一组词法元素,被认为是程序代码语法的基本单元。
49.在语法分析过程中,程序代码中的语句和表达式被解析为一组结构化的语法元素,例如函数调用、变量声明和控制流语句等。
50.根据词法分析的结果和语法分析的结果,可以得到程序代码的语义描述,根据该语义描述可构建语法树和控制流图。基于此得到语义逻辑。
51.s1300、根据程序代码的语义逻辑以及漏洞检测模型,确定程序代码的至少一个漏洞的漏洞描述信息。
52.其中,漏洞检测模型用于反映程序代码的语义逻辑与漏洞描述信息之间的映射关系,漏洞描述信息包括漏洞类型、漏洞位置、漏洞严重性、漏洞建议修复措施及漏洞利用率
中的至少一个。
53.在本技术实施例中,漏洞类型指的是漏洞所属类型,例如sql注入、跨站脚本等;
54.漏洞位置指的是漏洞在代码中的位置,例如文件名、行号、列号等;
55.漏洞严重性指的是根据漏洞类型和位置,对漏洞的严重程度进行分类和评估的结果,例如可以为:高、中、低等;
56.漏洞建议修复措施指的是根据漏洞类型和严重程度等提供的相应的修复措施。
57.漏洞利用率指的是利用该漏洞,来得到计算机的控制权的概率。
58.在本技术实施例中,由于漏洞检测模型能够反映出程序代码的语义逻辑和漏洞描述信息之间的映射关系,因此漏洞检测模型对程序代码具备漏洞理解能力。这样,在本技术实施例中,根据程序代码的语义逻辑以及漏洞检测模型,即将程序代码的语义逻辑输入至漏洞检测模型中,漏洞检测模型便可对到程序代码中的漏洞进行快速且准确地检测。基于此,本技术实施例提供的静态代码扫描方法相比于传统的静态代码扫描方法,可提升对程序代码漏洞查找效率。
59.在一个示例中,漏洞的描述信息可以为:漏洞1(具体漏洞类型;具体漏洞位置;具体漏洞严重性;具体漏洞建议修复措施;漏洞利用率)
60.在本技术实施例中,漏洞的描述信息可使用自然语言文本来描述,这样可供用户直观的了解到程序代码的漏洞信息。
61.在一个示例中,程序代码可以为如下:
62.def calculate_area(length,width):
63.if length《0and width《0:
64.raise valueerror("length and width must be positive.")
65.area=length*width
66.return area
67.基于本技术实施例提供的静态代码扫描方法,对于上述程序代码,得到的漏洞描述信息为:漏洞1(逻辑类;代码第二行;在判断长度和宽度是否为正数时,应该使用逻辑“or”而不是“and”)。
68.在本技术的一个实施例中,漏洞检测模型可具体为一个数据库,该数据库中存储有大量数据组,一个数据组中包括:程序代码的语义逻辑以及该程序代码经软件专家人工标注的漏洞描述信息。基于此,上述s1300的具体实现可以为:从数据库中查找与程序代码的语义逻辑匹配度最高的一个语义逻辑关系;将查找到的语义逻辑所对应的漏洞描述信息,作为程序代码的漏洞描述信息。
69.在本技术的另一个实施例中,漏洞检测模型可以为一个ai模型,其中,ai模型指的是人工智能算法和技术构成的计算机程序,其目的是从数据中学习和提取知识,以用于自动化决策、预测和推理等任务。对于该实施例,本技术实施例提供的静态代码扫描方法在上述s1300之前还包括获取漏洞检测模型的步骤,该步骤如下s1310和s1311:
70.s1310、获取多个训练样本组成的训练样本集。
71.其中,任一训练样本包括:样本程序代码的语义逻辑以及对应的漏洞描述信息,样本程序代码包括漏洞样本程序代码。
72.在本技术实施例中,上述s1310的具体实现可以为:从大型漏洞库(如owasp、cve、
cew等)、大型威胁情报库、各大公司开放的安全响应中心(security response center,src)、代码漏洞相关学术网站、代码漏洞相关电子数集等中爬取程序代码以及对应的漏洞描述信息;将所爬取的程序代码作为样本程序代码,通过如上述s1210的方式得到样本程序代码的语义逻辑;将所爬取的程序代码对应的漏洞描述信息,作为对应样本程序代码的漏洞描述信息;将样本程序代码的语义逻辑以及对应的漏洞描述信息作为一组训练样本。
73.在本技术的另一个实施例中,为了能够对不存在漏洞的正确的程序代码进行扫描,上述样本程序代码在包括漏洞样本程序代码的基础上,还包括正确样本程序代码。以及,正确样本程序代码对应的漏洞描述信息具体为空。
74.s1311、根据训练样本集进行训练,得到漏洞检测模型。
75.在本技术的一个实施例中,漏洞检测模型可示例性的为具备上下文理解能力的漏洞检测模型。
76.在漏洞检测模型为具备上下文理解能力的漏洞检测模型的情况下,该漏洞检测模型可考虑上下文信息。因此,基于该漏洞检测模型对程序代码漏洞进行检测时,还可发现程序代码的潜在漏洞。
77.进一步的,在本技术的一个实施例中,具备上下文理解能力的漏洞检测模型为基于transformer架构的本地化部署的gpt-neo模型。当然,漏洞检测模型还可以为其他类型的模型。其中,基于transformer架构的本地化部署的gpt-neo模型是一种先进的自然语言处理模型,能够在处理自然语言文本时取得极好的效果。
78.在具备上下文理解能力的漏洞检测模型为基于transformer架构的本地化部署的gpt-neo模型的情况下,由于基于transformer架构的本地化部署的gpt-neo模型可部署的优势,在使用该模型经训练得到的漏洞检测模型时,则可避免程序代码上云。这保证了程序代码的安全和隐私问题。
79.在上述s1310和s1311所示实施例的基础上,上述s1300的具体实现可以为:将程序代码的语义逻辑输入至漏洞检测模型中,由漏洞检测模型对程序代码进行推理和学习,检测其中可能存在的漏洞,得到漏洞描述信息。基于此,在本技术的一个实施例中,上述s1300可具体通过下述s1320-s1322来实现:
80.s1320、根据程序代码的语义逻辑,将程序代码分割为段落。
81.在本技术实施例中,段落的长度可以是句子、行或代码块。以及,根据程序代码的语义逻辑可对程序代码进行准确的段落分割。
82.s1321、将程序代码对应分割的段落转换为漏洞检测模型可识别的向量。
83.基于上述s1321,可将上述程序代码对应分割的段落转换为漏洞检测模型可识别的向量,以供漏洞检测模型识别。
84.结合上述内容可知,上述s1320和s1321属于漏洞检测模型内部对程序代码的预处理过程。
85.s1322、将向量输入至漏洞检测模型,确定程序代码的至少一个漏洞的漏洞描述信息。
86.在本技术实施例中,漏洞检测模型对向量进行包括但不限行于分析上下文信息、关键字匹配、规则匹配、模式识别和异常检测等的推理和学习。
87.在本技术实施例中,漏洞检测模型经大量样本训练得到。这样,漏洞检测模型对程
序代码具备强大的漏洞理解能力。这样,漏洞检测模型可对潜在的漏洞进行推理。基于此,本技术实施例提供的静态代码扫描方法相比于传统的静态代码扫描方法,还具备误报率降低、可应对动态代码以及可应对外部依赖等优点。
88.在本技术实施例中,提供了一种静态代码扫描方法,包括:获取程序代码;根据程序代码,确定程序代码的语义逻辑,语义逻辑包括:语法树和/或控制流图;根据程序代码的语义逻辑以及漏洞检测模型,确定程序代码的至少一个漏洞的漏洞描述信息;其中,漏洞检测模型用于反映程序代码的语义逻辑与漏洞描述信息之间的映射关系,漏洞描述信息包括漏洞类型、漏洞位置、漏洞严重性、漏洞建议修复措施及漏洞利用率中的至少一个。在本技术实施例中,由于漏洞检测模型能够反映出程序代码的语义逻辑和漏洞描述信息之间的映射关系,因此漏洞检测模型对程序代码具备漏洞理解能力。这样,在本技术实施例中,根据程序代码的语义逻辑以及漏洞检测模型,即将程序代码的语义逻辑输入至漏洞检测模型中,漏洞检测模型便可对到程序代码中的漏洞进行快速且准确地检测。基于此,本技术实施例提供的静态代码扫描方法相比于传统的静态代码扫描方法,可提升对程序代码漏洞查找效率。
89.在本技术的一个实施例中,本技术实施例提供的静态代码扫描方法还包括如下s1400:
90.s1400、对于任一漏洞,向漏洞关联标识信息。
91.其中,标识信息用于定位漏洞。
92.在本技术的一个实施例中,标识信息可以为id。
93.在本技术实施例中,通过向漏洞关联标识信息,这样可唯一定位出该漏洞以便于代码开发人员对漏洞的处理和跟踪。
94.在本技术的一个实施例中,本技术实施例提供的静态代码扫描方法还包括如下s1500:
95.s1500、输出至少一个漏洞的漏洞描述信息。
96.在本技术的一个实施例中,上述s1500的具体实现可以为:将至少一个漏洞的漏洞描述信息输出至指定路径下的一个结果文件中。该结果文件的格式可以是常见的文本文件格式,如csv、json等。
97.在本技术的另一个实施例中,上述s1500的具体实现还可以为:在可视界面显示至少一个漏洞的漏洞描述信息。
98.基于上述s1500,则可实现对漏洞的漏洞描述信息的可视化展示,便于开发人员快速直观的了解到程序代码的漏洞信息。
99.本技术实施例提供的静态代码扫描方法,执行主体可以为静态代码扫描装置。本技术实施例中以静态代码扫描装置执行静态代码扫描方法为例,说明本技术实施例提供的静态代码扫描装置。
100.本技术实施例提供了一种静态代码扫描装置200,如图2所示,包括:
101.获取模块210,用于获取程序代码;
102.第一确定模块220,用于根据所述程序代码,确定所述程序代码的语义逻辑,所述语义逻辑包括:语法树和/或控制流图;
103.第二确定模块230,用于根据所述程序代码的语义逻辑以及漏洞检测模型,确定所
述程序代码的至少一个漏洞的漏洞描述信息;
104.其中,所述漏洞检测模型用于反映程序代码的语义逻辑与漏洞描述信息之间的映射关系,所述漏洞描述信息包括漏洞类型、漏洞位置、漏洞严重性、漏洞建议修复措施及漏洞利用率中的至少一个。
105.在本技术实施例中,提供了一种静态代码扫描装置,包括:获取模块,用于获取程序代码;第一确定模块,用于根据程序代码,确定程序代码的语义逻辑,语义逻辑包括:语法树和/或控制流图;第二确定模块,用于根据程序代码的语义逻辑以及漏洞检测模型,确定程序代码的至少一个漏洞的漏洞描述信息;其中,漏洞检测模型用于反映代码的语义逻辑与漏洞描述信息之间的映射关系,漏洞描述信息包括漏洞类型、漏洞位置、漏洞严重性、漏洞建议修复措施及漏洞利用率中的至少一个。在本技术实施例中,由于漏洞检测模型能够反映出程序代码的语义逻辑和漏洞描述信息之间的映射关系,因此漏洞检测模型对程序代码具备漏洞理解能力。这样,在本技术实施例中,根据程序代码的语义逻辑以及漏洞检测模型,即将程序代码的语义逻辑输入至漏洞检测模型中,漏洞检测模型便可对到程序代码中的漏洞进行快速且准确地检测。基于此,本技术实施例提供的静态代码扫描装置可提升漏洞查找效率。
106.在本技术的一个实施例中,本技术实施例提供的静态代码扫描模块200还包括训练模块,训练模块包括:
107.获取单元,用于获取多个训练样本组成训练样本集,任一所述训练样本包括:样本程序代码的语义逻辑以及对应的漏洞描述信息,所述样本程序代码包括漏洞样本程序代码;
108.训练单元,用于根据所述训练样本集进行训练,得到漏洞检测模型。
109.在本技术的一个实施例中,第二确定模块230包括:
110.分割单元,用于根据所述程序代码的语义逻辑,将所述程序代码分割为段落;
111.转换单元,用于将所述程序代码对应分割的段落转换为所述漏洞检测模型可识别的向量;
112.确定单元,用于将所述向量输入至所述漏洞检测模型,确定所述程序代码的至少一个漏洞的漏洞描述信息。
113.在本技术的一个实施例中,所述漏洞检测模型为具备上下文理解能力的漏洞检测模型。
114.在本技术的一个实施例中,所述具备上下文理解能力的漏洞检测模型为基于transformer架构的本地化部署的gpt-neo模型。
115.在本技术的一个实施例中,本技术实施例提供的静态代码扫描装置200还包括:
116.关联模块,用于对于任一漏洞,向所述漏洞关联标识信息,所述标识信息用于定位所述漏洞。
117.在本技术的一个实施例中,第一确定模块220具体用于:
118.对所述程序代码执行语法分析和词法分析处理,得到所述程序代码的语义逻辑。
119.在本技术的一个实施例中,获取模块210包括:
120.显示单元,用于显示目标输入入口;
121.接收单元,用于接收对所述目标输入入口的输入;
122.响应单元,用于响应于所述输入,获取程序代码。
123.本技术实施例中的静态代码扫描装置可以是电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性的,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、移动上网装置(mobile internet device,mid)、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本或者个人数字助理(personal digital assistant,pda)等,还可以为服务器、网络附属存储器(network attached storage,nas)、个人计算机(personal computer,pc)等,本技术实施例不作具体限定。
124.本技术实施例中的静态代码扫描装置可以为具有操作系统的装置。该操作系统可以为安卓(android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本技术实施例不作具体限定。
125.本技术实施例提供的静态代码扫描装置能够实现图1的方法实施例实现的各个过程,为避免重复,这里不再赘述。
126.可选地,如图3所示,本技术实施例还提供一种电子设备300,包括处理器301和存储器302,存储器302上存储有可在所述处理器301上运行的程序或指令,该程序或指令被处理器301执行时实现上述静态代码扫描方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
127.图4为实现本技术实施例的一种电子设备的硬件结构示意图二。
128.该电子设备100包括但不限于:射频单元101、网络模块102、音频输出单元103、输入单元104、传感器105、显示单元106、用户输入单元107、接口单元108、存储器109、以及处理器110等部件。
129.本领域技术人员可以理解,电子设备100还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器110逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图4中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
130.其中,处理器110,用于获取程序代码;
131.根据所述程序代码,确定所述程序代码的语义逻辑,所述语义逻辑包括:语法树和/或控制流图;
132.根据所述程序代码的语义逻辑以及漏洞检测模型,确定所述程序代码的至少一个漏洞的漏洞描述信息;
133.其中,所述漏洞检测模型用于反映程序代码的语义逻辑与漏洞描述信息之间的映射关系,所述漏洞描述信息包括漏洞类型、漏洞位置、漏洞严重性、漏洞建议修复措施及漏洞利用率中的至少一个。
134.在本技术实施例中,提供了一种电子设备,其中的处理器用于:获取程序代码;根据程序代码,确定程序代码的语义逻辑,语义逻辑包括:语法树和/或控制流图;根据程序代码的语义逻辑以及漏洞检测模型,确定程序代码的至少一个漏洞的漏洞描述信息;其中,漏洞检测模型用于反映程序代码的语义逻辑与漏洞描述信息之间的映射关系,漏洞描述信息包括漏洞类型、漏洞位置、漏洞严重性、漏洞建议修复措施及漏洞利用率中的至少一个。在
本技术实施例中,由于漏洞检测模型能够反映出程序代码的语义逻辑和漏洞描述信息之间的映射关系,因此漏洞检测模型对程序代码具备漏洞理解能力。这样,在本技术实施例中,根据程序代码的语义逻辑以及漏洞检测模型,即将程序代码的语义逻辑输入至漏洞检测模型中,漏洞检测模型便可对到程序代码中的漏洞进行快速且准确地检测。基于此,本技术实施例提供的电子设备在执行静态代码扫描方法时,可提升对程序代码漏洞查找效率。
135.可选地,处理器110还用于:
136.获取多个训练样本组成训练样本集,任一所述训练样本包括:样本程序代码的语义逻辑以及对应的漏洞描述信息,所述样本程序代码包括漏洞样本程序代码;
137.根据所述训练样本集进行训练,得到漏洞检测模型。
138.可选地,处理器110具体用于:
139.根据所述程序代码的语义逻辑,将所述程序代码分割为段落;
140.将所述程序代码对应分割的段落转换为所述漏洞检测模型可识别的向量;
141.将所述向量输入至所述漏洞检测模型,确定所述程序代码的至少一个漏洞的漏洞描述信息。
142.可选地,所述漏洞检测模型为具备上下文理解能力的漏洞检测模型。
143.可选地,所述具备上下文理解能力的漏洞检测模型为基于transformer架构的本地化部署的gpt-neo模型。
144.可选地,处理器110还用于:
145.对于任一漏洞,向所述漏洞关联标识信息,所述标识信息用于定位所述漏洞。
146.可选地,处理器110具体用于:
147.对所述程序代码执行语法分析和词法分析处理,得到所述程序代码的语义逻辑。
148.可选地,处理器110具体用于:
149.显示目标输入入口;
150.接收对所述目标输入入口的输入;
151.响应于所述输入,获取程序代码。
152.应理解的是,本技术实施例中,输入单元104可以包括图形处理器(graphics processing unit,gpu)1041和麦克风1042,图形处理器1041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元106可包括显示面板1061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板1061。用户输入单元107包括触控面板1071以及其他输入设备1072中的至少一种。触控面板1071,也称为触摸屏。触控面板1071可包括触摸检测装置和触摸控制器两个部分。其他输入设备1072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
153.存储器109可用于存储软件程序以及各种数据。存储器109可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器109可以包括易失性存储器或非易失性存储器,或者,存储器x09可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可
擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddrsdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synch link dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,drram)。本技术实施例中的存储器109包括但不限于这些和任意其它适合类型的存储器。
154.处理器110可包括一个或多个处理单元;可选的,处理器110集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器110中。
155.本技术实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述静态代码扫描方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
156.其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器rom、随机存取存储器ram、磁碟或者光盘等。
157.本技术实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述静态代码扫描方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
158.应理解,本技术实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
159.本技术实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述静态代码扫描方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
160.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本技术实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
161.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服
务器,或者网络设备等)执行本技术各个实施例所述的方法。
162.上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本技术的保护之内。
技术特征:
1.一种静态代码扫描方法,其特征在于,所述方法包括:获取程序代码;根据所述程序代码,确定所述程序代码的语义逻辑,所述语义逻辑包括:语法树和/或控制流图;根据所述程序代码的语义逻辑以及漏洞检测模型,确定所述程序代码的至少一个漏洞的漏洞描述信息;其中,所述漏洞检测模型用于反映程序代码的语义逻辑与漏洞描述信息之间的映射关系,所述漏洞描述信息包括漏洞类型、漏洞位置、漏洞严重性、漏洞建议修复措施及漏洞利用率中的至少一个。2.根据权利要求1所述的方法,其特征在于,在所述根据所述程序代码的语义逻辑以及漏洞检测模型,确定所述程序代码的至少一个漏洞的漏洞描述信息之前,还包括:获取多个训练样本组成训练样本集,任一所述训练样本包括:样本程序代码的语义逻辑以及对应的漏洞描述信息,所述样本程序代码包括漏洞样本程序代码;根据所述训练样本集进行训练,得到漏洞检测模型。3.根据权利要求1所述的方法,其特征在于,所述根据所述程序代码的语义逻辑以及漏洞检测模型,确定所述程序代码的至少一个漏洞的漏洞描述信息,包括:根据所述程序代码的语义逻辑,将所述程序代码分割为段落;将所述程序代码对应分割的段落转换为所述漏洞检测模型可识别的向量;将所述向量输入至所述漏洞检测模型,确定所述程序代码的至少一个漏洞的漏洞描述信息。4.根据权利要求1所述的方法,其特征在于,所述漏洞检测模型为具备上下文理解能力的漏洞检测模型。5.根据权利要求4所述的方法,其特征在于,所述具备上下文理解能力的漏洞检测模型为基于transformer架构的本地化部署的gpt-neo模型。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:对于任一漏洞,向所述漏洞关联标识信息,所述标识信息用于定位所述漏洞。7.根据权利要求1所述的方法,其特征在于,所述根据所述程序代码,确定所述程序代码的语义逻辑,包括:对所述程序代码执行语法分析和词法分析处理,得到所述程序代码的语义逻辑。8.根据权利要求1所述的方法,其特征在于,所述获取程序代码,包括:显示目标输入入口;接收对所述目标输入入口的输入;响应于所述输入,获取程序代码。9.一种静态代码扫描装置,其特征在于,包括:获取模块,用于获取程序代码;第一确定模块,用于根据所述程序代码,确定所述程序代码的语义逻辑,所述语义逻辑包括:语法树和/或控制流图;第二确定模块,用于根据所述程序代码的语义逻辑以及漏洞检测模型,确定所述程序代码的至少一个漏洞的漏洞描述信息;
其中,所述漏洞检测模型用于反映程序代码的语义逻辑与漏洞描述信息之间的映射关系,所述漏洞描述信息包括漏洞类型、漏洞位置、漏洞严重性、漏洞建议修复措施及漏洞利用率中的至少一个。10.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-8任一项所述的静态代码扫描方法的步骤。11.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1-8任一项所述的静态代码扫描方法的步骤。
技术总结
本申请公开了一种静态代码扫描方法、装置、设备及介质,属于数据处理技术领域。其中方法包括:获取程序代码;根据程序代码,确定程序代码的语义逻辑,语义逻辑包括:语法树和/或控制流图;根据程序代码的语义逻辑以及漏洞检测模型,确定程序代码的至少一个漏洞的漏洞描述信息;其中,漏洞检测模型用于反映程序代码的语义逻辑与漏洞描述信息之间的映射关系,漏洞描述信息包括漏洞类型、漏洞位置、漏洞严重性、漏洞建议修复措施及漏洞利用率中的至少一个。漏洞建议修复措施及漏洞利用率中的至少一个。漏洞建议修复措施及漏洞利用率中的至少一个。
技术研发人员:刘洪善
受保护的技术使用者:维沃移动通信有限公司
技术研发日:2023.06.16
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/