安全开发如何“无痛分娩”?

作者:默安科技发哥

一、某“爆款”视频会议软件的市场滑铁卢

2020年初,一场突如其来的疫情,使得某知名视频会议系统日活用户从1000万飙升至2亿,资本市场对其一度看好。可好景不长,由于系统被曝出严重的隐私和安全问题,股价随之受挫,商业信誉严重受损,还被诸多政府机构、高科技公司禁用。

该视频会议软件的安全事件归根结底是开发安全没做到位,相信其安全团队和开发部门肯定因此经历了很多个不眠之夜。

其实早在2004年,微软就提出了SDL,强调安全要在早期开发过程介入,从根本上管控应用安全。在2020年的RSA大会上,专注于将安全集成到DevOps流程中的DevSecOps,更是大放异彩。本文将从安全部门角度出发,安全开发落地过程中容易被忽略的赋能与运营问题,希望可以给大家提供一些思路。

二、安全部门的难处

安全部门处境尴尬。受制于业务上线的需求,安全往往需要为业务让路,在实际执行过程中处于弱势,出问题时安全部门又需要救火和背锅。但从上文视频会议软件的案例中,我们也可以看到,安全对业务的重要性。无论是对业务的贡献,还是合规要求,甚至是更实际的——安全人员自身的绩效,都应该开展安全开发体系建设的工作。

关于安全开发体系建设的常见难点,首先我们来看两个案例:

案例1:某传统制造业企业,业务正在进行互联网转型,应用开发项目逐渐增多,但是安全团队规模依旧很小(5人以下),根本没有人力来执行安全测试、代码审计等安全工作,更别提安全开发体系建设。

案例2:某科技大行、安全团队规模很大,仅安全测试就有数十人,测试团队每年的人力成本上千万(一线城市)。项目逐年扩张,测试工作随之增加,但人力成本不可能无限增加。

一般来说,常见的安全开发落地难点包括:

(1) 人力不充足:安全人员严重短缺;
(2) 人员的抵触:自身安全能力不足,安全工作增加工作量但无法体现绩效;
(3) 流程的变更:安全介入,导致流程改变,短时间无法适应;
(4) 项目周期紧:开发周期原本已经很紧凑,加入安全工作后,时间上更加紧张。

三、安全赋能,合作共赢

无论是人力紧缺的小型安全团队,还是人力充足的成熟安全团队,要解决上面讲到的这些难处,最有效的方法莫过于赋能。但赋能也要讲究方式方法,不然可能适得其反。

合理的体系

合理高效的管理体系是确保开发安全管控的前提,安全开发管理体系需要定义安全介入的时机和每个角色需要执行的安全动作(安全工作和输出物),确保安全开发管控流程执行到位。但是这就对以前的流程产生了侵入,在设计体系时,应尽量避免产生新的制度和流程,采用对现有制度和流程修订优化的方式,降低执行的门槛。

常态化培训

对于缺乏安全经验的产品、开发等人员,应提供必要的安全培训(体系、意识、技能)的支持,以帮助相关人员提升安全能力,完成相关安全工作。对不同人员需要提供的培训内容也不太一样,下表是培训内容的一些参考:

合作的态度

安全开发体系的制定和落地推广离不开产品、开发、测试等部门和人员的认可、参与,安全团队不能让大家认为安全部门是在加码任务,设置卡点,要以合作的姿态开展工作,前期应以提供帮助解决安全问题为重。
举个例子:

某传统行业的科技子公司,在推行安全开发体系之前,先对开发部门进行调研,主要方向是收集开发部门日常工作中遇到的安全问题,了解开发部门非常头疼逻辑越权、SQL注入和隐私数据安全的问题。安全部门将这些问题作为安全开发体系落地过程中的专题,提供编码安全规范和代码示例指引开发人员提升代码质量,从源头上避免这些问题。编码提交后,通过IAST测试平台(交互式动态测试),帮助开发人员查漏补缺。并且IAST发现的漏洞详情非常详尽:漏洞对应的代码位置、执行过程展示、修复方法和示例代码,甚至提供可以直接引用的安全组件,尽一切可能帮助开发复现和修复漏洞。

注:应用安全测试目前在市场上有众多的解决方案,其中最老牌、应用最为广泛的时SAST(静态)和DAST(动态)测试工具,通过在源代码 (SAST) 或公开对外接口 (DAST) 上运行安全扫描,可以在应用上线之前识别并纠正许多漏洞。

然而随着 DevSecOps 被广泛接纳,Gartner 在 2017 年的研究报告中明确提倡用 Interactive Application Security Testing (IAST) 交互式应用安全测试替换 SAST 和 DAST。

在后续的安全开发体系落地过程中,开发部门非常配合。在20多个试点项目中,发现并修复了近千个逻辑越权漏洞和数百个SQL注入漏洞,隐私数据的安全情况也得到大大改善。

高效的安全工具

正如前面讲到的例子,IAST可以帮助开发人员排查修复漏洞,其根本意义在于安全工具可以给安全能力相对较弱的人员提供安全赋能。选择使用门槛低且检测效率高的安全工具,可以在很短的时间内落实相关环节的安全工作。另一方面,在使用优良的安全工具过程中,相关人员对安全知识的掌握和认知也会得到极大的提升。

知识库支持

知识库主要是用于提升人员的安全能力和效率,例如,一般的产品经理并不具备威胁建模的能力,需要提供威胁建模知识库,知识库会给出具体业务场景下的安全威胁和对应的安全要求,帮助产品经理快速准确的完成威胁建模的工作。优秀的知识库都需要长期积累,平时需要由安全部门维护更新,沉淀项目中积累的问题,持续提升赋能效果。

四、安全运营,解决执行力问题

赋能可以解决能力和效率的问题,但是不能解决执行力的问题,需要配合安全运营来监督和改善体系的运转效果。根据实际情况,需要综合考虑选择合适的运营方式,这里提供一些运营维度作为参考。

1. 单个项目运营卡点

  • 检查各环节输出物,例如:安全需求表、设计方案、安全测试报告…
  • 漏洞检测与修复情况,例如:代码安全检测报告、IAST安全测试报告、渗透测试报告,未修复漏洞与缓解方案…

2. 全局安全运营

  • 全局漏洞统计:漏洞类型、漏洞数量、漏洞误报率、漏洞修复率…
  • 知识库沉淀:自定义漏洞检测规则、知识库更新报告…

3. 个人绩效考核

  • 项目经理:项目评级合理性
  • 产品经理:安全需求的全面性与合理性
  • 开发人员:漏洞自查发现率、漏洞密度、漏洞修复时效……
  • 测试人员:黑盒测试URL覆盖度、漏洞测试发现率、安全功能测试准确性

这里要强调一点,设立个人绩效指标不仅仅是为了考核相关人员安全工作的完成度,同时也是个人绩效的体现,要在项目复盘和年度考评中考虑增加这方面的权重。增加人员积极性的同时,也为公司留住安全开发领域的宝贵人才。

五、关键突破点,高层支持

除了上述要点,安全开发体系要想很好的推进,最重要是要获得IT高层领导的认可,这样才能获取足够的行政资源,推动以下事项:

  • 购买专业咨询服务,获取专业体系建设建议和成熟知识库
  • 协调督促各个部门参与,完成管理体系和文化上的迁移
  • 增加各岗位安全开发部分的人力绩效预算
  • 采购安全工具

如果开始不能获取高层的最大支持,建议先从容易落地且有能看到成果的环节开始建设,例如IAST测试,用事实成果争取高层的支持。

六、写在最后

安全开发体系的建设,通过赋能和运营的结合,并在高层支持下,帮助安全部门在人力不足、项目快速扩张等诸多不利的环境下,建设起安全开发的管理体系,帮助安全部门改变被动现状,获得应有的地位,发挥应有的作用,避免因为安全问题造成企业核心业务马失前

2020年新冠疫情给互联网行业提供了一个展示信息技术肌肉的机会,但遗憾的是行业领导者们在产品安全问题上纷纷“扑街”,从智能硬件、视频会议、社交通讯到网盘业务,一系列重大安全违规事件不绝于耳,不但严重威胁用户的隐私与数据安全,同时也给企业的品牌、业务和市值带来巨大伤害。从网络安全经济学的角度来看,产品安全问题并非“产品”问题,冰山以下是一个全局问题——如何安全地敏捷化和数字化,如何打通应用安全、数据安全/隐私保护的经络,把Sec塞进DevOps不会比把大象塞进冰箱更轻松,打造全局化和敏捷化的安全能力,绝不是企业安全团队能独自完成的,这应该是企业所有人,尤其是CEO的责任。

上一篇:最高悬赏1.5万美元,腾讯与HackerOne合作提供漏洞赏金计划

下一篇:暗网“爆品”报告:欺诈指南占半数