华为开源治理实践分享

2022年12月28日第二届全球DevSecOps敏捷安全大会(DSO 2022)通过全球直播的形式圆满举行。本届大会以“共生·敏捷·进化”为主题,以“敏捷共生,守护中国软件供应链安全”为使命,立足全球视野,汇聚来自“产学研用”各界的顶尖技术专家、行业意见领袖、资深学者智囊、企业精英代表,聚焦DevSecOps敏捷安全、软件供应链安全和云原生安全三大典型应用场景下的新技术、新态势、新实践。

会上,华为云计算技术有限公司网络安全专家郑志强详细介绍了华为的开源治理实践,给同样面临开源安全问题的企业提供了实践参考。

图1 华为云计算技术有限公司网络安全专家 郑志强

点击播放→华为开源治理实践分享

以下为演讲实录:

大家好,我是华为云PaaS服务产品部网络安全专家郑志强,很高兴参加由悬镜安全主办的第二届全球DevSecOps敏捷安全大会,借此机会分享华为开源治理实践。

扫描二维码关注公众号,回复: 16222919 查看本文章

开源及第三方软件治理目标

对开源及第三方软件进行管理,核心是确保它们安全可靠并能被合法合规地使用,具体管控内容可归纳为以下目标:

01

来源可靠

要求从正规社区官网、供应商官网或厂家官网获取可靠的开源及第三方软件;或者由供应商或合作商提供;软件需要具备明确的许可证或签订过相关使用协议;

02

网络安全

要求进行选型与应用评估、漏洞闭环管理(收集、分发、处理、预警)和安全问题处理;

03

合法合规

按许可要求或者经供应商授权使用,避免由知识产权、许可证带来的法律风险;使用部分开源软件需履行开源义务,要注意避免导致产品开源或公司声誉受损;

04

可追溯

需要对使用的所有开源及第三方软件进行物料管理,一旦出现安全事件可快速定位问题软件或包含问题软件的产品,从而进行更快更好的修复工作;

05

归一化/生命周期管理

软件引入时进行归一化,建立优选库/路标库,减少种类和数量;确保开源及第三方软件在整个生命周期中的安全。

开源及第三方软件经典案例

然而上述某一目标无法得到保障,就很可能产生严重风险或后果。

在Xcode事件中,由于开发者使用了非官方渠道下载的Xcode,导致开发的应用在编译之后含有恶意代码,这反映了确保软件来源可靠的重要性。

在Log4j事件中,开源安全漏洞传播快、影响大的特点被进一步体现,快速排查引入相关开源组件的产品并进行修复是降低影响的关键,这体现了网络安全管控的重要性。

合法合规同样重要。CISCO公司的Linksys无线路由器由于使用了基于GPL协议的开源代码却未履行相对应的开源义务,被FSF(自由软件基金会)起诉,最终只能开放全部源代码。这也警示了其他企业,要根据自身产品形态选择合适的开源软件。

可追溯既是客户要求,也是自身防范要求。分享一个案例,某产品发布包中有录屏软件,被客户通过病毒扫描查出,政府安全官介入干预,然而产品团队却不清楚录屏软件是何时由何人引入的。因而所有用到的开源及第三方软件都必须有记录,对其进行的修改有管控,一旦需要检查或者修复问题时,便可通过可追溯机制实现快速定位。

众所周知,随着引入的开源及第三方软件数量的增加,管理成本也会同时急剧上涨。某运营商发现某产品中引入的200+开源软件是社区发布超过五年的老版本,导致产品线大力整改,耗费了巨大的人力和时间成本。针对这一情况,归一化是一种很好的解决方法,能在满足业务需求的前提下降低开源及第三方软件软件数量。

人们普便重视软件开发过程中的开源及第三方软件管理,却往往忽略软件全生命周期中的其他环节。2011年索尼公司因为使用了老版本Tomcat,没及时与社区版本同步,导致黑客通过公开漏洞击破PlayStation用户系统,造成7000万个人用户资料泄露。

华为开源及第三方软件管控流程

以上经典案例充分说明开源治理的重要性,华为针对开源及第三方软件进行了全流程的管控。

图2 华为开源及第三方软件管理流程

华为在产品研发乃至全生命周期阶段,从选型、入库到开发阶段的使用申请、安全扫描,再到发布过程中的二进制扫描以及运维阶段对最新漏洞的跟踪排查,针对开源及第三方软件都有相应的管理规范和要求。我们也会定期对老旧开源软件进行等级评定并基于退出机制进行管控。

● 开源入库流程

入库流程共分为四个阶段,开源软件只有通过所有阶段的全部审核项才能够正式进行入库:

01

前置工作

确定软件类型、选型评估合适的开源软件;

02

提交申请

填写软件及版本信息、以软件版本维度启动审批流程;

03

TMG成员预审

触发其他业务发表意见例如法务代表、安全代表等,搜集意见并发表预审意见;

04

TMG组长终审

触发其他TMG成员发表意见,搜集意见并发表终审意见。

● 开源使用及认证流程

产品线员工在开发软件时如果要求使用库里的开源软件必须填写使用申请。后台基于申请会进行一系列评估,判断员工所要求使用的开源软件是否与产品形态相符。

申请通过后,华为相关平台也会持续对引入的开源软件进行管控。在开发阶段,会针对开源软件进行源码成分分析,检测是否存在漏洞片段以及是否满足开源许可和头文件声明,确保开源软件引用的合法合规。在测试阶段,会针对构建的二进制包进行成分分析,检查安全配置、开源合规问题、安全编译选项以及敏感信息。值得一提的是,在开发阶段已进行源码扫描,为何还需要进行二进制成分分析?因为构建环境可能存在安全问题,例如此前提及的Xcode被污染,就会导致由健康的源码构建而成的二进制包携带恶意代码,所以必须确保二进制包的安全。

整个管控流程是基于平台实现自动化运作。产品一旦在某一环节不符合要求,就会被返回整改,直到满足所有环节要求才能进入到发布阶段。

华为开源漏洞响应处理流程

针对开源漏洞应急响应,华为也有一套专门的管控流程以及相对应的规范要求。

图3 华为开源漏洞响应流程

整个开源漏洞响应流程是闭环且不断迭代的,共分为五个阶段:

01

漏洞获取

通过漏洞感知接受和收集开源软件漏洞;

02

漏洞生成

漏洞生成并录入华为漏洞库;

03

漏洞分析

专业人员对漏洞机理、等级、影响面等进行分析,进而排查受影响的产品;

04

漏洞修复

后台会通知开发人员对产品的漏洞进行修复;

05

漏洞发布

开发人员完成修复工作后,在升级产品版本的同时会同时发布漏洞修复情况。

在华为内部,开源软件Owner和产品经理是开源软件维护的责任主体,主要看护开源软件优选级别及开源漏洞修复流程,但两者侧重点不同。开源软件Owner主要负责开源新版本选型、软件版本停止维护决策、开源新版本上仓、漏洞影响分析、漏洞补丁上仓以及修复版本上仓。产品经理主要负责版本升级风险评估、修复版本集成与验证、消减措施落地评估以及消减措施落地与验证。

华为开源及第三方工程实践

最后与大家分享华为云研发安全服务。华为云研发安全服务包含从安全设计、隐私合规、代码检查、成分分析到安全测试整个过程,在每个阶段都配有相应的平台和自动化流程来支撑产品研发。

以成分分析为例,华为提供自研的、针对于源码和二进制软件包的成分分析能力,用于研发阶段针对于开源组件的安全和合规检测。其中二进制成分分析能力已通过信通院可信开源治理工具评估,支持针对于软件包的检查包括Linux、Windows、IoT固件包、安卓和鸿蒙应用等,支持C、C++、Java、Python、JS、Rust等主流编程语言,支持安全编译选项、安全配置、典型编码问题、敏感信息泄露、开源组件License、开源漏洞等检查。

以上是我分享的全部内容,感谢大家。

转载自悬镜安全:https://mp.weixin.qq.com/s/v6te4LMJCcxyPwS4FiX27Q

猜你喜欢

转载自blog.csdn.net/qq_18209847/article/details/128659176