本发明涉及代码扫描
技术领域:
:,具体涉及代码扫描过滤方法及装置。
背景技术:
::商业银行it系统的安全关系到广大客户的财产安全和国家社会的稳定运行。it系统的安全保障需要从需求、开发、测试、运行等多方面进行,开发过程中的安全保障措施尤为重要,代码安全扫描是其中一项重要措施。常用的代码扫描工具有fortify、checkmarx、codesecure等。代码安全扫描工具为了降低代码安全风险,会将一些疑似问题都认为是安全漏洞,所以一般都会存在一些误报。因此,安全审计员和开发人员需要对扫描结果进行人工审计,而且这些误报问题在之后的扫描仍会出现在扫描结果中。有些扫描工具如fortify,误报率非常高,安全审计员和开发人员需要花大量的人力和时间在安全审计上,反而没有充足的精力去解决实际上有重大安全风险的问题。技术实现要素:针对现有技术中的缺陷,本发明提供一种代码扫描过滤方法及装置,将一些安全风险程度低的规则问题过滤,剔除历史已审计为无风险的问题,降低代码安全扫描误报率,提高代码安全扫描和审计的效率,从而提升代码质量,降低安全风险。本发明提供以下技术方案:第一方面,本发明实施例提供一种代码扫描过滤方法,包括:对待扫描的代码文件进行代码安全性扫描,获得所述代码文件的扫描结果,所述扫描结果包括所有缺陷代码、缺陷代码标识、缺陷代码的扫描规则标识;根据预设的扫描规则集对所述扫描结果中的缺陷代码进行过滤,剔除扫描规则标识不包括在所述扫描规则集内的缺陷代码,得到第一过滤结果;结合一包括误报的缺陷代码标识的审计数据库,剔除缺陷代码标识包括在所述审计数据库中的缺陷代码,得到第二过滤结果。在某些实施例中,在对待扫描的代码文件进行代码扫描之前,所述代码扫描过滤方法还包括:建立所述扫描规则集。在某些实施例中,所述扫描结果还包括:缺陷代码所在文件路径、缺陷代码所在文件名以及缺陷代码所在代码行数。在某些实施例中,在得到第二过滤结果之前,所述代码扫描过滤方法还包括:结合预设的路径过滤表,剔除所在文件路径处于所述路径过滤表中的缺陷代码。第二方面,本发明实施例提供一种代码扫描过滤装置,包括:扫描模块,对待扫描的代码文件进行代码安全性扫描,获得所述代码文件的扫描结果,所述扫描结果包括所有缺陷代码、缺陷代码标识、缺陷代码的扫描规则标识;第一过滤模块,根据预设的扫描规则集对所述扫描结果中的缺陷代码进行过滤,剔除扫描规则标识不包括在所述扫描规则集内的缺陷代码,得到第一过滤结果;第二过滤模块,结合一包括误报的缺陷代码标识的审计数据库,剔除缺陷代码标识包括在所述审计数据库中的缺陷代码,得到第二过滤结果。在某些实施例中,所述代码扫描过滤装置还包括:规则集建立模块,建立所述扫描规则集。在某些实施例中,所述扫描结果还包括:缺陷代码所在文件路径、缺陷代码所在文件名以及缺陷代码所在代码行数。在某些实施例中,还包括:路径过滤模块,结合预设的路径过滤表,剔除所在文件路径处于所述路径过滤表中的缺陷代码。第三方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的代码扫描过滤方法。第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的代码扫描过滤方法。由上述技术方案可知,本发明提供的代码扫描过滤方法及装置,通过对待扫描的代码文件进行代码安全性扫描,根据预设的扫描规则集对所述扫描结果中的缺陷代码进行过滤,最后结合一包括误报的缺陷代码标识的审计数据库,剔除缺陷代码标识包括在所述审计数据库中的缺陷代码,这样结合了自动审计过滤和扫描过滤,将一些安全风险程度低的规则问题过滤,剔除历史已审计为无风险的问题,降低代码安全扫描误报率,提高代码安全扫描和审计的效率,从而提升代码质量,降低安全风险。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例中代码扫描过滤方法的流程示意图。图2为本发明实施例中一具体场景的流程图。图3为本发明实施例中代码扫描过滤装置的结构示意图。图4为本发明实施例中的电子设备的结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。传统的代码扫描都是基于语法解析或者编译器,根据代码所匹配的规则模式去评估代码,这些规则模式就是代码扫描规则,为了区别不同的规则,代码规则都会定义规则id来进行唯一标识。代码扫描结果中一般会展示规则id、问题所在文件路径和文件名、问题所在代码行数。通常扫描工具都会根据问题所在文件路径和文件名、问题所在代码行数给出问题唯一标识id。目前现有的误报处理方法是通过工具自带的安全审计平台进行人工审计,将无风险的问题设为误报。下一次审计前,将前次审计后的报告与本次扫描结果根据问题id进行合并处理,审计工作一般都是在线下。如fortify扫描,就是将其fpr格式结果文件进行merge合并操作。但该方法需要较高的成本来管理各项目的fpr结果,并且不支持根据规则id过滤结果,特别是新增的代码,扫描结果误报率仍较高。本发明基于目前代码安全扫描方案中存在一方面扫描结果问题较多,其中有许多安全程度较低,或者被攻击难度较大的问题,较难推动开发人员一次性整改;另一方面开发迭代过程中,上次代码审计评估无需整改的问题仍会出现在下次代码安全扫描结果中,每次都提交审计,人力成本高的问题,进行了相关改进,解决当前代码安全扫描误报率高、代码审计效率低下、成本高、花费大量人力的问题,达到获取代码安全扫描精准结果,定制化扫描规则,过滤历史已剔除误报问题的效果。图1示出了本发明实施例中一种代码扫描过滤方法,如图1所示,包括:s1:对待扫描的代码文件进行代码安全性扫描,获得所述代码文件的扫描结果,所述扫描结果包括所有缺陷代码、缺陷代码标识、缺陷代码的扫描规则标识。本发明中,代码安全扫描即为上述的基于语法解析或者编译器,根据代码所匹配的规则模式去评估代码。所述扫描结果还包括:缺陷代码所在文件路径、缺陷代码所在文件名以及缺陷代码所在代码行数。代码扫描结果中一般会展示规则id、问题所在文件路径和文件名、问题所在代码行数。通常扫描工具都会根据问题所在文件路径和文件名、问题所在代码行数给出问题唯一标识id。s2:根据预设的扫描规则集对所述扫描结果中的缺陷代码进行过滤,剔除扫描规则标识不包括在所述扫描规则集内的缺陷代码,得到第一过滤结果。一些实施例中,所述代码扫描过滤方法还包括:结合预设的路径过滤表,剔除所在文件路径处于所述路径过滤表中的缺陷代码。具体而言,在扫描之前,制定好被扫系统的规则集过滤信息、路径过滤信息和文件过滤信息。配置完成后开始扫描任务。在调起扫描引擎前,添加扫描过滤规则,有些工具是白名单规则方式,有些工具是黑名单规则方式。白名单方式只扫规则文件里的规则,过滤效果较好,黑名单方式则去除这部分规则,过滤效果一般,较难列举所有希望排除的规则。fortify工具采用的在扫描脚本中添加filter,filter中列举所有需排除的规则或者缺陷id,因此是采用黑名单方式。扫描引擎执行扫描,并得出扫描结果。将扫描结果的数据存在在数据库表issuetable中,通过系统id、缺陷id判断该问题是否新增,如果是新的问题则直接插入,如果不是新增的问题,则不插入。进行结果过滤处理,该步骤根据扫描规则来进行过滤。在步骤中采用黑名单方式过滤的工具,过滤效果较差,因此需要对扫描结果再次按规则id进行过滤。根据安全威胁程度、系统实际特征制定相应的过滤规则集。如果扫描结果问题的规则id在系统对应规则集的规则集合内,问题所属文件路径不在系统对应的文件路径过滤规则集内,并且问题所属文件名不在系统对应的文件名过滤规则集内,则设置规则过滤flag为false,即表示不过滤该问题,否则该标志为true,即表示过滤该问题。本过滤步骤中有三类过滤处理,问题所属规则的过滤、问题所在文件路径的过滤、问题所在文件名的过滤。扫描时的问题规则过滤,是一种过滤范围相对较小的过滤,需要适应各类系统的过滤规则,如果关注的规则发生变化,则需要对系统代码进行重新扫描。本步骤的问题规则过滤,可以不用重新扫描代码,直接更换过滤规则集,重新过滤就能获得新的过滤结果。此外,本发明中,扫描规则集可以预先建立或者在线建立,本发明可以采用预建立的扫描规则集,也可以通过建立一扫描规则集,然后进行步骤s2,本发明对此不作限制。第一过滤结果即为通过上述三类过滤处理后的结果。本发明中,扫描规则集通过规则集表rulesettable的形式展示并存储,包含规则集id(rulesetid),规则id字段,存储rulesetid对应的所有规则。由于大部分扫描工具采用的规则都较多,达几千上万条,因此规则过滤采用白名单形式,在规则集内规则的问题保留,不在的则过滤。例如设计一个规则集,里面包含sql注入相关规则和命令注入相关规则,那么这个规则集只关注这类规则,扫描结果中只保留这类问题。此外,路径过滤表pathfiltertable,包含路径过滤集合id,路径名字段,存储路径过滤集合对应的所有路径名。设计文件名过滤表filefiltertable,包含文件名过滤集合id,文件名字段,存储文件名过滤集合对应的所有文件名。在代码安全审计过程中,开发人员经常发现某些路径下或某些文件的代码生产中不使用,因此路径过滤和文件名过滤采用黑名单形式,扫描结果中过滤在此名单中内的问题。并且,在进行扫描时,将扫描过程中的所有信息集成在扫描详细表sysdetailtable,包含系统id、规则集id、路径过滤集合id、文件名过滤集合id。通过系统id和规则集id、路径过滤集合id、文件名过滤集合id就能获取该系统的所有过滤规则、过滤路径和过滤文件信息。s3:结合一包括误报的缺陷代码标识的审计数据库,剔除缺陷代码标识包括在所述审计数据库中的缺陷代码,得到第二过滤结果。本步骤中,审计数据库包括历史人工审计的属于误报的缺陷代码的标识,去除属于误报的代码。具体而言,根据历史审计来确定是否需要过滤。在存入数据库时,如果该系统该缺陷id的问题已存在,则无需插入,同时之前审计过程中标记的状态会保留。如果审计过滤flag为false,即表示不过滤该问题,否则为true,即表示过滤该问题。在优选的实施例中,数据库可以基于无监督式机器学习,不断更新数据库。下面结合一具体场景对本发明进行详细说明。如图2所示,包括如下流程:(1)在扫描之前,制定好被扫系统的规则集过滤信息、路径过滤信息和文件过滤信息。配置完成后开始扫描任务。(2)在调起扫描引擎前,添加扫描过滤规则,有些工具是白名单规则方式,有些工具是黑名单规则方式。白名单方式只扫规则文件里的规则,过滤效果较好,黑名单方式则去除这部分规则,过滤效果一般,较难列举所有希望排除的规则。fortify工具采用的在扫描脚本中添加filter,filter中列举所有需排除的规则或者缺陷id,因此是采用黑名单方式。(3)扫描引擎执行扫描,并得出扫描结果。将扫描结果的数据存在在数据库表issuetable中,通过系统id、缺陷id判断该问题是否新增,如果是新的问题则直接插入,如果不是新增的问题,则不插入。(4)结果过滤处理1,该步骤根据扫描规则来进行过滤。在2步骤中采用黑名单方式过滤的工具,过滤效果较差,因此需要对扫描结果再次按规则id进行过滤。根据安全威胁程度、系统实际特征制定相应的过滤规则集。如果扫描结果问题的规则id在系统对应规则集的规则集合内,问题所属文件路径不在系统对应的文件路径过滤规则集内,并且问题所属文件名不在系统对应的文件名过滤规则集内,则设置规则过滤flag为false,即表示不过滤该问题,否则该标志为true,即表示过滤该问题。本过滤步骤中有三类过滤处理,问题所属规则的过滤、问题所在文件路径的过滤、问题所在文件名的过滤。在步骤(2)中,扫描时的问题规则过滤,是一种过滤范围相对较小的过滤,需要适应各类系统的过滤规则,如果关注的规则发生变化,则需要对系统代码进行重新扫描。本步骤的问题规则过滤,可以不用重新扫描代码,直接更换过滤规则集,重新过滤就能获得新的过滤结果。(5)结果过滤处理2,该步骤根据历史审计来确定是否需要过滤。在存入数据库时,如果该系统该缺陷id的问题已存在,则无需插入,同时之前审计过程中标记的状态会保留。如果审计过滤flag为false,即表示不过滤该问题,否则为true,即表示过滤该问题。(6)审计步骤,该步骤需要安全审计员与开发人员共同进行代码审计,如果确认该问题为误报,则设置该问题的审计过滤flag为true,否则为false。该问题的审计状态存储在数据库中后,之后的代码安全扫描将根据步骤5进行过滤处理。(7)代码扫描结果,得出精确的代码扫描结果。可以理解,本发明提供的代码扫描过滤方法,通过对待扫描的代码文件进行代码安全性扫描,根据预设的扫描规则集对所述扫描结果中的缺陷代码进行过滤,最后结合一包括误报的缺陷代码标识的审计数据库,剔除缺陷代码标识包括在所述审计数据库中的缺陷代码,这样结合了自动审计过滤和扫描过滤,将一些安全风险程度低的规则问题过滤,剔除历史已审计为无风险的问题,降低代码安全扫描误报率,提高代码安全扫描和审计的效率,从而提升代码质量,降低安全风险。结合代码安全扫描的三阶段过滤处理,五个过滤步骤,采用白名单、黑名单结合的过滤形式,从扫描时过滤,到扫描结果的问题规则过滤、文件路径过滤、文件名过滤,再到问题的误报过滤,用户可以精细化、定制化过滤规则,从而精准定位代码安全问题,节约安全审计员、开发人员的问题审计成本,将精力集中于真实代码缺陷的整改工作中。基于相同的发明构思,图3示出了本发明实施例中一种代码扫描过滤装置,包括:扫描模块1,对待扫描的代码文件进行代码安全性扫描,获得所述代码文件的扫描结果,所述扫描结果包括所有缺陷代码、缺陷代码标识、缺陷代码的扫描规则标识;第一过滤模块2,根据预设的扫描规则集对所述扫描结果中的缺陷代码进行过滤,剔除扫描规则标识不包括在所述扫描规则集内的缺陷代码,得到第一过滤结果;第二过滤模块3,结合一包括误报的缺陷代码标识的审计数据库,剔除缺陷代码标识包括在所述审计数据库中的缺陷代码,得到第二过滤结果。基于相同的发明构思,在某些实施例中,所述代码扫描过滤装置还包括:规则集建立模块,建立所述扫描规则集。基于相同的发明构思,在某些实施例中,所述扫描结果还包括:缺陷代码所在文件路径、缺陷代码所在文件名以及缺陷代码所在代码行数。基于相同的发明构思,在某些实施例中,还包括:路径过滤模块,结合预设的路径过滤表,剔除所在文件路径处于所述路径过滤表中的缺陷代码。由上述技术方案可知,本发明提供的代码扫描过滤装置,通过对待扫描的代码文件进行代码安全性扫描,根据预设的扫描规则集对所述扫描结果中的缺陷代码进行过滤,最后结合一包括误报的缺陷代码标识的审计数据库,剔除缺陷代码标识包括在所述审计数据库中的缺陷代码,这样结合了自动审计过滤和扫描过滤,将一些安全风险程度低的规则问题过滤,剔除历史已审计为无风险的问题,降低代码安全扫描误报率,提高代码安全扫描和审计的效率,从而提升代码质量,降低安全风险。从硬件层面来说,本发明提供一种用于实现所述代码扫描过滤方法中的全部或部分内容的电子设备的实施例,所述电子设备具体包含有如下内容:处理器(processor)、存储器(memory)、通信接口(communicationsinterface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述通信接口用于实现服务器、装置、分布式消息中间件集群装置、各类数据库以及用户终端等相关设备之间的信息传输;该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照实施例中的代码扫描过滤方法的实施例,其内容被合并于此,重复之处不再赘述。图4为本发明实施例的电子设备9600的系统构成的示意框图。如图4所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图4是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。一实施例中,识别辅助功能可以被集成到中央处理器9100中。例如,中央处理器9100可以被配置为进行如下控制:s1:获取待识别的资金交易数据;所述资金交易数据包括时序数据;s2:根据每笔交易数据中的时序,依次将所述同一账户的连续两笔交易数据合并在一起组成一个数据单元,每个账户对应一个客户编号;s3:从每个数据单元中抽取多维信息属性以及其中的客户编号;s4:根据所述每一维信息属性下不同客户编号的数量,生成对应每一维信息属性的至少一个信息属性值;s5:将所有维度信息属性的组合取值,以及每一维信息属性的信息属性值输入到预设的聚类模型,得到每个所述数据单元的异常度;s6:根据每个所述数据单元的异常度辅助识别出可疑团伙的账户。从上述描述可知,本发明的实施例提供的电子设备,通过分析客户的基本交易信息,在没有标签数据的情况下,使用本发明的无监督机器学习模型,寻找出用户之间交易行为的相似性以及异常性,在巨量繁杂无序的交易流水信息中,识别出人力难以甄别的可疑团伙以及新的风险类型,提高金融风险防控能力。在另一个实施方式中,识别辅助装置可以与中央处理器9100分开配置,例如可以将识别辅助装置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现识别辅助功能。如图4所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图4中所示的所有部件;此外,电子设备9600还可以包括图4中没有示出的部件,可以参考现有技术。如图4所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为lcd显示器,但并不限于此。该存储器9140可以是固态存储器,例如,只读存储器(rom)、随机存取存储器(ram)、sim卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为eprom等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。本发明的实施例还提供能够实现上述实施例中的执行主体可以为服务器的代码扫描过滤方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的执行主体为服务器或客户端的代码扫描过滤方法的全部步骤。从上述描述可知,本发明的实施例提供的计算机可读存储介质,通过分析客户的基本交易信息,在没有标签数据的情况下,使用本发明的无监督机器学习模型,寻找出用户之间交易行为的相似性以及异常性,在巨量繁杂无序的交易流水信息中,识别出人力难以甄别的可疑团伙以及新的风险类型,提高金融风险防控能力。本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。当前第1页12当前第1页12