一种软件开发过程中一站式安全测试和管理的方法与流程

文档序号:18526618发布日期:2019-08-24 10:18阅读:274来源:国知局
一种软件开发过程中一站式安全测试和管理的方法与流程

本发明涉及软件开发领域,具体来说是一种软件开发过程中一站式安全测试和管理的方法。



背景技术:

随着信息系统开发模式不断发展,从软件开发的瀑布模型到现在的敏捷开发,软件的开发周期从数年到数月、从数月到数天,时间不断变换缩减,让软件开发较末环节的安全专项团队也面临着新的挑战。为确保快速开发和新功能部署,安全团队必须确保安全评估的频率,既要保证安全风险最小化,同时也要考虑安全团队有限资源的可持续性,目前传统的代码扫描方式遇到了如下的诸多问题:

1)安全检测在系统上线前最后阶段进行,安全问题发现滞后,修复成本较高。

1)安全检测在系统上线前最后阶段进行,安全问题发现滞后,修复成本较高。

2)扫描工具的部分原生扫描规则不适用于开发总部系统,且误报高,工具原生报告差异大。

3)安全漏洞未和功能缺陷统一管理,不同项目组的安全问题也难以进行横向分析。

此外现有技术对软件开发过程中快速迭代的一站式安全测试和安全管理没有一套专门的方法,基本上都是除去安全测试外功能的快速迭代,或者设置单个安全测试功能模块,没有一站式的解决方法。因此,我们需要改变以往的安全扫描方式,通过自动化的安全扫描在有限的时间内尽量发现足够多的安全问题,降低系统安全风险。



技术实现要素:

本发明的目的在于解决现有技术的不足,提供一种软件开发过程中一站式安全测试和管理的方法,通过主动扫描和被动扫描相配合在有限的时间内尽量发现足够多的安全问题,降低系统安全风险。

为了实现上述目的,设计一种软件开发过程中一站式安全测试和管理的方法,所述的方法包括主机扫描、白盒扫描和黑盒扫描,所述的主机扫描、白盒扫描和黑盒扫描根据预先设置的扫描方式进行扫描,并分别获得主机扫描报告、白盒扫描报告和黑盒扫描报告,解析所述的主机扫描报告、白盒扫描报告和黑盒扫描报告后生成漏洞记录,存储至漏洞知识库中。

本发明还具有如下优选的技术方案:

所述的扫描方式包括主动扫描和被动扫描,所述的主动扫描是指根据用户的主动操作而触发的一次性扫描,所述的被动扫描包括周期性扫描和触发性扫描,所述的周期性扫描是处理器根据用户的设置周期性运行的扫描任务,所述的触发性扫描是通过处理器根据用户的设置,每当持续集成工具产生增量,则调用白盒扫描工具进行白盒扫描。

在持续集成工具jenkins中新建触发性扫描任务,并配置好扫描资产信息及新建任务api调用脚本,并将触发性扫描任务配置为编译任务的关联任务,从而使得每次编译任务结束即可触发白盒扫描任务。

所述的主机扫描的扫描方式包括主动扫描以及周期性扫描,所述的黑盒扫描的扫描方式包括主动扫描,所述的白盒扫描的扫描方式包括主动扫描、周期性扫描和触发式扫描。

对于主机扫描完成后获得的主机扫描报告,首先将nexpose生成的html格式的原始主机扫描报告利用jsop解析器解析并存储为文本格式,而后遍历文本格式的以主机扫描报告查找漏洞节点,获得漏洞节点后,将漏洞节点实例化为对象vuldatailsdist,并根据设定的字段对于对象vuldatailsdist计算哈希值,以作为该漏洞的指示码并漏洞的对象vuldatailsdist及指示码存储入漏洞知识库中,对于相同指示码的漏洞判断为重复漏洞,不再重复加入至漏洞知识库中。

对于黑盒扫描完成后获得的黑盒扫描报告,将awvs扫描器生成的xml格式的原始黑盒扫描报告上传至漏洞聚合组件threadfix,通过漏洞聚合组件threadfix解析awvs报告获取漏洞数据,漏洞聚合组件threadfix根据预先设置的漏洞标识符与漏洞知识库条目对应关系,将每个漏洞映射到漏洞知识库条目,而后漏洞聚合组件threadfix保留原始黑盒扫描报告中的漏洞信息“httprequest”和“httpresponse”字段作为漏洞验证数据,将漏洞其他信息更新成漏洞知识库条目对应字段的数据,并保存到漏洞知识库中,而后根据scanid混淆识别工具查询threadnfix数据库漏洞信息并返回实例化对象vuldetailsdist,并根据设定的字段对于对象vuldatailsdist计算哈希值,以作为该漏洞的指示码并漏洞的对象vuldatailsdist及指示码存储入漏洞知识库中,对于相同指示码的漏洞判断为重复漏洞,不再重复加入至漏洞知识库中。

对于白盒扫描完成后获得的白盒扫描报告,将jenkins调用findsecuritybugs生成的xml格式的原始白盒扫描报告上传至漏洞聚合组件threadfix,threadfix解析原始白盒扫描报告获取漏洞数据,漏洞聚合组件threadfix根据预先设置的漏洞标识符与漏洞知识库条目对应关系,将每个漏洞映射到漏洞知识库条目,而后漏洞聚合组件threadfix将漏洞信息更新成漏洞知识库条目对应字段的数据,并保存到漏洞知识库中,而后根据scanid混淆识别工具查询threadnfix数据库漏洞信息并返回实例化对象vuldetailsdist,再根据vuldetailsdist字段及原始白盒扫描报告中的rawfingding字段解析其中的sourceline标签start属性获取漏洞代码所在行,而后安全管理平台从白盒扫描工具jenkins下载文件的源码文件,根据漏洞所在行取源码文件中的前后若干行数据存为漏洞验证字段,并根据设定的字段对于对象vuldatailsdist计算哈希值,以作为该漏洞的指示码并漏洞的对象vuldatailsdist及指示码存储入漏洞知识库中,对于相同指示码的漏洞判断为重复漏洞,不再重复加入至漏洞知识库中。

对于增加至漏洞知识库中的漏洞数据,标记漏洞状态为未确认,以供安全测试人员查看,若为误报,则将漏洞状态变更为已忽略,若为缺陷,则将漏洞提交至统一缺陷管理平台的存储器等待修复,漏洞数据相关的项目组成员可在漏洞知识库中查看漏洞并自行修复,也可将漏洞提交至统一缺陷管理平台的存储器进行修复流程跟踪。

本发明同现有技术相比,其优点在于:本发明提供了一种软件开发过程中一站式安全测试和管理的方法,针对主机、代码和软件分别设置不同的安全扫描流程和扫描规则,误报率低,使得安全检测能够尽早地将安全问题发现,降低修复的成本,且对原始扫描报告进行处理并统一归类至漏洞知识库中,安全漏洞能和功能缺陷统一管理,不同项目组的安全问题也可以进行横向分析。

附图说明

图1是本发明的流程示意图;

图2是本发明的主机扫描的流程示意图;

图3是本发明的主机扫描报告的解析流程示意图;

图4是本发明的黑盒扫描的流程示意图;

图5是本发明的黑盒扫描报告的解析流程示意图;

图6是本发明的白盒扫描的流程示意图;

图7是本发明的白盒扫描报告的解析流程示意图;

图8是本发明的漏洞管理及处理流程示意图。

具体实施方式

下面结合附图对本发明作进一步说明,这种方法的原理对本专业的人来说是非常清楚的。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

参见图1本实施方式提供一种软件开发过程中一站式安全测试和管理的方法,用户在一站式安全管理系统中对任务进行管理,如新建、修改和删除任务,对于用户添加的周期性任务,一站式安全管理的处理器将其添加至任务调度器中,按用户设定的周期运行,而对于非周期性任务,处理器将其添加至线程池中,按先后顺序进行运行。本实施方式能对每次扫描的任务进行展示及管理,其中扫描任务的类型包括主机扫描、白盒扫描和黑盒扫描,其中的白盒扫描即代码扫描,黑盒扫描及应用扫描。扫描任务的建立主要包括主动扫描和自动扫描两种方式,主动扫描即为操作人员手动新建任务,而自动扫描包括触发式扫描、以及周期性扫描,周期性扫描即是设置任务调度器按设定的周期自动定期进行扫描,例如可以设定自动扫描周期为一天,即每日的自动扫描的任务会以天为单位,出现在任务列表中。主机扫描主要采用主动扫描以及周期性扫描,黑盒扫描主要采用主动扫描,白盒扫描则采用主动扫描、周期性扫描和触发式扫描三种扫描方式。在本实施方式中,主机扫描通过nexpose扫描工具实现,白盒扫描通过jenkins(findbugs)扫描工具实现,黑盒扫描通过awvs扫描工具实现。

而在扫描完成后会生成扫描报告,即漏洞报告,本实施方式中的一站式安全管理平台的漏洞库主要参考了cwe(commonweaknessenumeration)标准,并从cwe所有的缺陷项中针对常见的且明确的漏洞条目进行归纳总结,形成预置的漏洞知识库,包含漏洞名称、分类、等级、原理、修复方案等等详情。主机扫描的结果基本上是存在于cve(commonvulnerabilitiesandexposures)漏洞库中的漏洞,且在公开发布相应漏洞时采用了cvss(commonvulnerabilityscoringsystem)标准进行评分,故安全管理系统直接使用主机扫描原生报告中的内容。但黑盒及白盒检测工具发现的漏洞大多数不在cve列表,也没有自动按照cvss进行打分,则将黑白盒的扫描结果映射到预置的漏洞知识库中,保留具体的漏洞验证信息,如请求相应数据包、或代码片段等,漏洞的其他信息均统一使用漏洞知识库中的内容。漏洞知识库中内容由安全人员整理,经由研发人员共同评审后定稿,确保研发人员易于理解。用这种方法,可以最大程度忽略各扫描器扫描原生报告的差异,以尽可能把统一形式的结果反馈给研发人员,即使后续对扫描器进行新增或替换,依然可以确保展示给研发人员的漏洞信息是经过安全人员优化及评审后的内容。

本实施方式中,一站式安全管理平台解析扫描工具报告主要借助于漏洞聚合工具threadfix,通过在threadfix中预置漏洞知识库,利用threadfix自动完成报告解析及漏洞映射,减少手动关联漏洞工作量。一站式安全管理平台的存储器中的漏洞库主要参考了cwe(commonweaknessenumeration)标准,并从cwe所有的缺陷项中针对常见的且明确的漏洞条目进行归纳总结,形成预置的漏洞知识库导入漏洞聚合工具threadfix,包含漏洞名称、分类、等级、原理、修复方案等等详情。所述的归纳总结具体包括如下步骤:首先对cwe所有缺陷项进行翻译,形成中文漏洞信息。而后,根据最佳实践对cwe中所有条目进行分类,如将所有的sql相关条目对应到“sql注入”类别中,分类由资深安全工程师人工进行,最终将cwe的所有条目对应到几十个漏洞分类中。并且,针对每个漏洞分类,总结出这里写的漏洞名称、分类、等级等信息,最后根据最佳实践内容对cwe条目及漏洞分类进行补充。

参见图2,用户通过互联网等方式接入一站式安全测试管理系统,并可以在服务器中新建主机资产,而对于主机扫描的执行有如下几个步骤:

1)用户在一站式安全测试管理系统中可以选择待扫描的主机资产,并新建主机扫描任务或者一站式安全测试管理系统的处理器周期性的新建主机扫描任务。

2)一站式安全测试管理系统的处理器调度主机扫描任务,调用主机扫描工具发起任务。

3)一站式安全测试管理系统的处理器轮询查询的扫描任务结果,并在扫描完成后,通过处理器解析主机扫描报告,校验后将主机扫描报告内容转化为具体的漏洞数据,并将漏洞数据归入存储器的漏洞知识库中的漏洞列表中,在安全测试管理对同步的漏洞数据校验并入库后,会向用户发送即时通信工具提醒。

4)用户收到提醒后能在一站式安全测试管理系统查询扫描结果,查看任务关联的漏洞。

参见图3,对于主机扫描报告,主机扫描的结果基本上是存在于cve(commonvulnerabilitiesandexposures)漏洞库中的漏洞,且在公开发布相应漏洞时采用了cvss(commonvulnerabilityscoringsystem)标准进行评分,故安全管理平台直接使用主机扫描原生报告中的内容,不再通过threadfix映射到预置漏洞库中。对于主机扫描完成后获得的主机扫描报告,首先安全管理平台从一站式安全测试管理系统下载nexpose生成的html格式的原始主机扫描报告,并利用jsop解析器解析html并存储为文本格式,而后遍历文本格式的以主机扫描报告查找漏洞节点,获得漏洞节点后,将漏洞节点相关的数据节点实例化为对象vuldatailsdist,根据设定的字段,例如漏洞名称、分类、等级、原理、修复方案等字段对于对象vuldatailsdist计算哈希值,以作为该漏洞的指示码,以便漏洞知识库的组建,对于相同指示码(即得到的哈希值相同)的漏洞判断为重复漏洞,不再重复加入至漏洞知识库中。

参见图4,用户通过互联网等方式接入一站式安全测试管理系统,并可以在系统中新建应用资产,应用资产的含义为信息系统或web应用,安全管理平台以资产为维度来管理web应用,一个web应用可看作部门或公司的一个应用资产,同理,一个主机可看做部门或公司的一个主机资产,一段代码可看作是部门或公司的一个代码资产,而本实施方式中的黑盒扫描,即是针对应用资产的应用扫描,的执行有如下几个步骤:

1)用户在一站式安全测试管理系统中选择待扫描的应用资产,并新建应用黑盒扫描任务。

2)一站式安全测试管理系统的处理器调度应用黑盒扫描任务,调用黑盒扫描工具发起任务。

3)一站式安全测试管理系统的处理器轮询查询扫描工具的扫描任务结果,并在黑盒扫描工具扫描完成后,处理器将黑盒扫描报告上传至聚合工具进行解析,解析完成后从聚合工具同步漏洞数据至一站式安全测试管理系统的存储器中漏洞知识库中的漏洞列表中,在安全测试管理对同步的漏洞数据校验并入库后,会向用户发送即时通信工具提醒。

4)用户收到提醒后能在一站式安全测试管理系统查询扫描结果,查看任务关联的漏洞。

参见图5,对于黑盒扫描报告,黑盒应用检测工具发现的漏洞大多数不在cve列表,也没有自动按照cvss进行打分,则将黑盒的扫描结果映射到预置的漏洞知识库中,保留具体的漏洞验证信息,漏洞的其他信息均统一使用漏洞知识库中的内容。

threadfix数据库中自带了awvs扫描器所能发现的所有漏洞标识符(漏洞名称),故预置了漏洞知识库后,还需在threadfix中对应配置每个漏洞标识符和漏洞知识库条目的映射关系,threadfix才能在完成报告解析后自动进行漏洞的映射。

具体而言,对于黑盒扫描完成后获得的黑盒扫描报告,首先安全管理平台从一站式安全测试管理系统下载awvs生成的xml格式的原始黑盒扫描报告,并将原始黑盒扫描报告上传至漏洞聚合组件threadfix,通过漏洞聚合组件threadfix自动解析awvs报告获取每个漏洞数据,漏洞聚合组件threadfix根据预先设置的漏洞标识符(例如漏洞名称)与漏洞知识库条目对应关系,将每个漏洞映射到漏洞知识库条目,而后漏洞聚合组件threadfix保留原始黑盒扫描报告中的漏洞信息“httprequest”和“httpresponse”字段作为漏洞验证数据,将漏洞其他信息更新成漏洞知识库条目对应字段的数据,并保存到漏洞知识库中。安全管理平台根据scanid混淆识别工具查询threadnfix数据库漏洞信息并返回实例化对象vuldetailsdist,根据设定的字段,例如漏洞名称、分类、等级、原理、修复方案等字段对于对象vuldatailsdist计算哈希值,以作为该漏洞的指示码,以便漏洞知识库的组建,对于相同指示码(即得到的哈希值相同)的漏洞判断为重复漏洞,不再重复加入至漏洞知识库中。

参见图6,用户通过互联网等方式接入一站式安全测试管理系统,并可以在系统中新建代码资产,白盒扫描,即代码扫描,的执行有如下几个步骤:

1)用户在安全测试管理系统中选择待扫描的代码资产,新建应用源代码白盒扫描任务或者一站式安全测试管理系统的处理器周期性的新建主机扫描任务或者建立触发式扫描。

其中,触发式扫描是指通过在持续集成工具添加插件来和聚合工具进行绑定,每当持续集成工具产生增量,就会调用白盒扫描工具扫描,即每次用户在生产环境持续集成工具上获取代码进行编译时,就会触发调用一站式安全测试管理扫描任务新建接口新建白盒扫描任务。例如,在应用系统ci/cd(持续集成/持续交付)的过程中,新建并触发相应的扫描任务。一站式安全测试管理方法开放新建任务接口,可在jenkins中、甚至是研发人员自己的某些脚本中进行调用。如研发人员想在每次代码构建后触发源代码白盒扫描,即可在jenkins上新建job,提前配置好扫描资产信息及新建任务api调用脚本,并将此job配置为编译任务的关联任务,每次编译任务结束即可触发源代码扫描任务。以这种形式,可实现将自动化扫描嵌入到研发人员现有的工具链及流程中,同时也保证了ci/cd集成及交付工具与一站式安全管理系统、扫描引擎的解耦,如果扫描任务调度、执行机制等发生变化,也无需改变提供给外部的接口,减少研发人员配置工作。

2)一站式安全测试管理系统的处理器调度源代码白盒扫描任务,调用白盒扫描引擎持续集成工具发起任务。

3)一站式安全测试管理系统轮询查询持续集成工具的扫描任务结果,在持续集成工具扫描完成后,一站式安全测试管理系统将扫描报告上传至聚合工具进行解析,解析完成后从聚合工具同步漏洞数据,聚合工具的数据库和一站式安全测试管理的存储器通过触发器建立同步,每当聚合工具的数据库产生新的漏洞,一站式安全测试管理的数据库就会同步更新,并将新的漏洞同步到漏洞列表中。在安全测试管理对同步的漏洞数据校验并入库后,会向用户发送即时通信工具提醒。

4)用户收到提醒后在安全测试管理中查询扫描结果,并可查看任务关联的漏洞。

参见图7,白盒源代码扫描报告解析流程和黑盒应用扫描大致相似,都是通过漏洞聚合工具threadfix完成报告解析、漏洞库映射以及漏洞信息更新。差异主要在于白盒源代码扫描的原始报告中只包含发现漏洞的代码行,安全管理平台通过代码行数获取相应的代码片段,更新到漏洞验证字段。具体而言,jenkins调用findsecuritybugs完成白盒扫描后,安全管理平台下载白盒扫描工具jenkins+findsecuritybugs完成白盒扫描后获得的xml格式原始白盒扫描报告,并将之上传至漏洞聚合组件threadfix中,threadfix自动解析原始白盒扫描报告获取每个漏洞数据,漏洞聚合组件threadfix根据预先设置的漏洞标识符与漏洞知识库条目对应关系,将每个漏洞映射到漏洞知识库条目,而后漏洞聚合组件threadfix将漏洞信息更新成漏洞知识库条目对应字段的数据,并保存到漏洞知识库中,而后根据scanid混淆识别工具查询threadnfix数据库漏洞信息并返回实例化对象vuldetailsdist,安全管理平台根据vuldetailsdist字段及原始白盒扫描报告中的rawfingding字段解析其中的sourceline标签start属性获取漏洞代码所在行,而后安全管理平台从白盒扫描工具jenkins下载文件的源码文件,根据漏洞所在行取源码文件中的前后15行数据存为漏洞验证字段,根据设定的字段,例如漏洞名称、分类、等级、原理、修复方案等字段对于对象vuldatailsdist计算哈希值,以作为该漏洞的指示码,以便漏洞知识库的组建,对于相同指示码(即得到的哈希值相同)的漏洞判断为重复漏洞,不再重复加入至漏洞知识库中。漏洞验证字段是漏洞详情展示的核心信息之一,源代码扫描工具findsecuritybugs原生报告中没有此信息,导致漏洞详情信息不完整。本实施方式通过上述设计实现了这种场景下漏洞详情信息的补全。

并根据设定的字段对于对象vuldatailsdist计算哈希值,以作为该漏洞的指示码并漏洞的对象vuldatailsdist及指示码存储入漏洞知识库中,对于相同指示码的漏洞判断为重复漏洞,不再重复加入至漏洞知识库中。

参见图8,此外,一站式安全管理系统通过单点登录方式打通至统一缺陷管理平台,并复用统一缺陷管理平台中的项目管理和缺陷跟踪工具redmine的测试问题单管理流程,具体流程设计如下:

1)一站式安全管理系统完成扫描报告解析,生成漏洞记录,此时漏洞状态为“未确认”。

2)安全测试人员对漏洞进行确认审核,若为误报,则将漏洞状态变更为“已忽略”。

3)安全测试人员对漏洞进行确认审核,若为缺陷,则将漏洞提交至统一缺陷管理平台的存储器。

4)项目组成员可查看漏洞并自行修复,也可将漏洞提交至统一缺陷管理平台的存储器进行修复流程跟踪。

5)相同功能的测试缺陷、安全测试缺陷在统一缺陷管理平台中进行修复流程跟踪。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1