用户工具

站点工具


service:techmag:201906_035:13

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
service:techmag:201906_035:13 [2019/08/14 08:56]
- 创建自 wiki:newitem 的表单
service:techmag:201906_035:13 [2019/09/18 05:20] (当前版本)
-
行 1: 行 1:
 ====== 证券行业安全测试管理平台建设实践 ====== ====== 证券行业安全测试管理平台建设实践 ======
-简要介绍条目 +文选自[[service:​techmag:​201906_035:​start|《交易技术前沿》总第三十五期文章(2019年6月)]] 
-{{tag>}}+{{tag>安全测试管理平台}} 
 +<WRAP centeralign>​ 
 +房慧丽 张旭 / 上交所技术有限责任公司 质量保障部 ​ hlfang@sse.com.cn\\ 
 +</​WRAP>​
  
-<WRAP center round important 60%> +  摘要:本文分析了证券行业信息系统安全开发生命周期管理及实践中的问题与挑战,针对安全检测滞后、漏洞管理分散等普遍问题,结合DevSecOps理论及技术,设计并实现了集自动化安全测试与平台化漏洞管理为一体的应用程序安全测试编排工具,即安全测试管理平台,以期为信息系统解决安全漏洞、降低系统风险提供有力工具支撑。\\ 
-这是个页面模板编写前请必阅读[[wiki:newbie:start|编写须知]]。+  关键字:证券行业 信息系统安全开发生命周期 DevSecOps 安全测试管理平台\\ 
 +===== 、 安全测试管理平台建设背景 ===== 
 +==== (一) 证券行业信息安全态势简述 ==== 
 +  近年来随着证券行业快速发展、业务不断创,证券行业对信息系统的依赖程度日益加深。但发展的同时,由于承载大量敏感数据、系统架构复杂等特点,证券行业信息系统也临着巨大的安全威胁与挑战。并且随着移动互联网、大数据、云计算等新技术在证券行业的应用推广,证券行业信息系统的攻击面及威胁进一步扩展。除此之外,国家及行业内部相应的监管要求也进一步提高:在《网络安全法》中明确规定,建设关键信息基础设施应当确保其具有支持业稳定、持续运行的性能,并能保证安全技术措施同步规划、同步建设、同步使用;习总书记也指出“金融、能源、电力、通信、交通等领域的关键信息基础设施是经济社会运行的神经中枢,是网络安全的重中之重,也是可能遭到重点攻击的目标”。因此,保障信息系统安全运行不仅是证券行业机构自身业务发展及竞争需求,也是其应尽的法律业务。\\ 
 +  根据国内知名安全媒体FreeBuf(漏洞盒子)发布的《2017金融行业应用安全态势年度报告》<​sup>​[1]</​sup>​,证券行业的应用安全往往是用户更为关心的,报告中基于大数据统计出证券行业中出现的主要漏洞类型主要集中在一些常见的应用层漏洞上,且接近50%的漏洞属于非常容易被利用的范围,如图1及图2中所示。因此,在信息系统开发生命周期中通过各环节的安全活动减少系统应用层漏洞,依然是证券行业机构信息安全工作的重点之一。\\ 
 +{{ :​service:​techmag:201906_035:1.loudong.png ​|}} 
 +<WRAP centeralign>​ 
 +图1 证券行业漏洞类型
 </​WRAP>​ </​WRAP>​
-===== 二级标题 ​ ===== +{{ :​service:​techmag:​201906_035:​2.nandu.png |}} 
-\\ +<WRAP centeralign>​ 
-\\ +图2 证券行业漏洞利用难易程度 
-==== 三级标题 ==== +</​WRAP>​ 
-\\ + 
-\\ +
-=== 四级标题 === +
-\\ +
-\\ +
-== 五级标题 == +
-\\ +
-\\ +
----- +
-===== 参考文档 ​ ===== +
-最后请列出所有参考的公开资料的URL。+
  
 +==== (二) 安全开发生命周期(SDL)理论 ====
 +  为了帮助非安全专业的开发人员构建更安全的软件、解决安全合规要求、同时降低开发成本,微软提出了安全开发生命周期(SDL)即Security Development Lifecycle,SDL的核心理念就是将安全考虑集成在软件开发的每一个阶段:​安全培训、需求分析、设计、编码、测试和维护。从需求、设计到发布产品的每一个阶段每都增加了相应的安全活动,以减少软件中漏洞的数量并将安全缺陷降低到最小程度。安全开发生命周期 (SDL)是侧重于软件开发的安全保证过程,旨在开发出安全的软件应用,安全活动简图如图3所示<​sup>​[2]</​sup>​。\\
 +{{ :​service:​techmag:​201906_035:​3.sdl.png |}}
 +<WRAP centeralign>​
 +图3 SDL安全活动简图
 +</​WRAP>​
 +  在完整的安全开发生命周期中,产品研发阶段,即需求分析、设计、编码、测试阶段,涉及的安全活动着力于在产品部署上线前消除安全风险、修复安全漏洞。产品研发阶段核心关键安全活动实践主要包括:安全需求确认、安全编码、源代码安全测试、开源组件安全测试、动态应用安全测试、静态应用安全测试、交互应用安全测试等等。\\
 +==== (三) 安全开发生命周期实践中的问题 ====
 +  在信息系统安全开发生命周期实践的过程中,由于大部分证券行业机构因安全资源有限、开发任务紧急繁重等原因,产品研发阶段关键安全活动在开展时常常遇到各种问题和阻碍:\\
 +  1、安全风险发现滞后,问题整改成本较高\\
 +  由于在信息系统研发过程中,研发人员往往对安全需求、安全设计、安全测试重视及投入不足,或者缺乏相应的安全检测工具及技能;而安全人员往往在系统上线前介入到系统的安全检测工作中,此时信息系统的代码开发、功能验证等工作均已完成,在这个节点发现的安全问题已经较为滞后,安全问题整改需要重新进行相应的编码与测试工作,可能会影响系统最终上线进度,问题整改成本较高。\\
 +  2、安全漏洞管理机制不成熟\\
 +  不同于互联网企业,相当部分的证券行业机构还停留在安全漏洞管理的初级阶段,通常只有很少的漏洞管理流程或程序,且自动化的程度低,漏洞管理流程数据不可量化。不成熟的安全漏洞管理不仅不利于安全团队清晰掌控整体的安全状况,不便于开展公司级别的安全威胁与风险分析;同时也不利于向研发团队提供安全质量度量指标,无法加入信息系统整体的质量门限进行统一的监控与提升。\\
 +  3、安全测试工具与现有研发工具、规范、流程脱节\\
 +  安全测试中所需的工具往往较独立,不是天然集成在研发工具链中,且在常规的研发流程中也属于单独的一环,期望研发人员能在系统研发测试的工作中使用多种专业工具来参与安全工作难度较大。同时,现有的安全检测工具原生的检测策略及规则在实际工作中,与不同公司的规范及流程也存在差异,可能存在部分不适用的检测项;不同检测工具的原生报告在漏洞描述、定级,乃至于详略程度上也有很大差异,直接把这样的检测结果提供给研发人员,也是增加了研发人员修复安全漏洞的难度。\\
 +  为了应对上述的各种问题与挑战,给信息系统产品研发阶段安全检测管理组织提供解决方案,本文从上交所技术公司信息系统研发阶段安全工作现状的实际出发,介绍了集自动化扫描、平台化漏洞管理、资产管理等功能于一体的安全测试管理平台建设方案,具体的建设需求如下:\\
 +  1) 通过将软件开发生命周期内的安全工具进行整合,集成到研发人员现有的工具链及流程中,在信息系统研发测试阶段建立自动化安全测试能力,将安全活动前移,通过自动化检测同步发现和解决安全问题。\\
 +  2) 在安全测试管理平台中建立自动化的漏洞管理机制,实现对所有研发团队安全漏洞的横向管理及可视化分析,并打通至研发人员统一使用的缺陷管理平台,将系统安全指标作为质量门限的指标之一进行跟踪。\\
 +  3) 根据上交所技术公司编码规范与行业最佳实践优化安全检测工具规则,筛选出适用于上交所技术公司信息系统的扫描策略与规则,有效降低误报率;同时优化不同扫描工具输出报告内容,将不同扫描工具结果以统一形式、更易于开发人员理解的表达进行展示。\\
 +===== 二、 安全测试管理平台的设计 =====
 +==== (一) 安全测试管理平台总体架构设计 ====
 +  根据以上的建设需求,安全测试管理平台主要的功能模块包括资产管理、自动化扫描任务管理、安全漏洞管理三大模块。安全测试管理平台提供从资产到漏洞的端到端管理,总体思路是在各环节整合开源第三方组件,并将所有安全漏洞数据在安全测试管理平台展示,系统总体业务架构如图4所示。\\
 +  通过安全测试管理平台,用户可录入待扫描的资产,根据自己的实际需求新建相应的自动化扫描任务。平台会根据扫描任务设置对各扫描工具进行统一调度,待扫描工具结束扫描后,获取工具原生扫描报告,并对其进行解析聚合后生成统一格式的安全漏洞记录入库。安全漏洞入库之时,平台会根据历史漏洞的处理情况,进行重复漏洞及误报漏洞的标记,并标记扫描任务正常执行完成。用户可查看扫描结果、手动设置误报或提交漏洞至缺陷管理平台,安全漏洞可以和功能测试缺陷一起进行跟踪分析,安全测试管理平台会实时同步缺陷管理平台上相应工单的处理状态。\\
 +{{ :​service:​techmag:​201906_035:​4.anquancehsi.png |}}
 +<WRAP centeralign>​
 +图4 安全测试管理平台业务框架
 +</​WRAP>​
  
- +==== (二) 安全测试管理平台核心功能流程设计 ==== 
 +1、资产管理\\ 
 +  安全测试管理平台上核心功能都是以待扫描资产为基础,也是通过待扫描资产进行关联,平台上将待扫描的资产区分为3种类型:主机资产、应用资产、源代码资产。其中,主机资产的核心信息为IP地址、端口以及主机上部署的服务;应用资产的核心信息为Web应用URL地址,或使用Burp Suite工具捕获的数据流量包;源代码资产的核心信息为Web应用源代码的SVN及Git地址,或源代码Zip包。\\ 
 +  除了手工录入待扫描资产信息,平台支持针对主机资产的操作系统、网络服务及第三方应用程序等服务属性进行自动发现,并支持根据这类服务属性对主机资产进行检索,可对这些重要的信息资产进行动态收集管理,减少日常安全工作中维护相关信息资产的人工工作量。\\ 
 + 
 +2、自动化扫描任务管理\\ 
 +  安全测试管理平台支持包含主机扫描、黑盒应用扫描、白盒源代码扫描在内的3种扫描类型,相对应的扫描引擎包含了商业及开源工具。安全管理平台和扫描引擎解耦,通过API接口调用的形式,异步触发扫描工具执行扫描任务。扫描任务的调度、扫描结果的解析、安全漏洞处理等等步骤,均由安全测试管理平台以及漏洞聚合工具Threadfix完成,便于后续增加或替换扫描引擎,具体流程如图5所示。\\ 
 +  除了通过安全测试管理平台中手动新建单次或定时任务触发扫描,还可以在应用系统CI/​CD的过程中,新建并触发相应的扫描任务。安全测试管理平台开放新建任务接口,可在Jenkins中、甚至是研发人员自己的某些脚本中进行调用。如研发人员想在每次代码构建后触发源代码扫描,即可在Jenkins上新建Job,提前配置好扫描资产信息及新建任务API调用脚本,并将此Job配置为编译任务的关联任务,每次编译任务结束即可触发源代码扫描任务。以这种形式,可实现将自动化扫描嵌入到研发人员现有的工具链及流程中,同时也保证了CI/​CD集成及交付工具与安全管理平台、扫描引擎的解耦,如果扫描任务调度、执行机制等发生变化,也无需改变提供给外部的接口,减少研发人员配置工作。\\ 
 +{{ :​service:​techmag:​201906_035:​5.zidonghuasaomiaorenwu.png |}} 
 +<WRAP centeralign>​ 
 +图5 自动化扫描任务执行流程图 
 +</​WRAP>​ 
 + 
 +  安全管理平台对接的扫描工具分别为Nexpose、AWVS以及Find Security Bug,在安全测试管理平台的建设过程中,项目组根据上交所技术公司技术开发总部现有系统特点,对各扫描器的扫描规则进行了相应的增删改,以形成适用于本公司系统的扫描规则。如针对研发人员并没有使用的PHP等语言相关检测规则进行了删减,或通过Python等形式的脚本针对原生规则无法检测的某些场景开发特定的检测规则。安全人员也会在安全管理平台日常使用过程中,根据实际的检测结果对扫描规则进行定期优化以持续提升平台发现漏洞的准确性。\\ 
 + 
 +3、安全漏洞管理\\ 
 +  安全管理平台的漏洞库主要参考了CWE(Common Weakness Enumeration)标准,并从CWE所有的缺陷项中针对常见的且明确的漏洞条目进行归纳总结,形成预置的漏洞知识库,包含漏洞名称、分类、等级、原理、修复方案等等详情。主机扫描的结果基本上是存在于CVE(Common Vulnerabilities and Exposures)漏洞库中的漏洞,且在公开发布相应漏洞时采用了CVSS(Common Vulnerability Scoring System)标准进行评分,故安全管理平台直接使用主机扫描原生报告中的内容。但黑盒及白盒检测工具发现的漏洞大多数不在CVE列表,也没有自动按照CVSS进行打分,则将黑白盒的扫描结果映射到预置的漏洞知识库中,保留具体的漏洞验证信息,如请求相应数据包、或代码片段等,漏洞的其他信息均统一使用漏洞知识库中的内容。漏洞知识库中内容由安全人员整理,经由研发人员共同评审后定稿,确保研发人员易于理解。用这种方法,可以最大程度忽略各扫描器扫描原生报告的差异,以尽可能把统一形式的结果反馈给研发人员,即使后续对扫描器进行新增或替换,依然可以确保展示给研发人员的漏洞信息是经过安全人员优化及评审后的内容。\\ 
 +  由于在实际使用中,存在对同一个资产反复扫描出相同漏洞的场景,如发现的漏洞为无需修复的误报,又或者漏洞正在排期修复中,这种情况下用户并不希望对重复漏洞中的每个都进行流程上的处理。对此,安全管理平台对重复漏洞进行了标识:每个安全漏洞在入库时都会根据漏洞名称、分类、原理、修复方案、漏洞验证信息等等字段计算出该漏洞的hash值,如果不同漏洞记录的hash值相同,则互为重复漏洞。针对重复漏洞,安全管理平台有一系列减少用户工作量的机制:如漏洞被手动置为误报后,后续发现的重复漏洞会自动置为误报;对于已在修复中的漏洞,后续发现的重复漏洞会自动同步已有的修复流程信息等等。\\ 
 +  安全管理平台中安全漏洞来源为自动化扫描任务发现和人工渗透测试发现两种,目标是将公司所有应用级漏洞利用平台进行统一管理。不同于之前割裂式的漏洞管理,安全管理平台中安全漏洞与资产、项目、部门挂钩,可提供基于组织架构、时间、风险等级等多个维度的漏洞数据图形化报表,报表中同时包含新增与修复、全量与增量的漏洞数据展示。一方面方便安全人员定期进行横向的管理分析,通过数据的态势了解安全风险所在;一方面提供给不同项目的项目经理及研发人员,让他们了解公司整体安全水平及自己所处位置,给项目研发人员主动参与安全工作提供动力与压力。\\ 
 +  除了漏洞的横向管理,安全管理平台还打通至缺陷管理平台Jira,安全人员和研发人员均可将平台上的漏洞一键提交至Jira,具体流程如图6所示。项目研发人员会在Jira面板上看到安全问题的工单,方便研发人员在项目研发过程中对安全问题进行排期及修复。同时,根据平台及Jira上的漏洞数据,针对公司相关规范中的审计项自动计算出量化指标,作为质量门限的指标之一。\\ 
 +{{ :​service:​techmag:​201906_035:​6.loudongguanli.png |}} 
 +<WRAP centeralign>​ 
 +图6 漏洞管理流程图 
 +</​WRAP>​ 
 + 
 +===== 三、 安全测试管理平台建设总结 ===== 
 +  本文分析了证券行业机构在信息系统安全开发生命周期实践中面临的一些问题与挑战,并结合上交所技术公司信息系统研发阶段安全工作实际需求,介绍了集自动化扫描、平台化漏洞管理、资产管理等功能于一体的安全测试管理平台的建设方案。\\ 
 +  安全测试管理平台上线后,也在实际应用中体现了其价值:\\ 
 +  1、 提升安全工作效率。由所有安全检测工作仅在上线前由安全人员完成,逐步转变为,通过平台工具赋能,研发人员在系统开发周期内即进行基本的安全检测、问题修复,在系统进行上线安全检测前解决相当部分的安全漏洞,有效减少漏洞修改成本,也缓解了安全人员人手不足的问题。\\ 
 +  2、 降低系统安全风险。通过自动化的漏洞管理及图形化的数据报表,不仅使系统安全指标有了量化工具,还使其不再独立于系统的质量体系之外。在安全测试管理平台的推广过程中,不仅提升了公司系统的安全扫描覆盖率,还在慢慢提升研发人员安全编码的意识。\\ 
 +  虽然安全测试管理平台在上交所技术公司开发总部自动化安全扫描、平台化漏洞管理上取得了从零到一的进展,但由于安全技术及用户需求的不断发展,安全测试管理平台仍需不断打磨:拓展平台自动化扫描类型,使平台具备对移动app客户端进行安全检测的能力;建设包含安全需求、安全编码规范、安全代码样例、漏洞库等等内容的一站式知识库,推进安全知识共享,为研发人员修复安全漏洞提供便利;优化安全扫描策略及规则以降低误报,提升平台输出漏洞质量;持续收集用户反馈及使用习惯,不断提升平台用户体验友好度。\\ 
 +  除了平台本身功能的完善与拓展之外,还会将研究方向拓宽到移动安全、人工智能等新技术热点,并探索结合上交所金融云,推出面向行业机构、适用于信息系统产品研发阶段的安全测试编排产品,以期为提升行业信息安全水平添砖加瓦。\\ 
 + 
 +===== 参考文献 ===== 
 +【1】 FreeBuf:2017金融行业应用安全态势年度报告\\ 
 +https://​www.freebuf.com/​news/​topnews/​128874.html\\ 
 +【2】 绿盟科技:【软件安全设计】安全开发生命周期(SDL)\\ 
 +http://​blog.nsfocus.net/​sdl/​\\
  
阅读
service/techmag/201906_035/13.1565773016.txt.gz · 最后更改: 2019/08/14 08:56 由 -