OPPO互联网DevSecOps实践

发布者:OPPO安全
发布于:2020-08-27 16:27

OPPO子午互联网安全实验室 沈海涛

一、前言

伴随着移动互联网技术的高速发展,如何保障产品的安全与隐私合规成为了一个严峻的挑战。尤其是在产品复杂度高、更新迭代快的现状下,如何应对挑战,已经成为了企业发展必须要慎重考虑的问题。以OPPO为例,OPPO仅ColorOS全球月活用户数就达到了3.7亿+。产品形态覆盖 Web APP、Android APP、 iOS APP、快应用、SDK、IoT等,日变更1000+次。本文将以OPPO安全应对行业挑战所作出的实践为例,重点介绍OPPO互联网DevSecOps实践,更准确的说是从传统SDL到DevSecOps转型的实践。

不能免俗,先放概览。

 

 

本文将从以下几个方面展开:安全活动融入研发流程、安全防护平台建设、安全文化建设、外部合作以及持续精进。

二、安全活动融入研发流程

安全与隐私合规是企业存续发展的基石之一。基于DevSecOps的原则,安全活动需要贯穿研发流程的每一个环节,使安全与隐私合规成为各团队的共同责任。在现有的研发流程中,子午实验室开发了安全与隐私评测系统,并将安全活动融入到研发流程的不同阶段中,覆盖业务的大版本及涉及到安全与隐私重大变更的小版本。

1.制定流程规则

首先要解决的是融入研发流程的规则问题,以及如何进行卡点管控。我们一般会将产品的生命周期分为产品需求、架构设计、编码实现、测试、发布、运营等几个阶段。

在DevSecOps实施初期或者安全团队组建的初期,想要覆盖产品的全部生命周期是很困难的,这个阶段需要解决面的问题,抓大放小,因此会选取一些关键的节点进行管控。

我们选取了三个强流程进行卡点:产品需求阶段进行隐私合规评审,产品发布前进行安全测试&隐私合规测试,这样基本上保障了产品的安全与隐私的基线要求。如下图所示:

 

之所以选取隐私合规评审作为强流程卡点是由于业务形态所致,OPPO是一家全球化的公司,产品和服务覆盖全球几十个国家和地区,面临巨大的隐私合规挑战,比如欧盟区域的 GDPR等。

隐私合规评审可以在产品设计需求阶段就满足合规要求,避免上线前检测不合规造成的业务返工及大量的改造成本。同时我们还在上线前进行了安全测试和隐私合规测试来强卡点,业务必须满足安全与隐私质量标准才能够上线。

另外在流程规则中要考虑介入的深度和范围。深度越深,范围越大意味着安全的工作量越大,业务的感知越强烈,对业务效率的影响也会越大。目前我们的策略是,安全流程强制覆盖新业务或者老业务的大版本,其他的版本由业务架构师根据我们的指引(checklist)进行自评,由业务自行判定是否走安全流程,这样既保证了能够消除大部分风险,又兼顾了业务效率。

2.IT系统支撑

流程有了,接下来就是要保障流程能够顺利落地执行,靠人来跟进无论是在覆盖度上,还是效率上都是不靠谱的,于是我们构建了 DevSecOps 的 IT 支撑系统,即将安全流程融入到 CI/CD 系统中。

 

如下图所示,我们将安全活动融入到CI/CD流水线中,以后端流水线为例,在构建阶段会进行源代码安全扫描,在部署测试集成阶段会进行后端动态安全扫描(IAST),上线之前会进行安全评测,包括安全测试和隐私合规测试。而且这个流水线是可编辑和配置的,后续可以按需加入更多的自动化扫描或者其他安全活动。

 

同时,开发进入CI系统时候,会自动检测当前的开发是否进行过需求评审,如果没有的话会进行提示。在安全测试和隐私合规测试阶段会检测是否进行过需求评审,如果没有的话则无法提测。

 

我们开展的需求评审可以认为是轻量级的威胁建模,通过详尽的引导式提示做到业务自助式操作,极大减轻了安全的沟通工作量。

 

而评审系统里面的检查项是抽取了《安全&隐私标准规范》中的部分重点内容,主要的标准规范如下:

 

3.自动化能力构建

在DevSecOps 中纯粹靠堆人力是很难适应DevOps的快节奏的,自动化能力构建是必经之路。子午实验室在以下几方面构建了自动化能力,大部分自动化能力已经融入到了CI/CD流程中:

  • 静态源代码扫描(SAST)
  • 后端动态自动安全测试(IAST)
  • 开源组件黑名单检测(SCA)
  • 安卓APP静态安全与隐私合规扫描
  • 安卓APP动态安全与隐私扫描
  • 安卓SDK特征扫描
  • … …

 

静态源代码扫描(SAST):检测能力覆盖主流的开发语言,目前支持商业与自研的多个扫描引擎,并支持增量扫描,后续会支持IDE插件形式扫描。

 

后端动态自动安全测试(IAST):覆盖OPPO主流的后端开发语言,融入测试阶段,在做功能测试的同时完成安全扫描,极大提升了效率。

 

开源组件黑名单检测(SCA):融入到CI系统的构建流程,黑名单由子午的安全攻防人员维护,业务代码构建阶段如果命中规则需要修复之后才能够成功构建。

 

安卓APP静态安全与隐私合规扫描系统:能够同时进行安全漏洞扫描、安全编码规范及隐私合规检测的扫描。目前主要提供给安全及隐私测试人员使用,后续会考虑推广给研发及测试人员使用或者融入到CI/CD中。

 

安卓APP动态安全与隐私扫描:主要覆盖静态检测无法无盖的场景,比如提前联网、检测加固应用的行为等,目前处于内测阶段。

安卓SDK特征扫描:会扫描APP中使用到的SDK名称、版本、允许上线区域、历史漏洞等信息,目前处于内测阶段,后续会融入到研发流程中。

三、基础安全防护产品及服务 

在业务的生命周期中,是离不开基础安全防护的,我们在主机层、网络层、应用层等提供了多维度的安全检测、防护产品和服务,保障OPPO的基础安全。

主机层:主机入侵检测(哨兵)、态势感知(谛听);

网络层:安全网关(云盾)、流量检测系统(鹰眼)、动态防火墙、DDoS防护系统(金堤);

应用层:秘钥管理服务、业务风控(天御)、验证码服务、安全组件(OSK)。

 

四、安全文化建设

DevSecOps 中需要明确,安全与隐私不再单独是安全团队的责任,而应该是产品、开发、安全、运维等协同合作共同负责,以期达到“上线前安全赋能业务,上线后业务支持安全”的局面,为此我们做了以下的工作:

1. 成立了公司级的安全与隐私委员会,将业务部门的负责人纳入其中,在组织制度上保障安全与隐私策略的推动实施。

2. 建立了安全与隐私合规代表制度,安全与隐私合规代表由业务部门专人担任,确保安全与隐私要求在部门落地。

3. 将安全与隐私写入互联网产品观---“发自内心的尊重用户的隐私与安全,而不仅仅是因为法律的约束”。

4. 常态化的培训赋能。一方面,对主管层开展“安全与隐私合规应知应会”培训。另一方面,定期开展安全与隐私知识宣导。通过培训、内部发文等形式开展安全与隐私知识培训。

五、外部合作 

安全是一项体系化工作,,我们积极保持与业界的联系,引入业界先进安全能力,同时也希望能够为安全界做一些贡献:

1. 成立了 OPPO安全应急响应中心(OSRC) ,并与多个漏洞提交平台合作,与全球安全研究者一起守护OPPO用户的安全。

2. 积极与高校和业界安全厂商合作,通过联合实验室、项目合作、产学研等方式在部分重点技术领域上进行攻关与合作。

3. 积极参与安全与隐私领域权威认证,检验成果。目前已经通过TrustArc、eprivacy、ISO/IEC 27018:2014、ISO/IEC 29151:2017、ISO/IEC 27001:2013、CSA Star、泰尔信息安全五级认证、等保三级、ISO/IEC 27701:2019等9个认证。同时我们还通过其他测评机构来评估DevSecOps的成熟度,以便改进。

4. 在安全研究过程中,提报安卓系统、Netty、RocketMQ、Chrome、Safari、等多个安全问题,并获得厂商公开致谢及CVE。

5. 参与 DIMVA 、ISC 等多个安全会议并做分享,开展多次校园行安全分享交流活动。

 

六、持续精进

目前,OPPO互联网已经初步建立起了 DevSecOps 体系,但还处于起步阶段,还有很多工作需要做。

1. 自动化能力更加完善

自动化能力主要体现在安全与隐私问题消除率和业务效率影响两个方面。问题消除率越高,业务效率影响越小我们认为自动化的能力越强。

可以从以下几个方面入手:持续优化检测方法和规则,降低误报率和漏报率;自动化能力要覆盖关键的流程;持续优化自动化的用户体验。

  • 持续关注业界技术动态,及时覆盖新的漏洞模型,引入新的检测技术或方法,覆盖更多的产品形态;
  • 持续运营自动化工具,在业务使用过程中优化检测规则;
  • 逐步将 Docker 安全扫描作为强流程管控,覆盖安全基线扫描;
  • 提早暴露安全风险,将安全扫描集成到IDE开发环境中,将安全扫描工具使用赋能给开发及测试,甚至将安全与隐私测试融入到功能测试中。

2. 基础设施即安全,默认安全原则

打造安全的基础设施,并采取默认安全配置的原则,让业务只关心业务层面的安全与隐私。

  • 保障基础开发框架的安全;
  • 将安全库集成到开发框架中,并默认配置;
  • 提供默认安全的镜像、操作系统、中间件;
  • 提供默认安全的通用组件,比如封装WebView安全组件;
  • 将安全检测及监控能力融入到基础设施中。

3. 持续开展安全文化建设

持续打造业务、安全、运维协同开展安全与隐私合规工作的文化氛围:

  • 安全团队持续关注业界安全与隐私技术及趋势,消化吸收,转化为内部能力;
  • 持续将安全与隐私合规能力赋能给产品、开发、测试及运维人员;
  • 逐步将安全与隐私合规测试人工流程转化为自动化流程;
  • 将大部分的安全与隐私检测项工具化,并推广给开发和测试人员使用;
  • 通过“安全蓝军”来覆盖自动化工具无法覆盖的部分。

最终形成安全团队承担咨询、洞察、蓝军、能力输出等角色,业务、测试及运维等通过安全的持续赋能,达到主动保障业务安全与隐私,,形成“上线前安全赋能业务,上线后业务支持安全”的局面,建立一个良性循环。

回顾OPPO安全在 DevSecOps 实践过程中所遇到的挑战,可以再次肯定,安全不是某一部门的责任,更不是在开发后期引入就可以解决问题的。在  DevSecOps 体系框架下,安全防护需要贯穿业务整个生命周期的每一个环节。

面对万物互融的浪潮,云计算、大数据及人工智能等核心技术的发展,在带动科技发展的同时,必将给安全带来极大的挑战,如何保证业务高效、稳定、安全的发展,将是我们需要共同思考及长期实践的问题。

OPPO安全将秉持对用户高度负责的态度,在安全与隐私的道路上持续耕耘,成为有担当的安全团队。


声明:该文观点仅代表作者本人,转载请注明来自看雪