简介
领创集团(Advance Intelligence Group)作为一家全球化的科技企业,无论从自身的企业业务属性,还是公司的集团战略,对信息安全有着非常高的要求,本文希望通过分享集团白盒审计的落地过程,给予同类企业在企业在DevOps白盒审计建设提供一些经验和借鉴。国内成熟互联网企业
代码审计的一般落地方案
在成熟国内互联网企业中,由于大部分业务也趋于成型,一般企业会组建自己的IDC与复杂的系统中台来满足日常的代码上线工作,这样一方面可以保证最大程度的降本增效,另一方面也可以保证系统的稳定,一般集团会维护一套大而覆盖面全的CICD平台,一般而言是类似下面的系统架构:一般研发研发同学上线需要两步即CI和CD:
通过提交代码至Gitlab后,在公司公司的SCM(代码构建平台,一般基于Jenkins实现)进行点击后自动化发布流水线任务,通过软件包名与版本编译好产物,最后将产物上传至对象存储。在公司的私有云平台上点击部署,借助公司中台定义的标准化镜像模板生成对应镜像,最后在公有云平台进行小流量,单机房、全量发布。建设源码审计的系统
领创集团面临的挑战
3.1、领创集团在建设源码审计的系统面临的挑战
领创集团作为一家总部在新加坡的全球化企业,集团业务遍及南亚、东南亚、大中华区和拉丁美洲地区。随着各个国家和地区日益严格的信息安全与数据安全监管策略,大多数地区基于战略维度都会有有要求代码,存储数据,开发人员本土化与属地化的要求。从业务形态上,由于各地区监管要求,集团安全与运维部门不太可能只维护单一厂家的一套公有云。由于监管的客观需求,很多时候也不能仅仅维护一套Gitlab系统。由于各个国家和地区对跨境数据传输的监管要求,网络也不是应通尽通。这给代码审计系统的架构与交互逻辑产生了挑战。
由于领创集团的业务属性具有全球化的特征,需要对接闭环代码审计安全风险时的开发不仅仅是中文同事,很多时候至少需要中英双语进行触达,确保非中文开发同学能看懂安全风险并闭环漏洞。这个自动化源码审计系统的漏洞触达与闭环流程造成了挑战。
成熟的互联网企业往往采用大中台、小前台的开发模式。这样利于系统的稳定和维护,整体提升系统的稳定性。而对于领创集团这种高速发展的企业,更多需要快速的探索业务可行性。所以往往采用小中台与孵化项目并存的模式。即各个业务线已经成熟的业务与系统接入自己部门内部的CICD系统,同时存在部分零散的项目进行探索孵化,探索业务可行性,这给自动化源码审计的覆盖率造成了挑战。从公司的业务规模与公司战略,集团安全部门现阶段建立了一支小而精的部队,这对源码审计平台的自动化安全编排能力提出了要求。客观上我们不具备某些大型公司“先堆50个BP”来复测与跟进安全漏洞闭环模式,这对于代码审计系统的自动化复测与归档提出了一定要求。3.2 归本溯源分析众多挑战下自动化源码审计的核心指标
讲了这么多的挑战与现状,我们归本溯源思考,其实一个尽可能好的源码的源码审计系统需要包含如下几个维度:源码审计系统应该尽可能的覆盖所有的代码项目,根据既往的安全从业经验与渗透测试报告,大多数渗透测试的突破口发生在边缘系统。核心项目往往大家会投入较多的测试与开发成本,但一些边缘或者测试项目往往大家不受重视,这往往是安全隐患和突破口。所以一个好的代码审计系统理论上应该覆盖公司所有的代码仓库,并能够支持检测公司所有的语言。
源码审计系统应该尽可能的准确检测出对应的安全风险,尽可能的少的误报对应问题。这要求所选用的代码审计系统经过了较多的市场考验。同时对于规则也需要具备可编辑性,这样安全团队对误报和漏报可采用规则内容修改的方式给予纠正。
源码审计系统不是安全部门检测出对应漏洞推送给对应的研发就结束了,往往我们还需要研发的反馈与结论。这要求产品形态上,尽可能的让研发少操作、少干预就可以完成漏洞的处置,避免安全处置时间过多造成安全与产研的对立。
源码审计系统本身应该尽可能的提升安全部门的效率,而非降低安全部门的效率。即尽量避免出现每天1000条报警,安全部门自己同学都看不过来的情况发生。提升源码审计系统
集团安全部做出的努力
根据上述的挑战与分析,首先我们在选择代码审计系统时候定义了两个最核心原则:源码审计系统适配团队而不是团队接入代码审计系统、源码审计平台高度可定制化。基于上述两个原则,我们在各个维度上做了以下努力:
源码审计系统主动去适应各个业务线的小发布系统,而非作为一个中台系统等待业务方CICD平台改造适配我们,这样做到绝大多数核心业务都能得到有效的覆盖。各个自主建设的小型CICD平台,通过Restful的方式异步下发任务,为兼顾业务迭代与发展,现阶段对于检出漏洞不进行强行卡点,增加了各个核心业务线接入的积极性。同时上文中我们提及,由于企业高速发展,不是所有的项目都接入了自己部门的CICD系统,部分零星的测试平台、数据训练脚本、小型工具型项目的上线并未接入到自己部门的CICD平台。这时我们通过补偿业务逻辑通过Gitlab自由的Webhook形式进行接入,提升项目的覆盖率。这样在我们自建的代码审计平台可拆成两个异步任务进行补偿逻辑,确保所有项目可覆盖。由于篇幅问题,该部分不做过多赘述。这边我们通过调研选型,主要采用的是Gitlab实验室的Codeql的规则。无论从社区活跃度、License版权限制、可自定义修改层面、都能比较好的支持满足源码审计的需求。https://github.com/github/codeql在流程高闭环率上,我们主要从触达率和研发安全的UI上进行努力。首先触达率方面,消息推送我们采用三发模式来确保触达率,确保关键漏洞可被研发触达和阅读。三发包括业务核心研发技术群触达,该次committer触达(通过gitlab接口获取),项目owner触达(防止由于业务线和人员变更导致僵尸项目)。同时在通知文案上,我们精简了漏洞分级,这样能给予研发同学更强的指示。经过精简,我们将漏洞定为:紧急、需人工跟进、低风险(请确认后联系服务台忽略)三个等级,避免给研发同学造成困惑。同时我们引入了HelpDesk机制,作为与一线研发沟通的工具,当收到代码审计报警后,同时我们在产品层面会提供跳转按钮,方便研发快速对接安全人员解决问题。由于领创集团安全部门是一个小而精的部门,每个员工都有自己特别擅长且独特的优势。这可能与许多独角兽公司的现状一致。为了避免安全部门的同事被大量的报警事务性工作挤占,而无法发挥自己专有的优势价值。所以针对团队和部门现状,对于一些上一周的漏洞,我们会采用安全编排的思维。对于已下线的规则做补偿自动处置,确保报警列表中的告警是“新鲜”、有价值的。对于一些研发已经随手修复的漏洞则归档处理,确保未处理告警列表可读性。后记
本文着重介绍了在领创集团这种业务灵活,发展迅速的企业如何落地源码审计系统,更由于篇幅限制本文多是从产品逻辑和业务形态下着重介绍。若大家对技术细节与整体架构有更多的兴趣,欢迎在评论区留言,我们将在收集大家意见并在以后的文章中详细介绍。(Advance Intelligence Group)领创集团成立于 2016年,致力于通过科技创新的本地化应用,改造和重塑金融和零售行业,以多元化的业务布局打造一个服务于消费者、企业和商户的生态圈。集团旗下包含企业业务和消费者业务两大板块,企业业务包含 ADVANCE.AI 和 Ginee,分别为银行、金融、金融科技、零售和电商行业客户提供基于 AI 技术的数字身份验证、风险管理产品和全渠道电商服务解决方案;消费者业务 Atome Financial 包括亚洲领先的先享后付平台 Atome 和数字金融服务。2021年 9月,领创集团宣布完成超4亿美元 D 轮融资,融资完成后领创集团估值已超 20亿美元,成为新加坡最大的独立科技创业公司之一。