CN114756875B - 一种代码扫描方法及电子设备 - Google Patents
一种代码扫描方法及电子设备 Download PDFInfo
- Publication number
- CN114756875B CN114756875B CN202210678163.XA CN202210678163A CN114756875B CN 114756875 B CN114756875 B CN 114756875B CN 202210678163 A CN202210678163 A CN 202210678163A CN 114756875 B CN114756875 B CN 114756875B
- Authority
- CN
- China
- Prior art keywords
- scanning
- result
- code
- scanning result
- electronic device
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种代码扫描方法及电子设备,涉及电子技术领域,以提高使用静态代码扫描工具等代码扫描工具扫描结果的准确性以及代码扫描的效率。该方法包括:电子设备获取代码扫描工具扫描源代码的扫描结果;电子设备根据所扫描结果,获取扫描结果对应的扫描信息;扫描信息包括扫描结果、扫描结果对应的扫描规则以及扫描结果对应的代码片段;扫描规则为代码扫描工具扫描源代码的内容;代码片段为源代码中与扫描规则对应的代码;电子设备基于扫描结果对应的扫描信息,以及扫描结果分类模型,确定扫描结果的类型,扫描结果的类型包括软件漏洞或工具误报。
Description
技术领域
本申请涉及电子技术领域,尤其涉及一种代码扫描方法及电子设备。
背景技术
目前,对于开发人员编写的代码,用户可以使用代码扫描工具,如静态代码扫描工具进行扫描,从而能够确定出该代码存在的问题。在静态代码扫描工具确定该代码存在问题时,静态代码扫描工具输出扫描结果,该扫描结果包括存在问题的代码片段。
然而,静态代码扫描工具输出的扫描结果,可能是存在问题的代码片段,也可能是静态代码扫描工具的误报。因此,需要用户人工确定静态代码扫描工具输出的扫描结果是存在问题的代码片段,还是静态代码扫描工具的误报。这就导致代码的扫描结果准确性较低且代码扫描的效率较低。
发明内容
本申请实施例提供一种代码扫描方法及电子设备,以提高使用静态代码扫描工具等代码扫描工具扫描结果的准确性以及代码扫描的效率。
第一方面,本申请实施例提供一种代码扫描方法,应用于电子设备,该电子设备可以包括代码扫描工具,该代码扫描方法可以包括:电子设备获取代码扫描工具扫描源代码的扫描结果;电子设备根据扫描结果,获取扫描结果对应的扫描信息;扫描信息包括扫描结果、扫描结果对应的扫描规则以及扫描结果对应的代码片段;扫描规则为代码扫描工具扫描源代码的内容;代码片段为源代码中与扫描规则对应的代码片段;电子设备基于扫描结果对应的扫描信息,以及扫描结果分类模型,确定扫描结果的类型,扫描结果的类型包括软件漏洞或工具误报。
基于第一方面所述的代码扫描方法,通过源代码的扫描结果对应的代码片段,扫描结果对应的扫描规则,以及扫描结果分类模型,能够得到源代码对应的代码扫描工具输出的扫描结果的类型,即扫描结果是工具误报还是软件漏洞,从而不需要人工确定代码扫描工具输出的扫描结果是存在问题的代码片段(即软件漏洞),还是代码扫描工具的误报,即不需要人工确定代码扫描工具输出的扫描结果的类型,从而能够提高使用代码扫描工具扫描结果的准确性以及代码扫描的效率。
结合第一方面,在一种可能的实现方式中,在电子设备基于扫描结果对应的扫描信息,以及扫描结果分类模型,确定扫描结果的类型之前,上述代码扫描方法还可以包括:电子设备获取代码扫描工具扫描的历史扫描信息;历史扫描信息包括历史扫描结果,历史扫描结果对应的扫描规则、历史扫描结果对应的代码片段以及历史扫描结果的类型;电子设备基于历史扫描信息进行模型训练,获取扫描结果分类模型。
基于该可能的实现方式,通过代码扫描工具的历史扫描信息(历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则以及历史扫描结果对应的类型),进行模型训练,可以得到扫描结果分类模型,从而通过扫描结果分类模型可以确定扫描结果对应的类型,从而不需要人工确定代码扫描工具输出的扫描结果的类型,从而能够提高使用代码扫描工具扫描结果的准确性以及代码扫描的效率。
结合第一方面,在一种可能的实现方式中,上述代码扫描方法还可以包括:电子设备显示扫描结果的类型。
基于该可能的实现方式,通过电子设备显示扫描结果的类型,可以方便用户快速得知扫描结果是软件漏洞还是工具误报,从而用户可以采取不同的方式进行处理。
结合第一方面,在一种可能的实现方式中,上述代码扫描方法还可以包括:电子设备显示第一提示窗,第一提示窗用于用户确认扫描结果被识别为扫描结果的类型是否正确;在用户确认扫描结果被识别为扫描结果的类型不正确的情况下,电子设备接收用户对扫描结果的类型的第一修改操作;电子设备根据第一修改操作,修改扫描结果的类型。
基于该可能的实现方式,通过电子设备显示用于用户确认扫描结果被识别为扫描结果的类型是否正确的提示窗,可以提示用户确定扫描结果的类型是否正确,且在用户确定扫描结果的类型不正确的情况下,用户可以对扫描结果的类型进行修改,从而能够进一步提高使用代码扫描工具扫描结果的准确性以及代码扫描的效率。
结合第一方面,在一种可能的实现方式中,上述代码扫描方法还可以包括:电子设备保存修改之后的扫描结果的类型;在修改之后的扫描结果的类型的数量大于第一预设阈值的情况下,电子设备基于修改之后的扫描结果的类型,更新扫描结果分类模型。
基于该可能的实现方式,通过电子设备保存修改之后的扫描结果的类型,即电子设备保存代码扫描工具错误的扫描结果以及对应的处理方式,并根据代码扫描工具错误的扫描结果以及对应的处理方式,对扫描结果分类模型进行优化训练,即基于修改之后的扫描结果的类型,可以更新扫描结果分类模型,从而能够进一步提高使用代码扫描工具扫描结果的准确性以及代码扫描的效率。
结合第一方面,在一种可能的实现方式中,上述历史扫描信息还可以包括历史扫描结果对应的修改方式。
基于该可能的实现方式,通过历史扫描信息还包括历史扫描结果对应的处理方式,从而通过历史扫描信息进行模型训练,得到扫描结果分类模型,不仅可以对扫描结果的类型进行预测,还可以对扫描结果的类型对应的处理方式进行预测,从而可以方便用户得知扫描结果的类型对应的处理方式。
结合第一方面,在一种可能的实现方式中,上述代码扫描方法还可以包括:电子设备基于扫描结果对应的扫描信息,以及扫描结果分类模型,确定扫描结果对应的处理方式;电子设备显示扫描结果对应的处理方式。
基于该可能的实现方式,通过电子设备显示扫描结果对应的处理方式,可以方便用户快速得知显示扫描结果对应的处理方式,从而用户可以快速对扫描结果对应的代码片段进行处理。
结合第一方面,在一种可能的实现方式中,上述代码扫描方法还可以包括:电子设备显示第二提示窗,第二提示窗用于用户确认扫描结果对应的处理方式是否正确;在用户确认扫描结果对应的处理方式不正确的情况下,电子设备接收用户对扫描结果对应的处理方式的第二修改操作;电子设备根据第二修改操作,修改扫描结果对应的处理方式。
基于该可能的实现方式,通过电子设备显示用于用户确认扫描结果对应的处理方式是否正确的提示窗,可以提示用户确定扫描结果对应的处理方式是否正确,且在用户确定扫描结果对应的处理方式不正确的情况下,用户可以对扫描结果对应的处理方式进行修改,从而能够进一步提高使用代码扫描工具扫描结果的准确性以及代码扫描的效率。
结合第一方面,在一种可能的实现方式中,上述代码扫描方法还可以包括:电子设备保存修改之后的扫描结果对应的处理方式;在修改之后的扫描结果对应的处理方式的数量大于第二预设阈值的情况下,电子设备基于修改之后的扫描结果对应的处理方式,更新扫描结果分类模型。
基于该可能的实现方式,通过电子设备保存修改之后的扫描结果对应的处理方式,即电子设备保存代码扫描工具错误的扫描结果对应的处理方式以及对应的处理方式,并根据代码扫描工具错误的扫描结果对应的处理方式以及对应的处理方式,对扫描结果分类模型进行优化训练,即基于修改之后的扫描结果对应的处理方式,可以更新扫描结果分类模型,从而能够进一步提高使用代码扫描工具扫描结果的准确性以及代码扫描的效率。
结合第一方面,在一种可能的实现方式中,上述代码扫描工具可以为静态代码扫描工具。
基于该可能的实现方式,通过源代码的扫描结果对应的代码片段,扫描结果对应的扫描规则,以及扫描结果的分类模型,能够得到源代码对应的静态代码扫描工具输出的扫描结果的类型,从而不需要人工确定静态代码扫描工具输出的扫描结果是存在问题的代码片段,还是静态代码扫描工具的误报,即不需要人工确定静态代码扫描工具输出的扫描结果的类型,从而能够提高使用静态代码扫描工具等代码扫描工具扫描结果的准确性以及代码扫描的效率。
第二方面,本申请实施例提供一种代码扫描装置,该代码扫描装置可以应用于电子设备,用于实现上述第一方面中的方法。该代码扫描装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,例如,获取模块和确定模块等。
其中,获取模块,可以用于获取代码扫描工具扫描源代码的扫描结果。
获取模块,还可以用于根据扫描结果,获取扫描结果对应的扫描信息;扫描信息包括扫描结果、扫描结果对应的扫描规则以及扫描结果对应的代码片段;扫描规则为代码扫描工具扫描源代码的内容;代码片段为源代码中与扫描规则对应的代码片段。
确定模块,可以用于基于扫描结果对应的扫描信息,以及扫描结果分类模型,确定扫描结果的类型,扫描结果的类型包括软件漏洞或工具误报。
结合第二方面,在一种可能的实现方式中,获取模块,还可以用于获取代码扫描工具扫描的历史扫描信息;历史扫描信息包括历史扫描结果、历史扫描结果对应的扫描规则、历史扫描结果对应的代码片段以及历史扫描结果的类型。
上述代码扫描装置还可以包括训练模块。
训练模块,可以用于基于历史扫描信息进行模型训练。
获取模块,还可以用于获取扫描结果分类模型。
结合第二方面,在一种可能的实现方式中,上述代码扫描装置还可以包括显示模块。显示模块,可以用于显示扫描结果的类型。
结合第二方面,在一种可能的实现方式中,显示模块,还可以用于显示第一提示窗,第一提示窗用于用户确认扫描结果被识别为扫描结果的类型是否正确。
上述代码扫描装置还可以包括接收模块。接收模块,可以用于在用户确认扫描结果被识别为扫描结果的类型不正确的情况下,接收用户对扫描结果的类型的第一修改操作。
上述代码扫描装置还可以包括修改模块。修改模块,可以用于根据第一修改操作,修改扫描结果的类型。
结合第二方面,在一种可能的实现方式中,上述代码扫描装置还可以包括存储模块。存储模块,可以用于保存修改之后的扫描结果的类型。
上述代码扫描装置还可以包括更新模块。更新模块,可以用于在修改之后的扫描结果的类型的数量大于第一预设阈值的情况下,基于修改之后的扫描结果的类型,更新扫描结果分类模型。
结合第二方面,在一种可能的实现方式中,历史扫描信息还可以包括历史扫描结果对应的处理方式。
结合第二方面,在一种可能的实现方式中,显示模块,还可以用于显示扫描结果对应的处理方式。
结合第二方面,在一种可能的实现方式中,显示模块,还可以用于显示第二提示窗,第二提示窗用于用户确认扫描结果对应的处理方式是否正确。
接收模块,还可以用于在用户确认扫描结果对应的处理方式不正确的情况下,接收用户对扫描结果对应的处理方式的第二修改操作。
修改模块,还可以用于根据第二修改操作,修改扫描结果对应的处理方式。
结合第二方面,在一种可能的实现方式中,存储模块,还可以用于保存修改之后的扫描结果对应的处理方式。
更新模块,还可以用于在修改之后的扫描结果对应的处理方式的数量大于第二预设阈值的情况下,基于修改之后的扫描结果对应的处理方式,更新扫描结果分类模型。
结合第二方面,在一种可能的实现方式中,代码扫描工具可以为静态代码扫描工具。
第三方面,提供了一种代码扫描设备,该代码扫描设备具有实现上述第一方面所述的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第四方面,提供了一种代码扫描设备,包括:处理器和存储器;该存储器用于存储计算机执行指令,当该代码扫描设备运行时,该处理器执行该存储器存储的该计算机执行指令,以使该代码扫描设备执行如上述第一方面中任一项所述的代码扫描方法。
第五方面,提供了一种代码扫描设备,包括:处理器;所述处理器用于与存储器耦合,并读取存储器中的指令之后,根据所述指令执行如上述第一方面中任一项所述的代码扫描方法。
第六方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序指令。当计算机程序指令被电子设备执行时,使得电子设备实现如第一方面或第一方面的可能的实现方式中任一项所述的代码扫描方法。
第七方面,本申请实施例提供一种计算机程序产品,包括计算机可读代码,当所述计算机可读代码在电子设备中运行时,使得电子设备实现如第一方面或第一方面的可能的实现方式中任一项所述的代码扫描方法。
第八方面,提供了一种装置(例如,该装置可以是芯片系统),该装置包括处理器,用于支持电子设备实现上述第一方面中所涉及的功能。在一种可能的设计中,该装置还包括存储器,该存储器,用于保存电子设备必要的程序指令和数据。该装置是芯片系统时,可以由芯片构成,也可以包含芯片和其他分立器件。
应当理解的是,上述第二方面至第八方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1为本申请实施例提供的代码扫描的流程示意图;
图2为本申请实施例提供的一种电子设备的硬件结构示意图;
图3为本申请实施例提供的一种代码扫描方法的流程示意图一;
图4为本申请实施例提供的一种代码扫描方法的流程示意图二;
图5为本申请实施例提供的电子设备的显示界面示意图一;
图6为本申请实施例提供的电子设备的显示界面示意图二;
图7为本申请实施例提供的电子设备的显示界面示意图三;
图8为本申请实施例提供的一种代码扫描方法的流程示意图三;
图9为本申请实施例提供的一种代码扫描方法的流程示意图四;
图10为本申请实施例提供的一种代码扫描方法的流程示意图五;
图11为本申请实施例提供的一种代码扫描装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
目前,对于开发人员编写的代码(即源代码),用户可以使用电子设备通过代码扫描工具对用户编写的源代码进行扫描,从而能够确定出该源代码是否存在漏洞,即确定该源代码是否存在问题,以及确定出源代码中存在漏洞的代码片段。在代码扫描工具确定该源代码中存在问题时,代码扫描工具可以输出源代码对应的扫描结果,该扫描结果可以包括存在问题(即漏洞)的代码片段。
代码扫描工具对源代码进行的扫描可以为静态代码扫描或者动态代码扫描。静态代码扫描,即针对开发人员编写的源代码,在不运行该源代码的情况下,仅通过分析或检查该源代码中的语法、结构、过程、接口等来检查该源代码的正确性,找出该源代码隐藏的错误和缺陷。而动态代码扫描,即针对开发人员编写的源代码,通过在源代码运行期间或源代码运行之后检查该源代码存在的问题。因此,代码扫描工具可以为静态代码扫描工具或者动态代码扫描工具。
例如,对于静态代码扫描工具而言,在用户使用电子设备通过静态代码扫描工具对开发人员编写的源代码进行扫描时,若该源代码存在漏洞(即该源代码中存在有问题的代码片段),静态代码扫描工具可以输出源代码对应的扫描结果,即源代码中存在漏洞的类型,该扫描结果可以包括存在问题的代码片段。
如图1所示,电子设备通过静态代码扫描工具扫描该代码的过程,可以包括:静态代码扫描工具可以先获取源代码、扫描规则以及软件安全漏洞库。源代码即待扫描的代码。扫描规则,即静态代码扫描工具对源代码进行扫描的内容,也就是说,扫描规则,可以确定源代码中存在的漏洞的类型。软件安全漏洞库,包括已知的软件漏洞,即软件安全漏洞库中包括已知的存在问题的代码。
在静态代码扫描工具获取到源代码之后,电子设备通过静态代码扫描工具可以根据扫描规则对源代码进行扫描,从而可以得到源代码中与扫描规则对应的一个或多个代码片段,即源代码中可能存在问题(即漏洞)的一个或多个代码片段。
在静态代码扫描工具得到源代码中与扫描规则对应的一个或多个代码片段之后,电子设备通过静态代码扫描工具可以将该一个或多个代码片段,与软件安全漏洞库中已知的软件漏洞进行匹配。
在该一个或多个代码片段中,存在与软件安全漏洞库中已知的软件漏洞匹配成功的情况下,电子设备通过静态代码扫描工具可以确定该匹配成功的代码片段为存在漏洞的代码片段,即该代码片段为软件漏洞。
在静态代码扫描工具确定出存在漏洞的一个或多个代码片段之后,电子设备通过静态代码扫描工具可以将该存在漏洞的代码片段作为扫描结果输出给用户,如安全系统架构师(system architect,SE)。在存在漏洞的代码片段为多个的情况下,静态代码扫描工具输出的扫描结果可以为多个,即每个扫描结果可以对应一个存在漏洞的代码片段。
通常,静态代码扫描工具输出的扫描结果可能会存在误报的情况,即静态代码扫描工具输出的扫描结果可能是存在漏洞的代码片段对应的扫描结果,静态代码扫描工具输出的扫描结果也可能是将没有漏洞的代码片段作为有漏洞的代码片段对应的扫描结果。因此,在静态代码扫描工具将存在漏洞的代码片段对应的扫描结果输出给用户,如安全SE时,用户需要对静态代码扫描工具输出的扫描结果进行判断,即人工确定静态代码扫描工具输出的扫描结果是软件漏洞(即存在漏洞的代码片段),还是工具误报(即不存在漏洞的代码片段,而静态代码扫描工具将该没有漏洞的代码作为有漏洞的代码片段)。
在用户确定静态代码扫描工具输出的某个扫描结果为工具误报时,用户可以屏蔽该扫描结果,即不需要对该扫描结果进行处理。
在用户确定静态代码扫描工具输出的某个扫描结果为软件漏洞时,用户可以使用电子设备将该扫描结果发送给开发人员的电子设备,从而开发人员可以对该扫描结果对应的代码片段进行修改,即开发人员可以进行漏洞修复。
可见,静态代码扫描工具输出的扫描结果不准确,即静态代码扫描工具可能会将没有漏洞的代码片段确定为有漏洞的代码片段,静态代码扫描工具存在误报的情况。也就是说,静态代码扫描工具输出的扫描结果,可能是存在漏洞的代码片段,也可能是静态代码扫描工具的误报,即将没有漏洞的代码片段确定为有漏洞的代码片段。这就导致代码扫描的扫描结果准确性较低。且用户需要人工确定静态代码扫描工具输出的扫描结果是存在漏洞的代码片段,还是静态代码扫描工具的误报。这就导致代码扫描的效率较低。
针对上述问题,本申请实施例提供一种代码扫描方法,应用于电子设备,该方法可以通过电子设备获取静态代码扫描工具的历史扫描信息,历史扫描信息可以包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则以及历史扫描结果对应的类型(即历史扫描结是工具误报或软件漏洞),并根据历史扫描信息进行模型训练,得到扫描结果的分类模型。在电子设备获取到静态代码扫描工具对源代码(本申请实施例中可以称为第一代码)的扫描结果时,电子设备可以根据该第一代码的扫描结果、第一代码的扫描结果对应的代码片段、第一代码的扫描结果对应的扫描规则,以及扫描结果的分类模型,得到第一代码的扫描结果的对应的类型,即第一代码的扫描结果对应的代码片段是工具误报,还是软件漏洞。
本申请的方案通过第一代码的扫描结果对应的代码片段,扫描结果对应的扫描规则,以及扫描结果的分类模型,能够得到第一代码对应的静态代码扫描工具输出的扫描结果的类型,即第一代码的扫描结果是工具误报还是软件漏洞,从而不需要人工确定静态代码扫描工具输出的扫描结果是存在问题的代码片段,还是静态代码扫描工具的误报,即不需要人工确定静态代码扫描工具输出的扫描结果的类型,从而能够提高使用静态代码扫描工具等代码扫描工具扫描结果的准确性以及代码扫描的效率。
下面对本申请实施例提供的代码扫描方法进行描述。
本申请实施例提供的代码扫描方法可以应用于电子设备。在一些示例中,该电子设备可以是笔记本电脑、平板电脑、手持计算机, PC,个人数字助理(personal digitalassistant,PDA),可穿戴式设备等包括代码扫描工具的电子设备。本申请实施例在此对电子设备的具体形态不做限制。
代码扫描工具,可以包括静态代码扫描工具和动态代码扫描工具。本申请实施例中是以代码扫描工具为静态代码扫描工具为例进行示意说明。
静态代码扫描工具,即可以对代码进行静态代码扫描的应用程序。例如,静态代码扫描工具可以是探伤者flawfinder、扫描码TscanCode、声纳曲Sonarqube等工具。本申请实施例在此对静态代码扫描工具的具体类型不做限制。
动态代码扫描工具,即可以对代码进行动态代码扫描的应用程序。例如,动态代码扫描工具可以是动态追踪工具ollydbg、动态分析工具CocoaSanitizer、安卓动态分析工具Inspeckage等工具。本申请实施例在此对动态代码扫描工具的具体类型不做限制。
在另一些示例中,该电子设备也可以为云端设备,例如服务器,该服务器可以包括代码扫描工具,如静态代码扫描工具。在该电子设备为服务器时,开发人员可以在本地电脑上编写源代码,并将编写的源代码发送给服务器,从而服务器可以通过静态代码扫描工具,对开发人员编写的源代码进行扫描。在服务器得到开发人员编写的源代码的对应的静态代码扫描工具的扫描结果时,服务器可以将静态代码扫描工具的扫描结果发送给开发人员对应的本地电脑。
示例地,以电子设备为笔记本电脑为例,图2示出了本申请实施例提供的一种电子设备的结构示意图。
如图2所示,该电子设备(即笔记本电脑)可以包括:处理器210,风扇211,外部存储器接口220,内部存储器221,通用串行总线(universal serial bus,USB)接口230,充电管理模块240,电源管理模块241,电池242,显示屏250,天线,无线通信模块260,音频模块270,扬声器(即喇叭)270A,麦克风270C,耳机接口270B,触控板280,键盘290,以及摄像头291等。
其中,上述除显示屏250之外的其他器件(如处理器210,风扇211,外部存储器接口220,内部存储器221,USB接口230,充电管理模块240,电源管理模块241,电池242,天线,无线通信模块260,音频模块270,触控板280,扬声器270A,麦克风270C,耳机接口270B,键盘290和摄像头291等)均可以设置在笔记本电脑的底座。上述摄像头291还可设置于笔记本电脑的显示屏250的边框上。
可以理解的是,本实施例示意的结构并不构成对笔记本电脑的具体限定。在另一些实施例中,笔记本电脑可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器210可以包括一个或多个处理单元,例如:处理器210可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以是笔记本电脑的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器210中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器210中的存储器为高速缓冲存储器。该存储器可以保存处理器210刚用过或循环使用的指令或数据。如果处理器210需要再次使用该指令或数据,可从存储器中直接调用。避免了重复存取,减少了处理器210的等待时间,因而提高了系统的效率。
在一些实施例中,处理器210可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对笔记本电脑的结构限定。在另一些实施例中,笔记本电脑也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块240用于从充电器(如无线充电器或有线充电器)接收充电输入,为电池242充电。笔记本电脑的无线通信功能可以通过天线和无线通信模块260,调制解调处理器以及基带处理器等实现。
天线用于发射和接收电磁波信号。笔记本电脑中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。
在一些实施例中,笔记本电脑的天线和无线通信模块260耦合,使得笔记本电脑可以通过无线通信技术与网络以及其他设备通信。无线通信模块260可以提供应用在笔记本电脑上的包括无线局域网(wireless local area networks,WLAN)(如Wi-Fi网络,蓝牙(blue tooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。
笔记本电脑可以通过GPU,显示屏250,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏250和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器210可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。显示屏250用于显示图像,视频等。
笔记本电脑可以通过ISP,摄像头291,视频编解码器,GPU,显示屏250以及应用处理器等实现拍摄功能。ISP 用于处理摄像头291反馈的数据。在一些实施例中,ISP可以设置在摄像头291中。摄像头291用于捕获静态图像或视频。在一些实施例中,笔记本电脑可以包括1个或N个摄像头291,N为大于1的正整数。
外部存储器接口220可以用于连接外部存储卡,例如Micro SD卡,实现扩展笔记本电脑的存储能力。内部存储器221可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器210通过运行存储在内部存储器221的指令,从而执行笔记本电脑的各种功能应用以及数据处理。例如,在本申请实施例中,处理器210可以通过执行存储在内部存储器221中的指令,内部存储器221可以包括存储程序区和存储数据区。
笔记本电脑可以通过音频模块270,扬声器270A,麦克风270C,耳机接口270B,以及应用处理器等实现音频功能。例如音乐播放,录音等。
当然,可以理解的,上述图2所示仅仅为电子设备的形态为笔记本电脑时的示例性说明。若电子设备是手持计算机,PDA,个人计算机、服务器等其他设备形态时,电子设备的结构中可以包括比图2中所示更少的结构,也可以包括比图2中所示更多的结构,在此不作限制。
以下实施例中的方法均可以在具有上述硬件结构的电子设备中实现。本申请实施例中以电子设备为笔记本电脑为例进行示意说明。
以下对本申请实施例提供的代码扫描方法进行详细说明。其中,在本实施例中,该方法可以包括:“分类模型建立”流程和“代码扫描”流程。
如图3所示,“分类模型建立”流程可以包括以下S301-S304。
S301、电子设备获取静态代码扫描工具的历史扫描信息。
本申请的方案可以通过电子设备根据静态代码扫描工具的历史扫描信息进行模型训练,得到静态代码扫描工具的扫描结果分类模型。因此,在电子设备根据静态代码扫描工具的历史扫描信息进行模型训练,得到扫描结果分类模型之前,电子设备可以获取静态代码扫描工具的历史扫描信息。
在一些示例中,电子设备可以获取预设时间段内电子设备使用静态代码扫描工具对开发人员编写的源代码进行扫描的历史扫描信息。该预设时间段可以根据实际情况设定,本申请实施例中对此并不进行限定,例如,预设时间段可以为一年。
静态代码扫描工具的历史扫描信息,即电子设备使用静态代码扫描工具对开发人员编写的源代码已进行静态扫描得到的扫描信息。
在一些示例中,静态代码扫描工具的历史扫描信息可以包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则以及历史扫描结果对应的类型。历史扫描结果对应的类型,可以包括软件漏洞或者工具误报。在历史扫描结果对应的类型为软件漏洞时,即该历史扫描结果对应的代码片段为存在漏洞的代码片段。在历史扫描结果对应的类型为工具误报时,即该历史扫描结果对应的代码片段为不存在漏洞的代码片段,而静态代码扫描工具误认为该代码片段存在漏洞。
代码片段,即开发人员编写的代码(即源代码)中与扫描规则相对应的代码片段。扫描结果对应的代码片段,即在静态代码扫描工具按照扫描规则对源代码进行扫描,在确定源代码中存在与扫描规则对应的代码片段时,该与扫描规则对应的代码片段,即为扫描结果对应的代码片段。历史扫描结果,即源代码中存在漏洞(即问题)的代码片段的漏洞类型。历史扫描结果可以为多个,即历史扫描结果对应的代码片段也可以为多个,历史扫描结果对应的扫描规则也可以为多个,历史扫描结果对应的类型也可以为多个。
扫描规则,即对源代码进行扫描的内容,也就是说,扫描规则即确定代码存在的漏洞类型。扫描规则可以包括一个或多个规则,不同的静态代码扫描工具对应的扫描规则可以不同。扫描结果与扫描规则相对应,即根据不同的扫描规则可以得到不同的扫描结果。扫描规则还可以包括对源代码进行哪些方面的扫描,比如漏洞扫描、复杂度扫描、重复度扫描等。扫描规则还可以规定具体进行哪些扫描项目,比如漏洞扫描中具体包括扫描哪些漏洞项,用户也可以预先设置扫描的顺序、扫描的等级等。
扫描规则可以包括DIVIDE_BY_ZERO(除以零),即确定开发人员编写的源代码中是否包括除以零的隐患。如,在电子设备通过静态代码扫描工具,确定开发人员编写的源代码中包括除以零的代码片段时,静态代码扫描工具可以输出扫描规则为除以零对应的扫描结果。
例如,在扫描规则为DIVIDE_BY_ZERO(除以零)时,电子设备通过静态代码扫描工具,可以确定在开发人员编写的源代码中存在的代码片段为:if(totalCustomers%pageSize==0)pageTotal=totalCustomers/pageSize;else pageTotal=totalCustomers/pageSize+1,即整数页总计=客户页面总大小=客户总数/页面大小:客户总数/页面大小+1。电子设备通过静态代码扫描工具以及软件安全漏洞库,可以确定该代码片段是存在除以零的隐患的代码片段。
电子设备可以通过静态代码扫描工具,输出扫描结果为:divide_by_zero:Inexpression"totalCustomers%pageSize",modulo by expression"page Size"which maybe zero results in an exception,即除以零:在表达式“总客户页面大小”中,对可能为零的表达式“页面大小”取模会导致异常。
该扫描结果对应的扫描规则为除以零,该扫描结果对应的代码片段为if(totalCustomers%pageSize==0)pageTotal=totalCustomers/pageSize;else pageTotal=totalCustomers/pageSize+1,该扫描结果对应的类型为软件漏洞,即该扫描结果对应的代码片段为存在漏洞的代码片段。
也就是说,在扫描规则为DIVIDE_BY_ZERO(除以零)时,对应的历史扫描信息可以包括历史扫描结果(即在表达式“总客户页面大小”中,对可能为零的表达式“页面大小”取模会导致异常)、历史扫描结果对应的代码片段(即if(totalCustomers%pageSize==0)pageTotal=totalCustomers/pageSize;else pageTotal=totalCustomers/pageSize+1)、历史扫描结果对应的扫描规则(即DIVIDE_BY_ZERO(除以零))以及历史扫描结果对应的类型(即软件漏洞)。
扫描规则还可以包括数组下标越界隐患(即确定源代码中是否存在数组下标越界),系统API兼容性隐患(即确定源代码中是否存在API不兼容)、使用除法或求余没有判断分母长度隐患(即确定源代码中是否存在除法或求余分母长度过长)等规则。本申请实施例中对扫描规则的具体类型并不进行限定,可以根据实际情况进行限定。
在另一些示例中,静态代码扫描工具的历史扫描信息还可以包括历史扫描结果对应的处理方式,即在历史扫描结果对应的类型为软件漏洞时,对历史扫描结果对应的代码片段的处理方式,如对历史扫描结果对应的代码片段的修改方式。
例如,继续以扫描规则为DIVIDE_BY_ZERO(除以零)为例,电子设备通过静态代码扫描工具,可以确定在开发人员编写的源代码中存在的代码片段为:if(totalCustomers%pageSize==0)pageTotal=totalCustomers/pageSize;else pageTotal=totalCustomers/pageSize+1。电子设备通过静态代码扫描工具,可以确定该代码片段存在除以零的隐患。
电子设备可以通过静态代码扫描工具,输出扫描结果为:divide_by_zero:Inexpression"totalCustomers%pageSize",modulo by expression"page Size"which maybe zero results in an exception。
该扫描结果对应的扫描规则为除以零,该扫描结果对应的代码片段为if(totalCustomers%pageSize==0)pageTotal=totalCustomers/pageSize;else pageTotal=totalCustomers/pageSize+1,该扫描结果对应的类型为软件漏洞,即该扫描结果对应的代码片段为存在漏洞的代码片段。
开发人员对该代码片段的处理方式,可以为修改代码,即将代码修改为在进行除法之前,对被除数是否为零进行判断。
也就是说,在扫描规则为DIVIDE_BY_ZERO(除以零)时,对应的历史扫描信息可以包括历史扫描结果(即在表达式“总客户页面大小”中,对可能为零的表达式“页面大小”取模会导致异常)、历史扫描结果对应的代码片段(即if(totalCustomers%pageSize==0)pageTotal=totalCustomers/pageSize;else pageTotal=totalCustomers/pageSize+1)、历史扫描结果对应的扫描规则(即DIVIDE_BY_ZERO(除以零))、历史扫描结果对应的类型(即软件漏洞),以及历史扫描结果对应的处理方式(即修改代码,即将代码修改为在进行除法之前,对被除数是否为零进行判断)。
S302、电子设备根据历史扫描信息,获取训练样本数据。
在电子设备获取到静态代码扫描工具的历史扫描信息之后,电子设备可以根据历史扫描信息,获取训练样本数据。训练样本数据可以用于获取训练样本数据对应的特征向量,从而可以基于训练样本数据对应的特征向量进行模型训练,得到静态代码扫描工具扫描结果的分类模型。
在一些示例中,在电子设备获取到静态代码扫描工具的历史扫描信息之后,电子设备可以对历史扫描信息进行分类整理,将每个历史扫描结果以及该历史扫描结果对应的代码片段、该历史扫描结果对应的扫描规则、历史扫描结果对应的类型,作为该历史扫描结果对应的原始数据对,从而得到训练样本数据。
即训练样本数据,可以包括多个原始数据对,也可以称为键值对。原始数据对可以包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则,以及历史扫描结果对应的类型。
在一些示例中,原始数据对,可以为按历史扫描结果、该历史扫描结果对应的代码片段、该历史扫描结果对应的扫描规则,对应该历史扫描结果对应的类型方式进行存储。即原始数据对的表达式可以为:(历史扫描结果、该历史扫描结果对应的代码片段、该历史扫描结果对应的扫描规则)<->该历史扫描结果对应的类型。
在另一些示例中,原始数据对还可以包括历史扫描结果对应的处理方式,如对历史扫描规则对应的代码片段的修改方式。
S303、电子设备根据训练样本数据,获取训练样本数据对应的特征向量。
在电子设备获取到训练样本数据之后,电子设备可以根据训练样本数据,获取训练样本数据对应的特征向量。训练样本数据对应的特征向量可以用于模型训练,从而得到扫描结果的分类模型。
在一些示例中,在训练样本数据包括多个原始数据对时,电子设备可以对每个原始数据对进行特征提取,从而得到每个原始数据对对应的特征向量。
例如,电子设备可以对每个原始数据对使用词向量模型(word2vector)中的连续词袋模型(continuous bag-of-words model,CBOW)、 词频-逆文档频率(term frequency-inverse document frequency,TF-IDF)等方式,将自然语言转换为对应的特征向量。
在一些示例中,在原始数据对的表达式可以为:(历史扫描结果、该历史扫描结果对应的代码片段、该历史扫描结果对应的扫描规则)<->该历史扫描结果对应的类型时,原始数据对对应的特征向量,可以为特征向量对,即原始数据对对应的特征向量对可以包括特征向量以及类别向量,表达式可以为原始数据对对应的特征向量对:特征向量<->类别向量。该特征向量即原始数据对中历史扫描结果、该历史扫描结果对应的代码片段以及该历史扫描结果对应的扫描规则进行特征提取得到的向量,特征向量的维度可以为n。该类别向量即原始数据对中历史扫描结果对应的类型进行特征提取得到的向量,该类别向量的维度可以为k,即类别向量可以为k维one-hot向量。
例如,以电子设备通过TF-IDF方式,对每个原始数据对进行特征提取,从而得到每个原始数据对对应的特征向量为例,电子设备可以首先计算每个词频TF,词频TF为某个词在文章中的出现次数,即计算该词在原始数据对中的出现次数。考虑到文章(即原始数据对)有长短之分,为了便于不同文章的比较,电子设备可以对"词频"进行标准化,即词频TF=某个词在文章中的出现次数/文章的总词数。
之后,电子设备可以计算每个词的逆文档词频IDF,逆文档词频IDF= log(语料库的文档总数/(包含该词的文档数+1)),语料库(corpus)用来模拟语言的使用环境。如果一个词在文章中越常见,那么分母就越大,逆文档词频IDF就越小越接近0。分母之所以要加1,是为了避免分母为0(即所有文档都不包含该词)。log表示对得到的值取对数。
之后,计算每个词的TF-IDF,IT-IDF= 词频(TF)* 逆文档频率(IDF)。TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比。电子设备计算出文档(即原始数据对)的每个词的TF-IDF值,然后按降序排列,取排在最前面的几个词。
最终,电子设备得到的原始数据对对应的特征向量对中,特征向量可以为:[0,0.1,0,0.002,0.3,…,0] ,即特征向量可以为 n 维向量。电子设备得到的原始数据对对应的特征向量对中,类别向量可以为:[0,1,0,…,0],即类别向量可以为k 维one-hot向量。
在另一些示例中,在原始数据对还可以包括历史扫描结果对应的处理方式,如对历史扫描规则对应的代码片段的修改方式时,原始数据对对应的特征向量包括历史扫描结果对应的处理方式对应的特征向量。在原始数据对还可以包括历史扫描结果对应的处理方式时,电子设备获取原始数据对对应的特征向量与上述获取原始数据对对应的特征向量的方式(即原始数据对包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则,以及历史扫描结果对应的类型时,电子设备获取原始数据对对应的特征向量)相同。
S304、电子设备基于训练样本数据对应的特征向量进行模型训练,获取静态代码扫描工具扫描结果的分类模型。
在电子设备得到训练样本数据对应的特征向量之后,电子设备可以基于训练样本数据对应的特征向量进行模型训练,从而能够获取到静态代码扫描工具扫描结果的分类模型。
在一些示例中,在电子设备得到训练样本数据对应的特征向量之后,电子设备可以基于训练样本数据对应的特征向量,对机器学习算法,也可以称为深度学习模型或者强化学习模型进行训练,从而得到静态代码扫描工具扫描结果的分类模型。
例如,在训练样本数据对应的特征向量为原始数据对对应的特征向量对时,可以将原始数据对对应的特征向量对作为输入数据输入到机器学习算法中,经过卷积、池化、卷积、池化、全连接的训练过程,可以得到静态代码扫描工具扫描结果的分类模型。
在一些示例中,机器学习算法,可以为 深度卷积神经网络(Visual GeometryGroup Network,VGG)模型。机器学习算法,还可以为其他模型,本申请实施例中对此并不进行限定。
在一些示例中,在电子设备得到训练样本数据对应的特征向量之后,电子设备可以将到训练样本数据对应的特征向量,分为训练集、测试集以及验证集。也就是说,训练集中包括的训练样本数据对应的特征向量,可以用于对机器学习算法进行模型训练,从而得到静态代码扫描工具扫描结果的分类模型。测试集中包括的训练样本数据对应的特征向量,可以用于对利用训练集得到的静态代码扫描工具扫描结果的分类模型,进行测试。验证集中包括的训练样本数据对应的特征向量,可以用于对利用训练集得到的静态代码扫描工具扫描结果的分类模型,进行验证。
在电子设备利用验证集中包括的训练样本数据对应的特征向量,对静态代码扫描工具扫描结果的分类模型,进行验证时,电子设备可以统计静态代码扫描工具扫描结果的分类模型输出结果的正确率,在静态代码扫描工具扫描结果的分类模型输出结果的正确率大于或等于预设阈值时,电子设备可以将该分类模型作为结果推荐的基础版本。在静态代码扫描工具扫描结果的分类模型输出结果的正确率小于预设阈值时,电子设备可以继续对该分类模型进行训练。
由于静态代码扫描工具对应的扫描规则可以包括多个规则,且不同的静态代码扫描工具对应的扫描规则不同,因此,电子设备针对多个扫描规则训练一个静态代码扫描工具扫描结果的分类模型,会导致电子设备的负荷较大,且得到的静态代码扫描工具扫描结果的分类模型输出的结果会存在准确性较低的问题。为了提高静态代码扫描工具扫描结果的分类模型输出结果的准确性,电子设备可以针对每个扫描规则进行模型训练,从而得到每个扫描规则对应的静态代码扫描工具扫描结果的分类模型。
在一些示例中,在电子设备基于训练样本数据对应的特征向量进行模型训练之前,电子设备可以将训练样本数据对应的特征向量按照扫描规则进行分类,从而得到每一个扫描规则对应的训练样本数据对应的特征向量。例如,电子设备可以将训练样本数据中扫描规则相同的原始数据对为同一类型的训练样本数据,从而能够根据扫描规则相同的原始数据对得到该扫描规则对应的训练样本数据对应的特征向量。
在电子设备获取到每个扫描规则对应的训练样本数据对应的特征向量之后,电子设备可以基于该扫描规则对应的训练样本数据对应的特征向量进行训练,从而得到该扫描规则对应的静态代码扫描工具扫描结果的分类模型,也可以称为该扫描规则对应的智能体。也就是说,该扫描规则对应的静态代码扫描工具扫描结果的分类模型,可以用于对该扫描规则对应的扫描结果进行分类。
例如,继续以扫描规则为DIVIDE_BY_ZERO(除以零)为例,电子设备在获取到静态代码扫描工具的历史扫描信息,并根据历史扫描信息,获取到训练样本数据(即多个原始数据对)之后,电子设备可以将训练样本数据中扫描规则为DIVIDE_BY_ZERO(除以零)的原始数据对,作为扫描规则DIVIDE_BY_ZERO(除以零)对应的训练样本数据。之后,电子设备可以根据扫描规则DIVIDE_BY_ZERO(除以零)对应的训练样本数据,获取训练样本数据对应的特征向量,并基于训练样本数据对应的特征向量进行模型训练,从而得到扫描规则DIVIDE_BY_ZERO(除以零)对应的静态代码扫描工具扫描结果的分类模型。
然而,在静态代码扫描工具对应的扫描规则较多时,电子设备针对每个的扫描规则进行模型训练,从而得到每个扫描规则对应的静态代码扫描工具扫描结果的分类模型,也会造成电子设备的负载较大,因此,电子设备可以针对多个的扫描规则中扫描规则组合进行模型训练,从而得到该扫描规则组合对应的静态代码扫描工具扫描结果的分类模型,即电子设备可以得到多个智能体。如,电子设备可以针对多个扫描规则中任意两个扫描规则(即扫描规则组合包括两个扫描规则),进行模型训练,从而得到该两个扫描规则对应的静态代码扫描工具扫描结果的分类模型。
在一些示例中,在电子设备基于训练样本数据对应的特征向量进行模型训练之前,电子设备可以将训练样本数据对应的特征向量按照扫描规则组合进行分类,从而得到每一个扫描规则组合对应的训练样本数据对应的特征向量。例如,电子设备可以将训练样本数据中任意两个或者多个扫描规则作为一个扫描规则组合,即该扫描规则组合对应的原始数据对作为同一类型的训练样本数据,从而能够根据该扫描规则组合对应的原始数据对得到该扫描规则组合对应的训练样本数据对应的特征向量。
在电子设备获取到每个扫描规则组合对应的训练样本数据对应的特征向量之后,电子设备可以基于该扫描规则组合对应的训练样本数据对应的特征向量进行训练,从而得到该扫描规则组合对应的静态代码扫描工具扫描结果的分类模型,也可以称为该扫描规则组合对应的智能体。也就是说,该扫描规则组合对应的静态代码扫描工具扫描结果的分类模型,可以用于对该扫描规则组合中每个扫描规则对应的扫描结果进行分类。
例如,继续以扫描规则为DIVIDE_BY_ZERO(除以零)为例,电子设备在获取到静态代码扫描工具的历史扫描信息,并根据历史扫描信息,获取到训练样本数据(即多个原始数据对)之后,电子设备可以将训练样本数据中扫描规则为DIVIDE_BY_ZERO(除以零)的原始数据对,作为扫描规则DIVIDE_BY_ZERO(除以零)对应的训练样本数据。之后,电子设备可以根据扫描规则DIVIDE_BY_ZERO(除以零)对应的训练样本数据,获取训练样本数据对应的特征向量,并基于训练样本数据对应的特征向量进行模型训练,从而得到扫描规则DIVIDE_BY_ZERO(除以零)对应的静态代码扫描工具扫描结果的分类模型。
例如,在扫描规则包括DIVIDE_BY_ZERO(除以零)以及数组下标越界隐患时,电子设备可以将其作为一个扫描规则组合。电子设备在获取到静态代码扫描工具的历史扫描信息,并根据历史扫描信息,获取到训练样本数据(即多个原始数据对)之后,电子设备可以将训练样本数据中扫描规则为DIVIDE_BY_ZERO(除以零)的原始数据对,以及扫描规则为数组下标越界隐患的原始数据对,作为扫描规则组合对应的训练样本数据。
之后,电子设备可以根据扫描规则组合对应的训练样本数据,获取训练样本数据对应的特征向量,并基于训练样本数据对应的特征向量进行模型训练,从而得到扫描规则组合对应的静态代码扫描工具扫描结果的分类模型。即该扫描规则组合对应的静态代码扫描工具扫描结果的分类模型,可以用于对扫描规则为DIVIDE_BY_ZERO(除以零)或者数组下标越界隐患对应的静态代码扫描工具的扫描结果进行分类。
需要说明的是,在静态代码扫描工具的历史扫描信息包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则以及历史扫描结果对应的类型的情况下,电子设备根据历史扫描信息,获取到的训练样本数据可以包括多个原始数据对,即历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则,以及历史扫描结果对应的类型。
电子设备根据训练样本数据,获取训练样本数据对应的特征向量,即包括历史扫描结果对应的特征向量、历史扫描结果对应的代码片段对应的特征向量、历史扫描结果对应的扫描规则对应的特征向量,以及历史扫描结果对应的类型对应的特征向量。因此,电子设备基于训练样本数据对应的特征向量进行模型训练,获取到的静态代码扫描工具扫描结果的分类模型,可以输出静态代码扫描工具的扫描结果的类别,即静态代码扫描工具扫描结果的分类模型可以对静态代码扫描工具的扫描结果的类别进行预测。
在静态代码扫描工具的历史扫描信息包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则、历史扫描结果对应的类型以及历史扫描结果的处理方式的情况下,电子设备根据历史扫描信息,获取到的训练样本数据可以包括多个原始数据对,即历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则、历史扫描结果对应的类型以及历史扫描结果的处理方式。
电子设备根据训练样本数据,获取训练样本数据对应的特征向量,即包括历史扫描结果对应的特征向量、历史扫描结果对应的代码片段对应的特征向量、历史扫描结果对应的扫描规则对应的特征向量、历史扫描结果对应的类型对应的特征向量,以及历史扫描结果的处理方式对应的特征向量。因此,电子设备基于训练样本数据对应的特征向量进行模型训练,获取到的静态代码扫描工具扫描结果的分类模型,不仅可以输出静态代码扫描工具的扫描结果的类别,还可以输出扫描结果对应的处理方式,即静态代码扫描工具扫描结果的分类模型不仅可以对静态代码扫描工具的扫描结果的类别进行预测,还可以对扫描结果对应的处理方式进行预测。
在电子设备获取到静态代码扫描工具扫描结果的分类模型之后,电子设备可以利用静态代码扫描工具扫描结果的分类模型,对静态代码扫描工具的扫描结果进行分类,即通过静态代码扫描工具扫描结果的分类模型,确定静态代码扫描工具的扫描结果的类型是软件漏洞刚还是工具误报。
具体的,该过程可以称为“代码扫描”流程。如图4所示,该“代码扫描”流程可以包括以下S401-S408。
S401、电子设备获取静态代码扫描工具对第一代码的第一扫描结果。
在电子设备获取到静态代码扫描工具扫描结果的分类模型之后,电子设备可以通过静态代码扫描工具对开发人员编写的代码(如称为第一代码,也可以称为源代码)进行静态扫描,从而得到第一代码的扫描结果(如称为第一扫描结果)。
电子设备在通过静态代码扫描工具对第一代码进行扫描时,静态代码扫描工具可以使用多个扫描规则对第一代码进行扫描,因此,电子设备通过静态代码扫描工具对第一代码的扫描结果可以为多个,也就是说,第一扫描结果可以为电子设备通过静态代码扫描工具对第一代码进行扫描时,得到的多个扫描结果中的任意一个。
在电子设备通过静态代码扫描工具对第一代码进行扫描时,得到多个扫描结果时,每个扫描结果可以与多个扫描规则中的一个扫描规则相对应。即第一扫描结果,可以与多个扫描规则中的一个扫描规则相对应,如称为第一扫描规则。也就是说,第一扫描结果,即第一代码中存在与第一扫描规则相对应的代码片段,如称为第一代码片段。即第一代码片段是第一代码中存在问题代码片段。
S402、电子设备根据第一扫描结果,获取第一扫描结果对应的第一样本数据。
在电子设备获取到静态代码扫描工具对第一代码的第一扫描结果之后,电子设备可以第一扫描结果,获取第一扫描结果对应的样本数据。第一扫描结果对应的样本数据,可以用于获取第一样本数据对应的特征向量,从而可以基于样本数据对应的特征向量,以及静态代码扫描工具扫描结果的分类模型,得到扫描结果的分类结果。
第一样本数据,可以包括第一扫描结果,第一扫描结果对应的代码片段,第一扫描结果对应的扫描规则。
第一扫描结果对应的扫描规则,即电子设备通过静态代码扫描工具对第一代码进行扫描时,得到第一扫描结果时,使用的扫描规则,如称为第一扫描规则。
第一扫描结果对应的代码片段,即电子设备通过静态代码扫描工具对第一代码进行扫描时,得到第一扫描结果时,第一代码中对应的代码片段,如称为第一代码片段,即第一代码片段是第一代码中存在问题代码片段。
S403、电子设备根据第一样本数据,获取第一样本数据对应的特征向量。
在电子设备获取到第一样本数据之后,电子设备可以根据第一样本数据,获取第一样本数据对应的特征向量。第一样本数据对应的特征向量可以用于输入到静态代码扫描工具扫描结果的分类模型中,得到第一扫描结果的分类结果,即第一扫描结果的类型,如软件漏洞或工具误报。
在一些示例中,电子设备可以对第一样本数据使用词向量模型中的连续词袋模型CBOW、 词频-逆文档频率TF-IDF等方式,将自然语言转换为对应的特征向量。
电子设备根据第一样本数据,获取第一样本数据对应的特征向量,可以参考上述S303中的实施方式。本申请实施例在此不再赘述。
S404、电子设备基于第一样本数据对应的特征向量以及静态代码扫描工具扫描结果的分类模型,确定第一扫描结果的类型。
在电子设备获取到第一样本数据对应的特征向量之后,电子设备可以基于第一样本数据对应的特征向量以及静态代码扫描工具扫描结果的分类模型,确定待第一扫描结果的类型,即第一扫描结果的分类结果。
第一扫描结果的类型可以包括软件漏洞或工具误报。在第一扫描结果的类型为软件漏洞时,即第一扫描结果对应的第一代码片段是存在问题(即漏洞)的代码片段。在第一扫描结果的类型为工具误报时,即第一扫描结果对应的第一代码片段是不存在问题(即漏洞)的代码片段,而静态代码扫描工具误认为第一代码片段存在问题。
在一些示例中,在静态代码扫描工具扫描结果的分类模型是根据扫描规则对应的训练样本数据对应的特征向量进行训练,从而得到该扫描规则对应的静态代码扫描工具扫描结果的分类模型时,即静态代码扫描工具扫描结果的分类模型可以包括第一扫描规则对应的分类模型。即电子设备基于第一样本数据对应的特征向量以及静态代码扫描工具扫描结果的分类模型,确定第一扫描结果的类型,可以为电子设备将第一样本数据对应的特征向量输入到第一扫描规则对应的分类模型,从而能够得到第一扫描结果的类型。
在另一些示例中,在静态代码扫描工具扫描结果的分类模型是根据扫描规则组合对应的训练样本数据对应的特征向量进行训练,从而得到该扫描规则组合对应的静态代码扫描工具扫描结果的分类模型时,即静态代码扫描工具扫描结果的分类模型可以包括多个扫描规则对应的分类模型。也就是说,第一扫描规则可以为多个扫描规则组合中的扫描规则,从而第一扫描规则对应的分类模型,可以为多个,即第一扫描规则可以对应多个智能体。
电子设备基于第一样本数据对应的特征向量以及静态代码扫描工具扫描结果的分类模型,确定第一扫描结果的类型,可以为电子设备将第一样本数据对应的特征向量输入到多个第一扫描规则对应的分类模型,从而能够得到多个第一扫描结果的类型。
在电子设备得到多个第一扫描结果的类型之后,电子设备可以确定每个第一扫描结果的类型对应的置信度,并将每个第一扫描结果的类型对应的置信度按照置信度从高到低进行排列,从而将置信度最高的第一扫描结果的类型作为最终的第一扫描结果的类型,并输出给用户。
在电子设备得到多个第一扫描结果的类型之后,电子设备也可以使用投票方法,获取第一扫描结果的类型。即电子设备可以将多个第一扫描结果的类型进行分类,并统计每个分类对应的第一扫描结果的类型的数量,电子设备可以将数量最多的第一扫描结果的类型作为最终的第一扫描结果的类型,并输出给用户。
需要说明的是,在静态代码扫描工具扫描结果的分类模型是根据历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则以及历史扫描结果对应的类型进行模型训练得到时,电子设备基于第一样本数据对应的特征向量以及静态代码扫描工具扫描结果的分类模型,可以确定出第一扫描结果的类型,即第一扫描结果对应的第一代码片段是软件漏洞还是工具误报。
在静态代码扫描工具扫描结果的分类模型是根据历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则、历史扫描结果对应的类型以及历史扫描结果的处理方式(即在历史扫描结果对应的类型为软件漏洞时,对历史扫描结果对应的代码片段的处理方式,如修改方式)进行模型训练得到时,电子设备基于第一样本数据对应的特征向量以及静态代码扫描工具扫描结果的分类模型,不仅可以确定出第一扫描结果的类型,即第一扫描结果是软件漏洞还是工具误报。电子设备还可以确定出第一扫描结果对应的处理方式,如对第一扫描结果对应的第一代码片段如何进行修改。
在一些示例中,在静态代码扫描工具扫描结果的分类模型是根据扫描规则对应的训练样本数据对应的特征向量进行训练,且扫描规则对应的训练样本数据包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则、历史扫描结果对应的类型以及历史扫描结果的处理方式,从而静态代码扫描工具扫描结果的分类模型可以包括第一扫描规则对应的分类模型。即电子设备基于第一样本数据对应的特征向量以及静态代码扫描工具扫描结果的分类模型,确定第一扫描结果的类型,还可以确定第一扫描结果对应的处理方式。
在另一些示例中,在静态代码扫描工具扫描结果的分类模型是根据扫描规则组合对应的训练样本数据对应的特征向量进行训练,且扫描规则组合对应的训练样本数据包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则、历史扫描结果对应的类型以及历史扫描结果的处理方式,从而得到该扫描规则组合对应的静态代码扫描工具扫描结果的分类模型时,即静态代码扫描工具扫描结果的分类模型可以包括多个扫描规则对应的分类模型。也就是说,第一扫描规则对应的分类模型,可以为多个。
电子设备基于第一样本数据对应的特征向量以及静态代码扫描工具扫描结果的分类模型,确定第一扫描结果的类型时,还可以确定多个第一扫描结果对应的处理方式。
在电子设备得到多个第一扫描结果对应的处理方式之后,电子设备可以确定每个第一扫描结果对应的处理方式对应的置信度,并将每个第一扫描结果对应的处理方式对应的置信度按照置信度从高到低进行排列,从而将置信度最高的第一扫描结果对应的处理方式作为最终的第一扫描结果对应的处理方式,并输出给用户。
在电子设备得到多个第一扫描结果对应的处理方式之后,电子设备也可以使用投票方法,获取第一扫描结果对应的处理方式。即电子设备可以将多个第一扫描结果对应的处理方式进行分类,并统计每个分类对应的第一扫描结果对应的处理方式的数量,电子设备可以将数量最多的第一扫描结果的类型作为最终的第一扫描结果对应的处理方式,并输出给用户。
S405、电子设备显示第一扫描结果的类型。
在电子设备获取到第一扫描结果的类型之后,电子设备可以显示第一扫描结果的类型,从而可以根据第一扫描结果对应的类型,对第一扫描结果进行不同的处理。例如,在第一扫描结果的类型为工具误报时,可以不对第一扫描结果进行处理,如屏蔽该扫描结果。在第一扫描结果的类型为软件漏洞时,可以对第一扫描结果对应的第一代码片段进行修改。
在一些示例中,在电子设备显示第一扫描结果的类型的同时,电子设备还可以显示第一扫描结果对应的代码片段(即第一代码片段),第一扫描结果对应的扫描规则(即第一扫描规则)。
例如,继续以扫描规则为DIVIDE_BY_ZERO(除以零)为例,即第一扫描规则为DIVIDE_BY_ZERO(除以零)。电子设备通过静态代码扫描工具,使用扫描规则为DIVIDE_BY_ZERO(除以零)对第一代码进行扫描,在第一代码中存在与第一扫描规则相对应的代码片段(即第一代码片段),即if(totalCustomers%pageSize==0)pageTotal=totalCustomers/pageSize;else pageTotal=totalCustomers/pageSize+1时,电子设备可以输出扫描结果(即第一扫描结果),即divide_by_zero:In expression"totalCustomers%pageSize",modulo by expression"page Size"which may be zero results in an exception。
在电子设备确定出第一扫描结果之后,电子设备可以对第一样本数据(即第一扫描结果、第一代码片段以及第一扫描规则)进行特征提取,从而得到第一样本数据对应的特征向量。在得到第一样本数据对应的特征向量之后,电子设备可以将第一样本数据对应的特征向量输入到静态代码扫描工具扫描结果的分类模型,确定第一扫描结果的类型,即软件漏洞。
在电子设备得到第一扫描结果的类型之后,如图5所示,电子设备可以显示第一扫描结果(即divide_by_zero:Inexpression"total Customers % page Size",modulo byexpression "page Size"which may be zero results in an exception)、第一扫描结果的类型(即软件漏洞)、第一代码片段(即if(totalCustomers%pageSize==0)pageTotal=totalCustomers/ pageSize;else pageTotal=totalCustomers/pageSize+1)以及第一扫描规则(即DIVIDE_BY_ZERO)。
在另一些示例中,在电子设备显示第一扫描结果的类型的同时,电子设备还可以显示第一提示窗,第一提示窗用于询问用户是否接受电子设备当前输出的第一扫描结果的类型。
第一提示窗可以包括“是否接受推荐结果”字样。第一提示窗还可以包括两个选项,即是和否选项。当电子设备接收到用户对第一提示窗中“是”选项的触发操作,如点击操作时,电子设备可以确定用户接受电子设备当前输出的第一扫描结果的类型。之后,如果电子设备接收到用户对第一扫描结果对应的第一代码片段的修改时,作为响应,电子设备可以对第一代码片段进行相应的修改。在电子设备对对第一代码片段进行相应的修改之后,电子设备可以保存对第一代码片段的修改方式。
在电子设备接收到用户对第一提示窗中“否”选项的触发操作,如点击操作时,电子设备可以确定用户不接受电子设备当前输出的第一扫描结果的类型。之后,如果电子设备接收到用户对第一扫描结果的类型的修改时,作为响应,电子设备可以保存对用户对第一扫描结果的类型的修改。
例如,继续以扫描规则为DIVIDE_BY_ZERO(除以零)为例,即第一扫描规则为DIVIDE_BY_ZERO(除以零)。在电子设备得到第一扫描结果的类型之后,如图6所示,电子设备可以显示第一扫描结果(即divide_by_zero:Inexpression"total Customers % pageSize",modulo by expression "page Size"which may be zero results in anexception)、第一扫描结果的类型(即软件漏洞)、第一代码片段(即if(totalCustomers%pageSize==0)pageTotal=totalCustomers/pageSize;else pageTotal=totalCustomers/pageSize+1)以及第一扫描规则(即DIVIDE_BY_ZERO)。
如图6所示,电子设备还可以显示第一提示窗601,用于询问用户是否接受电子设备当前输出的第一扫描结果的类型。第一提示窗601可以包括“是否接受推荐结果”字样。第一提示窗601还可以包括两个选项,即是和否选项。当电子设备接收到用户对第一提示窗601中“是”选项的触发操作,如点击操作时,电子设备可以确定用户接受电子设备当前输出的第一扫描结果的类型。当电子设备接收到用户对第一提示窗601中“否”选项的触发操作,如点击操作时,电子设备可以确定用户不接受电子设备当前输出的第一扫描结果的类型。
在另一些示例中,在电子设备显示第一扫描结果的类型的同时,电子设备还可以显示第一扫描结果对应的处理方式,即对第一扫描结果对应的第一代码片段如何进行修改。
例如,继续以扫描规则为DIVIDE_BY_ZERO(除以零)为例,即第一扫描规则为DIVIDE_BY_ZERO(除以零)。在电子设备得到第一扫描结果的类型之后,如图7所示,电子设备可以显示第一扫描结果(即divide_by_zero:Inexpression"total Customers % pageSize",modulo by expression "page Size"which may be zero results in anexception)、第一扫描结果的类型(即软件漏洞)、第一代码片段(即if(totalCustomers%pageSize==0)pageTotal=totalCustomers/pageSize;else pageTotal=totalCustomers/pageSize+1)以及第一扫描规则(即DIVIDE_BY_ZERO)。
如图7所示,电子设备还可以显示第一提示窗601,用于询问用户是否接受电子设备当前输出的第一扫描结果的类型。第一提示窗601可以包括“是否接受推荐结果”字样。第一提示窗601还可以包括两个选项,即是和否选项。电子设备还可以显示第一扫描结果对应的处理方式,即修改代码,在进行除法之前,对被除数是否为0进行判断。
S406、电子设备接收用户更改第一扫描结果的类型的操作。
在电子设备显示第一扫描结果的类型之后,电子设备可以接收用户更改第一扫描结果的类型的操作,即在用户确定第一扫描结果的类型错误的情况下,用户可以在电子设备上修改第一扫描结果的类型。
在一些示例中,在电子设备显示第一扫描结果的类型时,电子设备还显示第一提示窗时,第一提示窗用于询问用户是否接受电子设备当前输出的第一扫描结果的类型,在用户确定第一扫描结果的类型错误的情况下,用户可以先触发第一提示窗包括的“否”选项,之后用户可以触发电子设备修改第一扫描结果的类型。即在电子设备接收到用户不接受电子设备当前输出的第一扫描结果的类型的操作之后,电子设备可以接收用户更改第一扫描结果的类型的操作,从而电子设备可以修改第一扫描结果的类型。
需要说明的是,在电子设备显示第一扫描结果的类型时,电子设备还可以显示第一扫描结果对应的处理方式,即对第一扫描结果对应的第一代码片段如何进行修改。在用户确定第一扫描结果对应的处理方式错误的情况下,用户可以在电子设备上修改第一扫描结果对应的处理方式。
例如,在电子设备显示第一扫描结果的类型以及第一扫描结果对应的处理方式时,电子设备还显示第一提示窗时,第一提示窗可以用于询问用户是否接受电子设备当前输出的第一扫描结果的类型以及第一扫描结果对应的处理方式。在用户确定第一扫描结果的类型错误或者第一扫描结果对应的处理方式错误的情况下,用户可以先触发第一提示窗包括的“否”选项,之后用户可以触发电子设备修改第一扫描结果的类型或者第一扫描结果对应的处理方式。即在电子设备接收到用户不接受电子设备当前输出的第一扫描结果的类型以及第一扫描结果对应的处理方式的操作之后,电子设备可以接收用户更改以及第一扫描结果对应的处理方式的操作,即用户可以按自定义处理方式修改第一扫描结果对应的处理方式,从而电子设备可以修改以及第一扫描结果对应的处理方式。
S407、响应于该操作,电子设备更改第一扫描结果的类型,并保存修改之后的第一扫描结果的类型。
在电子设备接收用户更改第一扫描结果的类型的操作之后,作为响应,电子设备可以更改第一扫描结果的类型。在电子设备更改第一扫描结果的类型之后,电子设备可以保存修改之后的第一扫描结果的类型,从而电子设备可以根据修改之后的第一扫描结果的类型对静态代码扫描工具扫描结果的分类模型进行优化训练。
在一些示例中,在静态代码扫描工具扫描结果的分类模型是根据扫描规则对应的训练样本数据对应的特征向量进行训练,从而得到该扫描规则对应的静态代码扫描工具扫描结果的分类模型时,即静态代码扫描工具扫描结果的分类模型可以包括第一扫描规则对应的分类模型。在电子设备更改第一扫描结果的类型时,即第一扫描规则对应的分类模型输出的第一扫描结果的类型错误,电子设备可以保存该修改之后的第一扫描结果的类型,从而电子设备可以通过修改之后的第一扫描结果的类型对该第一扫描规则对应的分类模型进行优化训练。
在另一些示例中,在静态代码扫描工具扫描结果的分类模型是根据扫描规则组合对应的训练样本数据对应的特征向量进行训练,从而得到该扫描规则组合对应的静态代码扫描工具扫描结果的分类模型时,即第一扫描规则可以为多个扫描规则组合中的扫描规则,从而第一扫描规则对应的分类模型,可以为多个,即第一扫描规则可以对应多个智能体。
其中,每个智能体分别使用上述训练的静态代码扫描工具扫描结果的分类模型作为初始化的分类模型,但是每个智能体可以使用不同的预测策略(Action),即智能体在什么情况下输出第一扫描结果的类型为软件漏洞以及智能体在什么情况下输出第一扫描结果的类型为工具误报,完成对第一扫描结果的类型的推荐输出。
在电子设备通过多个智能体得到多个第一扫描结果的类型之后,电子设备可以使用数量最多的第一扫描结果的类型作为最终的第一扫描结果的类型,并输出给用户。
在电子设备更改第一扫描结果的类型时,即第一扫描规则对应的多个分类模型输出的第一扫描结果的类型存在错误,电子设备可以保存该修改之后的第一扫描结果的类型,从而电子设备可以通过修改之后的第一扫描结果的类型对该第一扫描规则对应的多个分类模型中输出错误的分类模型进行优化训练。
例如,电子设备可以保存该修改之后的第一扫描结果的类型之后,电子设备可以对每个正确每个智能体(即分类模型)设置奖励(Reward)为+1, 对每个错误预测的智能体(即分类模型),奖励为-2,从而电子设备可以根据每个智能体对应的奖励值进行优化训练。这里对错误预测进行更多惩罚是因为对预测的准确率要求较高。对于静态代码扫描工具扫描结果的分类模型,其状态(State)为当前所有分类模型的输出结果。
需要说明的是,在电子设备更改第一扫描结果的类型,并保存修改之后的第一扫描结果的类型时,电子设备也可以更改第一扫描结果的对应的处理方式,并保存修改之后的第一扫描结果对应的处理方式。电子设备保存修改之后的第一扫描结果对应的处理方式的方式,可以参考上述电子设备保存第一扫描结果的类型的方式。
S408、电子设备根据修改之后的第一扫描结果的类型,对静态代码扫描工具扫描结果的分类模型进行优化训练。
在电子设备保存修改之后的第一扫描结果的类型之后,电子设备可以根据修改之后的第一扫描结果的类型,对静态代码扫描工具扫描结果的分类模型进行优化训练,即电子设备可以基于修改之后的第一扫描结果的类型,更新静态代码扫描工具扫描结果的分类模型。
在一些示例中,电子设备可以在保存的修改之后的第一扫描结果的类型的数量达到预设阈值的情况下,电子设备可以使用保存的修改之后的第一扫描结果的类型,对静态代码扫描工具扫描结果的分类模型进行优化训练。电子设备使用保存的修改之后的第一扫描结果的类型,对静态代码扫描工具扫描结果的分类模型进行优化训练的具体过程,可以参考上述S301-S304,本申请实施例在此不再赘述。
在一些示例中,电子设备保存修改之后的第一扫描结果的类型时,电子设备还可以保存修改之后的第一扫描结果对应的处理方式,电子设备可以根据修改之后的第一扫描结果的类型以及修改之后的第一扫描结果对应的处理方式,对静态代码扫描工具扫描结果的分类模型进行优化训练。
在另一些示例中,在第一扫描规则对应的分类模型为多个时,即第一扫描结果对应的分类模型为多个,电子设备保存该修改之后的第一扫描结果的类型之后,电子设备可以对每个正确每个智能体(即分类模型)设置奖励(Reward)为+1, 对每个错误预测的智能体(即分类模型),奖励为-2,对于奖励值小于预设阈值的智能体,电子设备可以根据修改之后的第一扫描结果的类型,对该分类模型进行优化训练。
电子设备对静态代码扫描工具扫描结果的分类模型进行优化训练,可以是与用户交互过程中的被动学习,即根据用户修改之后的第一扫描结果的类型,对静态代码扫描工具扫描结果的分类模型进行优化训练。电子设备对静态代码扫描工具扫描结果的分类模型进行优化训练,也可以是在电子设备闲时,使用不断增加的数据进行主动的自学习,每次学习之后对比新的分类模型(也可以称为推荐策略)与当前分类模型的精度,若新的推荐策略的精度高于当前推荐策略的精度,则电子设备可以更新当前的推荐策略为新的推荐策略。
为了便于理解,下面结合附图8对本申请实施例提供的代码扫描方法进行说明。
电子设备开始本申请提供的代码扫描方法之后,电子设备可以先获取静态代码扫描工具的历史扫描信息。历史扫描信息可以包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则以及历史扫描结果对应的类型(即软件漏洞或工具误报)。历史扫描信息还可以包括历史扫描结果对应的代码片段的处理方式。
在电子设备获取到历史扫描信息之后,电子设备可以基于历史扫描信息进行模型训练,从而得到静态代码扫描工具扫描结果的分类模型。在历史信息包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则以及历史扫描结果对应的类型时,电子设备得到的静态代码扫描工具扫描结果的分类模型,可以输出扫描结果的分类。在历史信息还包括历史扫描结果对应的代码片段的处理方式时,电子设备得到的静态代码扫描工具扫描结果的分类模型,不仅可以输出扫描结果的分类结果,还可以输出扫描结果对应的代码片段的处理方式。
在电子设备得到静态代码扫描工具扫描结果的分类模型之后,电子设备可以使用静态代码扫描工具对源代码进行扫描,得到扫描结果。电子设备根据扫描结果、扫描结果对应的扫描规则、扫描结果对应的代码片段以及静态代码扫描工具扫描结果的分类模型,得到推荐处理方式。在历史信息包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则以及历史扫描结果对应的类型时,电子设备得到的推荐处理方式包括扫描结果的分类结果,即软件漏洞或工具误报。在历史信息还包括历史扫描结果对应的代码片段的处理方式时,电子设备得到的推荐处理方式,不仅包括扫描结果的分类结果,还可以包括扫描结果对应的代码片段的处理方式。
在电子设备得到推荐处理方式之后,电子设备可以显示推荐处理方式,即电子设备可以向用户推荐处理方式。电子设备也可以显示提示窗,用于询问用户是否接受推荐结果。在用户接收推荐结果的情况下,代码扫描过程完成。
在用户不接收推荐结果的情况下,用户可以按自定义处理方式进行修改。在用户修改推荐结果之后,电子设备可以存储修改之后的推荐处理方式,即电子设备可以接收用户的反馈信息。在推荐处理方式包括扫描结果的分类结果时,电子设备可以在漏洞知识库中的告警处理数据集中保存修改之后的扫描结果的分类结果。在推荐处理方式包括扫描结果对应的代码片段的处理方式时,电子设备可以在漏洞知识库中的漏洞修复数据集中保存修改之后的扫描结果对应的代码片段的处理方式。
在电子设备存储修改之后的推荐处理方式之后,电子设备可以触发离线学习过程,即根据修改之后的推荐处理方式对静态代码扫描工具扫描结果的分类模型进行优化训练。在电子设备得到优化之后的静态代码扫描工具扫描结果的分类模型(即更新的推荐策略)时,电子设备可以更新静态代码扫描工具扫描结果的分类模型。
本申请的方案可以通过电子设备获取静态代码扫描工具的历史扫描信息,历史扫描信息可以包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则以及历史扫描结果对应的类型(即历史扫描结是工具误报或软件漏洞),并根据历史扫描信息进行模型训练,得到扫描结果的分类模型。在电子设备获取到静态代码扫描工具对第一代码的扫描结果时,电子设备可以根据该第一代码的扫描结果、第一代码的扫描结果对应的代码片段、第一代码的扫描结果对应的扫描规则,以及扫描结果的分类模型,得到第一代码的扫描结果的对应的类型,即第一代码的扫描结果对应的代码片段是工具误报,还是软件漏洞。
本申请的方案通过第一代码的扫描结果对应的代码片段,扫描结果对应的扫描规则,以及扫描结果的分类模型,能够得到第一代码对应的静态代码扫描工具输出的扫描结果的类型,即第一代码的扫描结果是工具误报还是软件漏洞,从而不需要人工确定静态代码扫描工具输出的扫描结果是存在问题的代码片段,还是静态代码扫描工具的误报,即不需要人工确定静态代码扫描工具输出的扫描结果的类型,从而能够提高使用静态代码扫描工具等代码扫描工具扫描结果的准确性以及代码扫描的效率。
需要说明的是,本申请的方案可以通过电子设备获取静态代码扫描工具的历史扫描信息,历史扫描信息可以包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则以及历史扫描结果对应的类型,并根据历史扫描信息进行模型训练,得到扫描结果的分类模型。
采用本申请的方案还可以通过电子设备获取动态代码扫描工具的历史扫描信息,历史扫描信息可以包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则以及历史扫描结果对应的类型,并根据历史扫描信息进行模型训练,得到动态代码扫描工具的扫描结果的分类模型。电子设备根据动态代码扫描工具的历史扫描信息进行模型训练,得到动态代码扫描工具的扫描结果的分类模型的过程,可以参考上述电子设备根据静态代码扫描工具的历史扫描信息进行模型训练,得到静态代码扫描工具的扫描结果的分类模型的过程。
也就是说,本申请的方案即可以适用于对静态代码扫描工具的扫描结果进行分类,也可以适用于对动态代码扫描工具的扫描结果进行分类,本申请实施例对此并不进行限定,本申请实施例中是以对静态代码扫描工具的扫描结果进行分类为例进行示意说明。
为了便于理解,下面结合附图9对本申请实施例提供的代码扫描方法进行说明。如图9所示,该代码扫描方法可以包括以下S901-S911。
S901、电子设备获取代码扫描工具的历史扫描信息。
代码扫描工具可以为静态代码扫描工具,也可以为动态代码扫描工具。本申请实施例对此并不进行限定。本申请的实施例中是以代码扫描工具为静态代码扫描工具为例进行示意说明。
代码扫描工具的历史扫描信息,可以包括代码扫描工具对源代码已进行扫描的历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则以及历史扫描结果对应的类型。
历史扫描结果对应的类型,可以包括软件漏洞或者工具误报。在历史扫描结果对应的类型为软件漏洞时,即该历史扫描结果对应的代码片段为存在漏洞的代码片段。在历史扫描结果对应的类型为工具误报时,即该历史扫描结果对应的代码片段为不存在漏洞的代码片段,而静态代码扫描工具误认为该代码片段存在漏洞。
代码片段,即开发人员编写的代码(即源代码)中与扫描规则相对应的代码。扫描规则,即对源代码进行扫描的内容,也就是说,扫描规则即确定代码存在的漏洞类型。
在另一些示例中,代码扫描工具的历史扫描信息还可以包括历史扫描结果对应的处理方式,即在历史扫描结果对应的类型为软件漏洞时,对历史扫描结果对应的代码片段的处理方式,如修改方式。
本申请实施例中电子设备获取代码扫描工具的历史扫描信息的具体实施方式,可以参考上述S301中的实施方式。本申请实施例在此不再赘述。
S902、电子设备根据历史扫描信息,确定历史扫描信息对应的特征向量。
在电子设备获取到代码扫描工具的历史扫描信息之后,电子设备可以根据历史扫描信息,确定历史扫描信息对应的特征向量。从而可以基于历史扫描信息对应的特征向量进行模型训练,得到代码扫描工具的扫描结果分类模型。
本申请实施例中电子设备根据历史扫描信息,确定历史扫描信息对应的特征向量的具体实施方式,可以参考上述S302-S303中的实施方式。本申请实施例在此不再赘述。
S903、电子设备基于历史扫描信息对应的特征向量进行模型训练,获取代码扫描工具的扫描结果分类模型。
在电子设备根据历史扫描信息,确定历史扫描信息对应的特征向量之后,电子设备可以基于历史扫描信息对应的特征向量进行模型训练,获取代码扫描工具的扫描结果分类模型。
本申请实施例中电子设备基于历史扫描信息对应的特征向量进行模型训练,获取代码扫描工具的扫描结果分类模型的具体实施方式,可以参考上述S304中的实施方式。本申请实施例在此不再赘述。
S904、电子设备获取代码扫描工具对源代码的扫描结果。
在电子设备获取到代码扫描工具的扫描结果分类模型之后,电子设备可以获取代码扫描工具对第一代码(源代码)的扫描结果,即电子设备可以通过代码扫描工具对第一代码进行扫描,从而能够得到第一代码对应的扫描结果。电子设备在得到扫描结果之后,电子设备可以利用代码扫描工具的扫描结果分类模型,对扫描结果进行分类,即通过代码扫描工具扫描结果的分类模型,确定扫描结果的类型是软件漏洞还是工具误报。
需要说明的是在电子设备通过代码扫描工具对第一代码进行扫描时,电子设备可以使用多个扫描规则对第一代码进行扫描,从而能够得到第一代码对应的多个扫描结果。每个扫描结果可以与多个扫描规则中的一个扫描规则相对应。
本申请实施例中电子设备获取代码扫描工具对第一代码的扫描结果的具体实施方式,可以参考上述S401中的实施方式。本申请实施例在此不再赘述。
S905、电子设备根据扫描结果,获取扫描结果对应的扫描信息。
在电子设备获取代码扫描工具对第一代码的扫描结果之后,电子设备可以根据扫描结果,获取扫描结果对应的扫描信息,从而电子设备可以根据扫描信息获取扫描信息对应的特征向量,并利用扫描信息对应的特征向量以及代码扫描工具的扫描结果分类模型,得到扫描结果的类型。
扫描信息,可以包括扫描结果、扫描结果对应的扫描规则以及扫描结果对应的代码片段。扫描规则可以为代码扫描工具扫描源代码(即第一代码)的内容。代码片段可以为源代码(即第一代码)中与扫描规则对应的代码片段。
本申请实施例中电子设备根据扫描结果,获取扫描结果对应的第一扫描信息的具体实施方式,可以参考上述S402中的实施方式。本申请实施例在此不再赘述。
S906、电子设备根据扫描信息,获取扫描信息对应的特征向量。
在电子设备获取扫描结果对应的扫描信息之后,电子设备可以根据扫描信息获取扫描信息对应的特征向量,并利用扫描信息对应的特征向量以及代码扫描工具的扫描结果分类模型,得到扫描结果的类型。
本申请实施例中电子设备根据扫描结果,获取扫描结果对应的第一扫描信息的具体实施方式,可以参考上述S403中的实施方式。本申请实施例在此不再赘述。
S907、电子设备基于扫描信息对应的特征向量以及代码扫描工具的扫描结果分类模型,确定扫描结果的类型。
在电子设备获取扫描信息对应的特征向量之后,电子设备可以看基于扫描信息对应的特征向量以及代码扫描工具的扫描结果分类模型,得到扫描结果的类型。扫描结果的类型可以包括软件漏洞或工具误报。
在一些示例中,电子设备基于扫描信息对应的特征向量以及代码扫描工具的扫描结果分类模型,确定扫描结果的类型的同时,电子设备还可以基于扫描信息对应的特征向量以及代码扫描工具的扫描结果分类模型,确定扫描结果对应的处理方式,如在扫描结果的类型为软件漏洞时,如何修改扫描结果对应的代码片段。
本申请实施例中电子设备基于扫描信息对应的特征向量以及代码扫描工具的扫描结果分类模型,确定扫描结果的类型的具体实施方式,可以参考上述S404中的实施方式。本申请实施例在此不再赘述。
S908、电子设备显示扫描结果的类型。
在电子设备获取到扫描结果的类型之后,电子设备可以显示扫描结果的类型,从而可以根据扫描结果对应的类型,对扫描结果进行不同的处理。
在一些示例中,在电子设备显示扫描结果的类型时,电子设备还可以显示第一提示窗,第一提示窗用于用户确认扫描结果被识别为扫描结果的类型是否正确。在用户确认扫描结果被识别为扫描结果的类型不正确的情况下,用户可以触发电子设备修改扫描结果的类型,即电子设备可以接收用户对扫描结果的类型的修改操作(本申请实施例中可以称为第一修改操作)。
在另一些示例中,电子设备显示扫描结果的类型时,电子设备还可以显示扫描结果对应的处理方式。
在电子设备显示扫描结果对应的处理方式时,电子设备还可以显示第二提示窗,第二提示窗用于用户确认扫描结果对应的处理方式是否正确。在用户确认扫描结果对应的处理方式不正确的情况下,用户可以触发电子设备修改扫描结果对应的处理方式,即电子设备接收用户对扫描结果对应的处理方式的修改操作(本申请实施例中可以称为第二修改操作)。第二提示窗可以与第一提示窗为同一个提示窗,第二提示窗也可以与第一提示窗为不同的提示窗,本申请实施例对此并不进行限定。
本申请实施例中电子设备显示扫描结果的类型的具体实施方式,可以参考上述S405中的实施方式。本申请实施例在此不再赘述。
S909、电子设备接收用户更改扫描结果的类型的操作。
在用户确认扫描结果被识别为扫描结果的类型不正确的情况下,用户可以触发电子设备修改扫描结果的类型,即电子设备可以接收用户对扫描结果的类型的修改操作。
在另一些示例中,在电子设备显示扫描结果对应的处理方式时,在用户确认扫描结果对应的处理方式不正确的情况下,用户可以触发电子设备修改扫描结果对应的处理方式,即电子设备接收用户对扫描结果对应的处理方式的修改操作。
本申请实施例中电子设备接收用户更改扫描结果的类型的操作的具体实施方式,可以参考上述S406中的实施方式。本申请实施例在此不再赘述。
S910、响应于该操作,电子设备修改扫描结果的类型,并保存修改之后的扫描结果的类型。
在电子设备接收到用户修改扫描结果的类型的操作(即第一修改操作)之后,作为响应,电子设备可以修改扫描结果的类型。即电子设备可以根据第一修改操作,修改扫描结果的类型。在电子设备修改扫描结果的类型之后,电子设备还可以保存修改之后的扫描结果的类型。
在一些示例中,在电子设备还显示扫描结果对应的处理方式时,在用户确认扫描结果对应的处理方式不正确的情况下,电子设备还可以接收用户对扫描结果对应的处理方式的修改操作(即第二修改操作),作为响应,电子设备可以修改扫描结果对应的处理方式。即电子设备可以根据第二修改操作,修改扫描结果对应的处理方式。在电子设备修改扫描结果的类型之后,电子设备还可以保存修改之后的扫描结果的类型在电子设备修改扫描结果对应的处理方式之后,电子设备还可以保存修改之后的扫描结果对应的处理方式。
本申请实施例中电子设备更改扫描结果的类型,并保存修改之后的扫描结果的类型的具体实施方式,可以参考上述S407中的实施方式。本申请实施例在此不再赘述。
S911、电子设备基于修改之后的扫描结果的类型,更新代码扫描工具的扫描结果分类模型。
在电子设备保存修改之后的扫描结果的类型之后,电子设备可以基于修改之后的扫描结果的类型,更新代码扫描工具扫描结果的分类模型,即电子设备可以基于修改之后的扫描结果的类型,对扫描工具的扫描结果分类模型进行优化训练。
在一些示例中,电子设备基于修改之后的扫描结果的类型,更新代码扫描工具的扫描结果分类模型,可以包括在电子设备确定修改之后的扫描结果的类型的数量大于第一预设阈值的情况下,电子设备基于修改之后的扫描结果的类型,更新扫描结果分类模型。第一预设阈值可以根据实际情况确定,本申请实施例中对此并不进行限定。
在另一些示例中,在电子设备还显示扫描结果对应的处理方式时,在电子设备修改扫描结果对应的处理方式之后,电子设备还可以保存修改之后的扫描结果对应的处理方式。在电子设备保存修改之后的扫描结果对应的处理方式之后,电子设备可以基于修改之后的扫描结果对应的处理方式,更新代码扫描工具扫描结果的分类模型,即电子设备可以基于修改之后的扫描结果对应的处理方式,对扫描工具的扫描结果分类模型进行优化训练。
在一些示例中,电子设备基于修改之后的扫描结果对应的处理方式,更新代码扫描工具的扫描结果分类模型,可以包括在电子设备确定修改之后的扫描结果对应的处理方式的数量大于第二预设阈值的情况下,电子设备基于修改之后的扫描结果对应的处理方式,更新扫描结果分类模型。第二预设阈值可以根据实际情况确定,本申请实施例中对此并不进行限定。
本申请实施例中电子设备基于修改之后的扫描结果的类型,更新代码扫描工具扫描结果的分类模型的具体实施方式,可以参考上述S408中的实施方式。本申请实施例在此不再赘述。
为了便于理解,下面结合附图10对本申请实施例提供的代码扫描方法进行说明。
电子设备可以先获取静态代码扫描工具的历史扫描信息。历史扫描信息可以包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则以及历史扫描结果对应的类型(即软件漏洞或工具误报)。历史扫描信息还可以包括历史扫描结果对应的代码片段的处理方式。
在电子设备获取到历史扫描信息之后,电子设备可以基于历史扫描信息进行模型训练,如称为强化学习过程,从而得到静态代码扫描工具扫描结果的分类模型。在历史信息包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则以及历史扫描结果对应的类型时,电子设备得到的静态代码扫描工具扫描结果的分类模型,可以输出扫描结果的分类。在历史信息还包括历史扫描结果对应的代码片段的处理方式时,电子设备得到的静态代码扫描工具扫描结果的分类模型,不仅可以输出扫描结果的分类结果,还可以输出扫描结果对应的代码片段的处理方式。
在电子设备得到静态代码扫描工具扫描结果的分类模型之后,电子设备可以获取源代码、扫描规则以及软件安全漏洞库,并根据扫描规则对源代码进行扫描之后,可以得到源代码中不同的代码片段,代码片段即源代码中与扫描规则相对应的代码。
在静态代码扫描工具得到多个代码片段之后,将多个代码片段,与软件安全漏洞库中已知的软件漏洞进行匹配。
在多个代码片段与软件安全漏洞库中已知的软件漏洞存在匹配成功的情况下,静态代码扫描工具可以确定该匹配成功的代码片段为存在问题的代码片段,即该代码片段为软件漏洞。
在静态代码扫描工具确定出存在问题的代码片段(可以为多个代码片段)之后,静态代码扫描工具可以将该存在问题的代码片段作为扫描结果。
在电子设备使用静态代码扫描工具对源代码进行扫描,得到扫描结果之后,电子设备可以根据扫描结果、扫描结果对应的扫描规则、扫描结果对应的代码片段以及静态代码扫描工具扫描结果的分类模型(即智能体),得到推荐处理方式。在历史信息包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则以及历史扫描结果对应的类型时,电子设备得到的推荐处理方式包括推荐类别,即扫描结果的分类结果(即软件漏洞或工具误报)。
在历史信息还包括历史扫描结果对应的代码片段的处理方式时,电子设备得到的推荐处理方式,不仅包括扫描结果的分类结果,还可以包括推荐漏洞修复方案(即扫描结果对应的代码片段的处理方式)。
电子设备在向用户推荐处理方式时,电子设备也可以显示提示窗,用于询问用户是否接受推荐结果。
在电子设备得到推荐类别,且用户接收推荐结果的情况下,电子设备可以显示推荐类别,从而用户(如安全SE)可以根据推荐类别进行处理,即在推荐类别为工具误报时,电子设备可以屏蔽该条扫描结果。在推荐类别为软件漏洞时,电子设备可以将该软件漏洞发送给开发人员,从而开发人员可以对软件漏洞进行修复。
在电子设备得到推荐漏洞修复方案,且用户接收推荐结果的情况下,电子设备可以显示推荐漏洞修复方案,从而用户(如开发人员)可以根据推荐漏洞修复方案对扫描结果对应的代码片段进行修改,即根据推荐漏洞修复方案处理。
在用户不接收推荐结果的情况下,用户可以按自定义处理方式进行修改。在用户修改推荐类别之后,电子设备可以存储修改之后的推荐处理方式,即电子设备可以接收用户的反馈信息,即对用户行为进行收集。在推荐处理方式包括推荐漏洞修复方案时,在电子设备可以在存储修改之后的代码片段。
在电子设备存储修改之后的推荐处理方式(即用户反馈信息)之后,电子设备还可以建立漏洞知识库,并将修改之后的推荐处理方式存储在漏洞知识库中,并根据漏洞知识库中修改之后的推荐处理方式对静态代码扫描工具扫描结果的分类模型进行优化训练,如称监督学习过程。在电子设备得到优化之后的静态代码扫描工具扫描结果的分类模型时,电子设备可以更新静态代码扫描工具扫描结果的分类模型,即更新智能体。
电子设备获取静态代码扫描工具的历史扫描信息,历史扫描信息可以包括历史扫描结果、历史扫描结果对应的代码片段、历史扫描结果对应的扫描规则以及历史扫描结果对应的类型(即历史扫描结是工具误报或软件漏洞),并根据历史扫描信息进行模型训练,得到扫描结果的分类模型。在电子设备获取到静态代码扫描工具对第一代码(即源代码)的扫描结果时,电子设备可以根据该第一代码的扫描结果、第一代码的扫描结果对应的代码片段、第一代码的扫描结果对应的扫描规则,以及扫描结果的分类模型,得到第一代码的扫描结果的对应的类型,即第一代码的扫描结果对应的代码片段是工具误报,还是软件漏洞。
电子设备通过第一代码的扫描结果对应的代码片段,扫描结果对应的扫描规则,以及扫描结果的分类模型,能够得到第一代码对应的静态代码扫描工具输出的扫描结果的类型,即第一代码的扫描结果是工具误报还是软件漏洞,从而不需要人工确定静态代码扫描工具输出的扫描结果是存在问题的代码片段,还是静态代码扫描工具的误报,即不需要人工确定静态代码扫描工具输出的扫描结果的类型,从而能够提高使用静态代码扫描工具等代码扫描工具扫描结果的准确性以及代码扫描的效率。
对应于前述实施例中的方法,本申请实施例还提供一种代码扫描装置。该代码扫描装置可以应用于第一电子设备,用于实现前述实施例中的方法。该代码扫描装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。
例如,图11示出了一种代码扫描装置1100的结构示意图,如图11所示,该代码扫描装置1100可以包括:获取模块1101和确定模块1102等。
其中,获取模块1101,可以用于获取代码扫描工具扫描源代码的扫描结果。
获取模块1101,还可以用于根据扫描结果,获取扫描结果对应的扫描信息;扫描信息包括扫描结果、扫描结果对应的扫描规则以及扫描结果对应的代码片段;扫描规则为代码扫描工具扫描源代码的内容;代码片段为源代码中与扫描规则对应的代码片段。
确定模块1102,可以用于基于扫描结果对应的扫描信息,以及扫描结果分类模型,确定扫描结果的类型,扫描结果的类型包括软件漏洞或工具误报。
在一种可能的实现方式中,获取模块1101,还可以用于获取代码扫描工具扫描的历史扫描信息;历史扫描信息包括历史扫描结果、历史扫描结果对应的扫描规则、历史扫描结果对应的代码片段以及历史扫描结果的类型。
上述代码扫描装置1100还可以包括训练模块1103。
训练模块1103,可以用于基于历史扫描信息进行模型训练。
获取模块1101,还可以用于获取扫描结果分类模型。
在一种可能的实现方式中,上述代码扫描装置1100还可以包括显示模块1104。显示模块1104,可以用于显示扫描结果的类型。
在一种可能的实现方式中,显示模块1104,还可以用于显示第一提示窗,第一提示窗用于用户确认扫描结果被识别为扫描结果的类型是否正确。
上述代码扫描装置1100还可以包括接收模块1105。接收模块1105,可以用于在用户确认扫描结果被识别为扫描结果的类型不正确的情况下,接收用户对扫描结果的类型的第一修改操作。
上述代码扫描装置1100还可以包括修改模块1106。修改模块1106,可以用于根据第一修改操作,修改扫描结果的类型。
在一种可能的实现方式中,上述代码扫描装置1100还可以包括存储模块1107。存储模块1107,可以用于保存修改之后的扫描结果的类型。
上述代码扫描装置1100还可以包括更新模块1108。更新模块1108,可以用于在修改之后的扫描结果的类型的数量大于第一预设阈值的情况下,基于修改之后的扫描结果的类型,更新扫描结果分类模型。
在一种可能的实现方式中,历史扫描信息还可以包括历史扫描结果对应的处理方式。
在一种可能的实现方式中, 确定模块1102,还可以用于基于扫描结果对应的扫描信息,以及扫描结果分类模型,确定扫描结果对应的处理方式。
显示模块1104,还可以用于显示扫描结果对应的处理方式。
在一种可能的实现方式中,显示模块1104,还可以用于显示第二提示窗,第二提示窗用于用户确认扫描结果对应的处理方式是否正确。
接收模块1105,还可以用于在用户确认扫描结果对应的处理方式不正确的情况下,接收用户对扫描结果对应的处理方式的第二修改操作。
修改模块1106,还可以用于根据第二修改操作,修改扫描结果对应的处理方式。
在一种可能的实现方式中,存储模块1107,还可以用于保存修改之后的扫描结果对应的处理方式。
更新模块1108,还可以用于在修改之后的扫描结果对应的处理方式的数量大于第二预设阈值的情况下,基于修改之后的扫描结果对应的处理方式,更新扫描结果分类模型。
在一种可能的实现方式中,代码扫描工具可以为静态代码扫描工具。
应理解以上装置中单元或模块(以下均称为单元)的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且装置中的单元可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分单元以软件通过处理元件调用的形式实现,部分单元以硬件的形式实现。
例如,各个单元可以为单独设立的处理元件,也可以集成在装置的某一个芯片中实现,此外,也可以以程序的形式存储于存储器中,由装置的某一个处理元件调用并执行该单元的功能。此外这些单元全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件又可以称为处理器,可以是一种具有信号的处理能力的集成电路。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路实现或者以软件通过处理元件调用的形式实现。
在一个例子中,以上装置中的单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个ASIC,或,一个或多个DSP,或,一个或者多个FPGA,或这些集成电路形式中至少两种的组合。
再如,当装置中的单元可以通过处理元件调度程序的形式实现时,该处理元件可以是通用处理器,例如CPU或其它可以调用程序的处理器。再如,这些单元可以集成在一起,以片上系统SOC的形式实现。
在一种实现中,以上装置实现以上方法中各个对应步骤的单元可以通过处理元件调度程序的形式实现。例如,该装置可以包括处理元件和存储元件,处理元件调用存储元件存储的程序,以执行以上方法实施例所述的方法。存储元件可以为与处理元件处于同一芯片上的存储元件,即片内存储元件。
在另一种实现中,用于执行以上方法的程序可以在与处理元件处于不同芯片上的存储元件,即片外存储元件。此时,处理元件从片外存储元件调用或加载程序于片内存储元件上,以调用并执行以上方法实施例所述的方法。
例如,本申请实施例还可以提供一种装置,如:电子设备,可以包括:处理器,用于存储该处理器可执行指令的存储器。该处理器被配置为执行上述指令时,使得该电子设备实现如前述实施例所述的代码扫描方法。该存储器可以位于该电子设备之内,也可以位于该电子设备之外。且该处理器包括一个或多个。
在又一种实现中,该装置实现以上方法中各个步骤的单元可以是被配置成一个或多个处理元件,这些处理元件可以设置于对应上述的电子设备上,这里的处理元件可以为集成电路,例如:一个或多个ASIC,或,一个或多个DSP,或,一个或者多个FPGA,或者这些类集成电路的组合。这些集成电路可以集成在一起,构成芯片。
例如,本申请实施例还提供一种芯片,该芯片可以应用于上述电子设备。芯片包括一个或多个接口电路和一个或多个处理器;接口电路和处理器通过线路互联;处理器通过接口电路从电子设备的存储器接收并执行计算机指令,以实现以上方法实施例中所述的方法。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序指令。当计算机程序指令被电子设备执行时,使得电子设备可以实现如上述的代码扫描方法。
本申请实施例还提供一种计算机程序产品,包括如上述电子设备运行的计算机指令,当计算机指令在电子设备中运行时,使得电子设备实可以现如上述的代码扫描方法。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,如:程序。
该软件产品存储在一个程序产品,如计算机可读存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
例如,本申请实施例还可以提供一种计算机可读存储介质,其上存储有计算机程序指令。当计算机程序指令被电子设备执行时,使得电子设备实现如前述方法实施例中所述的代码扫描方法。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种代码扫描方法,其特征在于,应用于电子设备,所述电子设备包括代码扫描工具,所述方法包括:
所述电子设备获取所述代码扫描工具扫描源代码的扫描结果;
所述电子设备根据所述扫描结果,获取所述扫描结果对应的扫描信息;所述扫描信息包括所述扫描结果、所述扫描结果对应的扫描规则以及所述扫描结果对应的代码片段;所述扫描规则为所述代码扫描工具扫描所述源代码的内容;所述代码片段为所述源代码中与所述扫描规则对应的代码片段;
所述电子设备基于所述扫描结果对应的扫描信息,以及扫描结果分类模型,确定所述扫描结果的类型,所述扫描结果的类型包括软件漏洞或工具误报;
所述电子设备接收用户对所述扫描结果的类型的第一修改操作;
所述电子设备根据所述第一修改操作,修改所述扫描结果的类型;
在所述修改之后的所述扫描结果的类型的数量大于第一预设阈值的情况下,所述电子设备基于所述修改之后的所述扫描结果的类型,更新所述扫描结果分类模型。
2.根据权利要求1所述的方法,其特征在于,在所述电子设备基于所述扫描结果对应的扫描信息,以及扫描结果分类模型,确定所述扫描结果的类型之前,所述方法还包括:
所述电子设备获取所述代码扫描工具扫描的历史扫描信息;所述历史扫描信息包括历史扫描结果、所述历史扫描结果对应的扫描规则、所述历史扫描结果对应的代码片段以及所述历史扫描结果的类型;
所述电子设备基于所述历史扫描信息进行模型训练,获取所述扫描结果分类模型。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:所述电子设备显示所述扫描结果的类型。
4.根据权利要求3所述的方法,其特征在于,所述电子设备接收用户对所述扫描结果的类型的第一修改操作,包括:
所述电子设备显示第一提示窗,所述第一提示窗用于用户确认所述扫描结果被识别为所述扫描结果的类型是否正确;
在用户确认所述扫描结果被识别为所述扫描结果的类型不正确的情况下,所述电子设备接收用户对所述扫描结果的类型的第一修改操作。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述电子设备保存修改之后的所述扫描结果的类型。
6.根据权利要求2所述的方法,其特征在于,所述历史扫描信息还包括所述历史扫描结果对应的处理方式。
7.根据权利要求6中所述的方法,其特征在于,所述方法还包括:
所述电子设备基于所述扫描结果对应的扫描信息,以及所述扫描结果分类模型,确定所述扫描结果对应的处理方式;
所述电子设备显示所述扫描结果对应的处理方式。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述电子设备显示第二提示窗,所述第二提示窗用于用户确认所述扫描结果对应的处理方式是否正确;
在用户确认所述扫描结果对应的处理方式不正确的情况下,所述电子设备接收用户对所述扫描结果对应的处理方式的第二修改操作;
所述电子设备根据所述第二修改操作,修改所述扫描结果对应的处理方式。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
所述电子设备保存修改之后的所述扫描结果对应的处理方式;
在所述修改之后的所述扫描结果对应的处理方式的数量大于第二预设阈值的情况下,所述电子设备基于所述修改之后的所述扫描结果对应的处理方式,更新所述扫描结果分类模型。
10.根据权利要求1所述的方法,其特征在于,所述代码扫描工具为静态代码扫描工具。
11.一种电子设备,其特征在于,所述电子设备包括处理器,用于存储所述处理器可执行指令的存储器;所述处理器被配置为执行所述指令时,使得所述电子设备实现如权利要求1至10中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序指令;其特征在于,
当所述计算机程序指令被电子设备执行时,使得电子设备实现如权利要求1至10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210678163.XA CN114756875B (zh) | 2022-06-16 | 2022-06-16 | 一种代码扫描方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210678163.XA CN114756875B (zh) | 2022-06-16 | 2022-06-16 | 一种代码扫描方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114756875A CN114756875A (zh) | 2022-07-15 |
CN114756875B true CN114756875B (zh) | 2022-10-25 |
Family
ID=82336895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210678163.XA Active CN114756875B (zh) | 2022-06-16 | 2022-06-16 | 一种代码扫描方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114756875B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115774881A (zh) * | 2023-02-13 | 2023-03-10 | 深圳开源互联网安全技术有限公司 | 代码审计方法、装置、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112783749A (zh) * | 2019-11-07 | 2021-05-11 | 北京奇虎科技有限公司 | 一种静态代码扫描优化方法、装置、电子设备和存储介质 |
CN114021130A (zh) * | 2021-10-12 | 2022-02-08 | 深圳开源互联网安全技术有限公司 | 不依赖编译的漏洞扫描方法、装置及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9680897B2 (en) * | 2014-01-31 | 2017-06-13 | Yahoo! Inc. | Throttled scanning for optimized compression of network communicated data |
CN109684837B (zh) * | 2018-11-21 | 2024-03-19 | 全球能源互联网研究院有限公司 | 一种面向电力企业的移动应用恶意软件检测方法及系统 |
US11481501B2 (en) * | 2020-01-31 | 2022-10-25 | Sap Se | Low false positive token identification in source code repositories using machine learning |
CN112486563A (zh) * | 2020-12-02 | 2021-03-12 | 车智互联(北京)科技有限公司 | 一种代码管理方法、系统、计算设备及可读存储介质 |
CN113157917B (zh) * | 2021-03-15 | 2023-03-24 | 西北大学 | 基于OpenCL的优化分类模型的建立、优化分类方法及系统 |
-
2022
- 2022-06-16 CN CN202210678163.XA patent/CN114756875B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112783749A (zh) * | 2019-11-07 | 2021-05-11 | 北京奇虎科技有限公司 | 一种静态代码扫描优化方法、装置、电子设备和存储介质 |
CN114021130A (zh) * | 2021-10-12 | 2022-02-08 | 深圳开源互联网安全技术有限公司 | 不依赖编译的漏洞扫描方法、装置及存储介质 |
Non-Patent Citations (1)
Title |
---|
李韵等.基于机器学习的软件漏洞挖掘方法综述.《软件学报》.2020,(第07期), * |
Also Published As
Publication number | Publication date |
---|---|
CN114756875A (zh) | 2022-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11537941B2 (en) | Remote validation of machine-learning models for data imbalance | |
CN109947426B (zh) | 应用程序的生成方法、装置及电子设备 | |
CN107729246B (zh) | 针对目标应用的辅助测试方法、装置、设备及存储介质 | |
CN110196795B (zh) | 检测移动终端应用运行状态的方法及相关装置 | |
CN114756875B (zh) | 一种代码扫描方法及电子设备 | |
CN111931102A (zh) | 一种构建页面的方法、装置及系统 | |
EP4038489B1 (en) | Automated software generation through mutation and artificial selection | |
US20210374825A1 (en) | Generating relationship data from listing data | |
CN111611390B (zh) | 一种数据处理方法及装置 | |
CN112116690A (zh) | 视频特效生成方法、装置及终端 | |
US11645456B2 (en) | Siamese neural networks for flagging training data in text-based machine learning | |
US20200272653A1 (en) | Apparatus for searching for content using image and method of controlling same | |
KR102209577B1 (ko) | 특허 침해 리스크 분석 시스템 및 방법 | |
US11734160B2 (en) | Vendor assisted customer individualized testing | |
CN110908882A (zh) | 一种应用程序的性能分析方法、装置、终端设备及介质 | |
US20230281884A1 (en) | Image transformation infrastructure | |
CN113032560B (zh) | 语句分类模型训练方法、语句处理方法及设备 | |
KR20220003968A (ko) | 효율적인 데이터 시맨틱 세그멘태이션을 위한 방법 및 장치 | |
US20230401491A1 (en) | Generation and Explanation of Transformer Computation Graph Using Graph Attention Model | |
CN113468039B (zh) | 可靠性评估方法及相关设备 | |
CN115981711B (zh) | 一种代码处理方法及电子设备 | |
KR102298562B1 (ko) | 애플리케이션 실행 품질 서비스 시스템 및 방법 | |
KR20170076961A (ko) | 특허 분석 시뮬레이터 및 이의 특허 분석 방법 | |
US12026277B2 (en) | Electronic device for managing personal information and method therefor | |
US20220129578A1 (en) | Electronic device for managing personal information and method therefor |
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 |