青骥信息安全原创技术专题
信息安全作为产品价值的一部分,重要性在金融行业及头部互联网厂商得到更多的重视,但随着软件定义汽车浪潮的兴起,车企也在如何提高应用软件安全的道路上不断跟进。
为什么要在软件研发中加入安全?身处不同位置的人可能有不同的想法,在这里分享一个华为内部信的观点:“今天,我们又处在一个新的起点,全面云化、智能化、软件定义一切等发展趋势,对ICT基础设施产品的可信提出了前所未有的要求。可信将成为客户愿买、敢买和政府接受、信任华为的基本条件”,全文可查看《全面提升软件工程能力与实践,打造可信的高质量产品》。业务优先还是安全并重,在国内当前市场形势下大部分都会选择业务营收优先,但当业务不能保持正向营收趋势的时候安全还会跟进么?为业务保驾护航是安全推动中常用的一个口号,但潜意识里业务和安全还是割裂的。安全的价值如何衡量和呈现?是作为业务正常的一部分还是业务增收的附加保险,关于这个问题的认识和回答可能会很大影响到企业在进行安全建设决策的出发点。
应用软件安全研发的方法论目前主流分为起源于微软的SDL路线和起源于Gartner的DevSecOps理念。2020年参与了国内某传统车企的软件安全研发建设,从建设过程中的经历来看国内大部分的传统车企可能仍然要先走SDL路线,原因如下:
一、软件开发资产较分散,没有形成标准化管理,部分软件项目依赖第三参与;
二、没有成熟的软件研发流水线平台支撑,CI/CD无法形成自动化;
三、安全部门侧重IT安全保障,对研发安全及安全研发工作的人力、能力、工具支撑有限。
实现对软件研发资产的管控的建设软件安全研发过程中绕不开的一环,在建设这一环中存量软件项目的梳理登记与新增项目的登记在建设的初期可以通过人工的方式进行访谈沟通,理清需要登记的项目信息,对项目资产类型进行分类定级,优先保障高等级的项目安全。通过人工访谈过程中的信息梳理建立线上模板进行统计,实现初步的工具化、规模化管理。
再进一步的工作将更深入的挖掘企业软件开发的业务架构信息,如编程语言类型、业务形态、研发流程、迭代频率、常见漏洞类型等。
3. SDL→DevSecOps
DevSecOps相较于SDL更加侧重对平台化、自动化的推崇,在建设初期的阶段,人工推动安全介入研发操作落地更容易解决0→1的问题,但随着支撑项目规模的扩大和安全效果要求的提高,平台化和自动化建设在解决1→100的问题上能更加节约人力投入以及更明显的效率提升。0→1阶段可以主要关注通过文档性(如安全编码规范、安全审批邮件)的宣导和约束将开源或商业安全工具在具体项目中用起来,在1→100阶段则需要更多关注平台工具链建设以及工具检出的漏洞数据、研发平台反馈的修复数据等数据构建安全数据的闭环和呈现,自动化和工具化获得的数据可以让安全工作有更好的向上汇报成果以及更明确的安全建设方向依据。
Source:滴滴SDL体系建设
这里给出一个对比SDL与DevSecOps主要活动流程的示意图,从图中对比可以看到,SDL与DevSecOps的主要安全活动重合度比较高,SDL在整体安全流程建设方面投入更多,DevSecOps则侧重工具链落,以工具能力、平台能力、自动化能力平衡业务研发活动与安全活动的时间人力成本投入。两者并不冲突,都是安全治理的方法,推荐根据企业安全建设现状选择合适的安全方法论和开展安全活动。
Source:默安-不同企业,SDL差异几何
这里给出一些在具体落地中安全活动及相关工具选择参考:
计划&需求&设计阶段:
安全知识库搭建:OWASP、NIST、CAPEC
安全威胁库:威胁建模(微软-ThreatModelingTool、ThreatDragon、ThreatModeler)
安全编码规范
安全需求库:法律法规、行业监管、公司内部要求、业界安全实践、OWASP ASVS checklist
供应商评估
创建&验证&实施阶段:
IAST交互式源码安全扫描:JavaFindSecurityBugs
SAST源码静态安全扫描:Sonarqube
DAST动态黑盒安全扫描:WebZAP、APPSCan、AWVS、Mantra
SCA开源组件安全扫描:DependencyCheck、BlackDuck
容器安全扫描:Clair、NessusForDocker
主机安全扫描&基线配置安全扫描:TenableNessus
MAST移动客户端安全测试:MOBSF
RASP运行时应用自保护:OpenRASP
漏洞跟踪管理:DefectDojo
应用资产风险感知&漏洞聚合平台:Kibana、ThreadFix
发布&配置阶段:
安全风险评估记录:Jira、Confluence
制品库管理:Jfog、Nexus
漏洞跟踪修复:Jira
资产管理平台:定制开发
4.结语
研发安全体系是一个长期的建设工程,整体的保障是保障业务的安全下限,提高业务安全上限可触达的能力。在阶段规划上,一方面是根据当前已收集到的企业安全风险情况,着力解决当前救火的紧急事件,关注重点业务的安全基础保障,另一方面需要抓大放小,把有限的人力和精力放到主要的安全活动建设中,如代码安全扫描的建设,可以大幅降低问题代码被带到线上去的几率,周期性的安全演习、渗透测试可以在内部有效的发现安全风险问题。
安全“左移”已逐步进入到安全“无处不在”的阶段。提高安全参与意识实现人人共建安全的企业内部文化正当时。
END
原文始发于微信公众号(汽车信息安全):谈谈汽车软件研发安全体系