分享

引入安全测试

 zZ华 2023-02-20 发布于广东

安全测试是在整个产品研发生周期中的各个阶段接入多种能力进行检查,以确保产品符合安全需求定义和产品质量标准的过程。

安全测试涉及多种角色,不同角色参与安全测试落地的形式也各不相同。

以测试工程师为例:安全测试时从内容安全、数据合规、功能合规、隐私保护等安全角度考虑,在需求迭代流程中评估安全风险,通过引入安全测试工具,编写安全角度的测试用例及测试用例执行,以挖掘安全漏洞和风险的一系列动作。

安全测试的目的是确定软件系统所有可能的安全漏洞和风险点,它们会带来信息、资金、声誉等多方面的影响。

随着互联网融入人们生活的方方面面,用户的衣食住行都有各种应用提供便利的服务,而与此同时也存在诸多风险,如隐私泄露、资产受损、身份盗用、文件加密勒索等,这些风险严重威胁着企业与用户的利益。

随着网络技术的不断发展,网络攻击的种类越来越多,攻击方式也越来越复杂,在这种情况下我们应用采用什么措施来应对及降低安全风险呢?这就涉及下面所提到的安全测试的落地。

根据开源安全测试方法手册 OSSTMM(Open Source Security Testing Methodology Manual)的表述,安全测试包括但不限于漏洞扫描、安全扫描、渗透测试、风险评估、安全审核、“道德”黑盒这几种做法。

  • 漏洞扫描
    指基于漏洞数据库,通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测,发现可利用漏洞的一种安全检测行为;

  • 安全扫描
    指手工活使用特定的自动软件工具——安全扫描器,对系统风险进行评估,寻找可能对系统造成损耗的安全问题。扫描主要涉及系统和网络两个方面:系统扫描侧重于单个用户系统的平台安全特性,以及基于此平台的应用系统的安全;而网络扫描侧重于系统提供的网络应用和服务及相关的协议分析;

  • 渗透测试
    通过人工或自动渗透测试方式对应用进行全面检测,并挖掘应用源码中可能存在的安全风险、漏洞等问题。渗透测试能够帮助业务方直观地了解应用所面临的问题,以帮助业务方了解并提高其应用开发程序的安全性,有效预防可能存在的安全风险。

  • 风险评估
    从信息安全的角度来讲,风险评估是对信息资产(即某事件或事务所具有的信息集)所面临的威胁、存在的弱点、造成的影响,以及三者综合作用所带来风险的可能性评估。

  • 安全审核
    内容安全审核已成为短视频、新闻资讯、直播等平台优先级最高的运营需求,不管是通过人工审核还是以系统性的机器审核,都是以最安全与最适合产品的审核结果维度为主。

  • “道德”黑盒
    主要指的是通过“人工+工具”的方式模拟黑盒行为,对业务系统进行漏洞挖掘,根据业务的不同环境采取包括但不限于反编译、逆向、中间人攻击等技术。

在实际业务中,常见的安全漏洞有扫号漏洞、撞库漏洞、短信轰炸漏洞、接口越权、文件下载漏洞、接口敏感信息泄露漏洞等。

安全测试所涉及的知识领域十分庞大,除了各种安全测试方法、类型(黑盒、白盒、模糊测试)等,还涉及不同的端,如服务端、客户端、前端等。

那么有没有一套通用的规范将安全测试以较小的成本自然融入研发活动中,让RD(后端工程师)尽可能少做对各种工具的配置呢?

这里要介绍的S-SDLC(Secure Software Development Lifecycle Project ,轻量级应用安全开发生命周期(S-SDLC) — OWASP-CHINA),可以将安全测试纳入,作为其中的一环,使安全测试和研发动作结合,同时进行。

随着互联网的不断发展,人们使用各种应用的时长越来越长和频次越来越高,与之而来的是不断加深的安全风险,而社会对于用户的数据安全也越发关注(如交易数据、浏览数据、搜索数据等)。

在这个大背景下,公司在寻求业务高速发展的同时把安全合规放到了特别重要的地位,S-SDLC也就逐步被引入。

微软最早提出了安全软件开发生命周期(S-SDLC),从安全角度指导软件开发过程的管理模式,定义软件开发生命周期中需求、设计、开发、测试及维护各个阶段的安全活动,其核心概念是让安全活动融合到整个开发生命周期,以发挥安全测试的最大能力。


S-SDLC概览:

图片

S-SDLC 遇到的瓶颈:

安全本身并不是安全团队能够独立解决的问题。

由于 SDLC 无法实现责任共担,与现在的研发生命周期流程有割裂,因此更多的是安全部门主动向业务灌输需要解决哪些问题,业务方并不了解对应的收益。

对安全人员的投入与对业务人员的投入不成正比,目前(且长期也会)流程上是一对多的关系。公司内部对安全问题缺乏奖惩制度和规范;缺乏有效的度量框架,如 S-SDLC 做得好还是不好,由谁评估指标。如何激发业务人员对安全的积极性和投入度,尤其是在业务高速发展需要快速迭代的阶段。

如何突破以上瓶颈,下面介绍SDLC的进阶模式——DevSecOps。

DevSecOps是一种全新的安全理念于模式,从DevOps的概念延伸和演变而来,其核心理念为安全是整体IT团队(包括开发团队、运维团队、安全团队)中每个人的责任,需要贯穿从开发到运营整个业务生命周期的所有环节。

安全培训是S-SDLC流程中最早开展的一环,“流程未立意识先行”。

S-SDLC 流程的落地在一定程度上会改变大家早已习以为常的研发流程,这需要提前沟通;S-SDLC流程的落地也需要各种角色互相配合,只有这样流程才能顺利流转并发现安全漏洞。

基于以上两点,我们先进行安全培训的落地,其受众主要是业务RD,QA等直接参与流程建设的角色。培训内容主要有以下四个方面:

  • 目标对齐
    说明S-SDLC流程专项的背景及价值,目的是让大家在大方向上达成共识,使业务方理解并配合此流程落地。

  • 流程介绍和答疑
    介绍S-SDLC流程所涉及的平台方和业务方,以及各个阶段配置的安全测试能力、相关角色需要配合的工作内容,同时在培训会上详尽解答大家提出的问题。

  • 制度宣贯
    建立完善的S-SDLC线上制度,以此来及时感知业务方使用的问题和后续相关需求,建设完备的信息同步渠道,定期了解最新进展及规划,减少平台方和业务方的信息差。

  • 指导资料梳理
    输出全面的S-SDLC流程操作指导手册,录制相关的培训视频,提供S-SDLC试点空间,开展多种培训形式(文字、视频、实操演练等),以降低业务对S-SDLC流程理解和上手成本。

安全培训可以按照管理层对齐、试点子业务培训、整体业务培训等方式逐步递进,在顺利落地后,也可以考虑增加安全考核环节。如果RD为未参加安全培训,没有通过安全考核,则限制其合并代码、编译、提工单上线等权限,以保证安全培训在业务方的有效覆盖率。

安全测试在需求评审阶段就需要介入,S-SDLC流程跟敏捷测试流程一样,越早发现问题,修复的成本就越低,因此在需求评审阶段开展安全测试是十分有必要且有效的。

其中,安全测试是指在需求评审阶段增加 “安全评审环节” ,安全评审的执行方主要是安全部门、法务部门、审计部门、PR(公共关系)部门等,目的是在需求评审阶段就能够对本次提出的需求,从合规、反作弊、PR风险、数据敏感度、隐私保护等多方面进行评审。

若发现存在安全风险,则直接停止此项需求,防止风险流入后续环节,同时也避免了因为安全风险导致后续开发、测试、上线阶段的工作返工,造成资源浪费。

在需求评审阶段完成对需求的安全评审后,说明此项需求本身无安全风险,可以进入技术评审阶段。

技术评审更多关注的是代码实现维度上有无安全漏洞。在进行技术评审过程中,需要RD提供详细的技术方案,同时也需要详尽回复评审团队的疑问。

安全技术评审团队主要由公司的安全团队代表构成,此阶段主要从技术设计维度识别权限申请、日志记录、数据传输、编码等是否存在安全风险。

技术评审阶段完成后,RD 将进行针对本地需求的代码开发和自测/联调,这时我们也可以提供一些自测安全风险的工具,如白盒安全扫描工具,即将白盒安全扫描工具作为一个插件融入研发流程线,每次RD提交代码到开发分支后,自动出发流水线进行白盒安全扫描,查看有无安全漏洞。

若发现安全漏洞则将工单发送给安全工程师(Sec)进行回顾以确认是否需要立即修复,同时安全漏洞也会阻碍测试环境部署及后续代码合并操作,以此保证自测阶段的安全测试效果。

RD自测联调阶段的安全流程:

图片

RD提测后进行QA测试阶段,这时QA可以对安全测试用例进行构造补充,通过对应的安全测试方法和工具进行安全测试,提交记录BUG单,并反馈给RD进行修复。

安全漏洞BUG单的修复情况也是判断后续能否进行代码合并上线的标准之一。

当测试完毕进入上线阶段时,可以进行安全测试的最后一轮验收,如需求的黑盒扫描,即通过一些SQL注入、服务端请求伪造等操作进行安全验证;也可以进行安全漏洞BUG单状态检查;App端也可以在打包时进行自动化安全扫描。上线完毕后,针对必要场景也可以申请外部“道德”黑盒资源对系统安全性进行再次验收。

上面几点是研发过程中进行的安全测试任务,与此同时,我们也需要配置一些常态化的安全测试任务进行相关验证,比如进行流量采集并将其去重和格式化、将请求分发到扫描节点后修改请求的参数进行流量回访,以此进行对应的安全漏洞扫描,若发现问题则通过消息机器人通知对应的RD。

其中,流量采集后也可以通过模糊测试的方式构建异常流量,生产出较为丰富的异常用例再次进行流量回放,以验证系统鲁棒性和安全性。

由于安全测试涉及的技术领域比较广泛,同时随着S-SDLC流程在业务中的逐步落地,所涉及的角色也在不断增加,因此无法由一种角色来完成安全测试的能力提供、推进落地、效果数据收集、流程优化等整个闭环。

一般而言,需要有以下三种角色参与:

  1. 安全团队
    负责安全规范制定、安全平台建设、安全数据整体度量、看板建设等。

  2. 安全专项BP
    主要负责团队的安全规范培训、安全原子能力引入与本地化、安全测试数据定制化

  3. 业务团队
    主要负责使用S-SDLC流程在不同阶段配合安全测试及时进行安全漏洞修复,并反馈安全需求。

角色安全测试合作模式如图:

图片

当前,在隐私安全愈发重要的前提下,公司在追求业务高速发展的同时都更加求稳,而安全测试就是能最大限度降低数据、权限、隐私、PR等多方面带来极端风险的有效解决方案。

安全测试是必须开展的一项能力建设,毫不夸张地将,在某种程度上产品安全性的价值比功能丰富度的价值更高,甚至影响整个公司的发展,因此风险就是最大的损失,安全就是最好的回报。

Microsoft SDL 的简化实施 - 过程图示

图片

安全培训贯穿始终:

图片

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多