实战 | 构建数字时代的开源软件安全治理体系

当前越来越多的开源软件被使用于软件程序中,极大降低研发成本,提高生产效率,让企业更专注于业务需求的实现。但随着开源软件的不断增多,软件供应链也随之变得更加复杂。中国银联技术开发中心(以下简称技术开发中心)经过探索实践,建设形成开源软件全生命周期安全治理体系,为企业的数字化高质量发展保驾护航。

1.漏洞风险

奇安信代码安全实验室在《2022年中国软件供应链安全分析报告》中指出,开源软件的源代码安全缺陷密度是9.85个/千行,高危安全缺陷密度为0.65个/千行。开源软件的安全状况仍然较为严峻。部分作为底层基础的开源软件,一旦出现问题,甚至可能是灾难性的。2021年的Log4j漏洞波及范围之广,后果之严重,堪称“核弹级”,影响性至今都未彻底消除。

2.合规风险

开源许可协议是开源社区为了维护开源软件作者和贡献者的合法权利,而定义的一组条款和条件,其他人必须在遵循这些条款和条件的基础上,使用、修改或共享开源软件的源代码、设计和文档,这也是开源软件的生命活力源泉。企业如未按许可协议的要求使用开源软件,可能会带来知识产权方面的法律风险。

3.运营风险

开源软件运营风险一般包括老旧与多版本开源软件的使用、开源软件与软件资产关系的动态维护。很多老旧开源软件的开发者都已经不再维护或弃用,即使发现安全漏洞也不会有相应的更新通知或修复版本,如Struts1等,存在巨大的安全隐患。对于多版本,可能一个开源软件从1.x到N.x都有被使用,收敛度较差,较为混乱。开源软件最终是被应用到具体的企业系统资产中的,当出现开源软件漏洞时,用户的迫切诉求是要搞清楚哪些资产受到影响,常常需要消耗大量人力去排查统计,效率低下,且准确性、全面性无法保证。

技术开发中心在开展开源软件安全治理过程中,始终坚持问题导向,围绕面临的风险,分别从管理机制、技术支撑两方面发力,经过探索实践和持续优化,形成覆盖开源软件全生命周期安全治理能力(如图所示)。

1.管理机制

技术开发中心制定一系列规范要求,涉及公共基础软件管控工作、开源软件评估方法等。总体上,坚持自主可控与开放合作的技术发展理念,在满足业务功能、技术指标要求的前提下,优先使用自研产品,如无则优先采用业界领先、验证稳定、使用广泛、成本经济、有成熟社区或厂商支持的技术和软件。

在具体工作开展中,明确各方职责和评估方法,遵循“谁引入,谁负责”“谁使用,谁负责”基本原则开展相关工作。组织机制上设立管理方、评估方、引入方。管理方统筹规划治理流程、管理标准、推动开展治理工作。评估方为技术和法务等专家组成的虚拟团队,依据评估模型负责评估工作。使用方一般为项目主办方,负责发起评估和登记、完成使用中的漏洞处理和其他事务。

在引入阶段,使用方按照管理要求在线提交相关资料,从指定的可信源获取相应的开源软件,进入类似沙箱的前置仓库,以便各类工具检测。评估方面,为在引入开源软件前评估方尽量充分科学评估,提前发现潜在的安全合规隐患,设计制作开源软件评分简化模型,共计2大类8小项的评估点,分别从基本评估要素、技术评估展开,评估细项包括许可证类型、社区活跃度、安全性、软件成熟度、高可用性、兼容性、易用性、支持形式,并根据不同评估项重要程度配以相应权重。评估结果最终分为三类:允许引入,优先使用;允许引入,谨慎使用;不允许引入。针对每类采取不同的要求措施。

在使用阶段,以软件研发生命周期为基础,在研发测试环境嵌入开源软件检测功能,相应检测结果,包括安全漏洞、许可协议、隐私合规等问题在线确认并修复,作为最终成功上线的条件之一。

在退库阶段,以降低对业务连续性的影响为前提,安全地开展相关工作。在开源软件突发风险应急时,首先使用网络安全设备、应用运行防护工具等做安全缓冲,减轻短时集中升级发版压力,避免引起不可预期的次生风险,其次按照应用系统攻击面大小(如内外网、服务对象、业务规模等),有序升级。在日常回顾时,组织专家团队,从开源软件使用情况、历史漏洞情况、是否EOL等进行综合评估,会同研发人员制定年度退库计划,平滑推动应用升级,并将退库软件加入黑灰名单,清理存量,管住增量。

2.技术支撑

技术开发中心打造“1+2+3”整体技术解决方案,即:1个公共软件库,2个生命周期(开源软件生命周期、软件研发生命周期),3个核心平台(公共软件库管理平台、研发平台、安全平台)。

内部使用同一个公共软件库,收纳三类软件资产:开源、自研、厂商,避免各部门重复建设的同时,也实现了资源的统一管理。建立公共软件库管理平台实现对开源软件生命周期管理,包括引入、检测、审核、使用、查询、清退、维护等,兼容多种仓库源,支持多种编程语言。

研发平台对软件研发生命周期各阶段活动进行标准化集中管理,借助平台功能,在不同环节加入开源软件检测及卡控功能。在研发阶段,各应用系统实行标准化编译,使用统一的代码库、开源软件库,确保来源合法性、唯一性。流水线运行过程中,自动触发开源软件检测,发现的问题必须确认或修复后方可发版。在上线运营阶段,使用主机防护、应用运行防护技术等,实时监测管理使用的开源软件情况。

安全平台主要提供开源软件检测分析能力及软件资产使用开源软件关系台账动态管理。目前已具备安全漏洞、许可证、移动应用隐私等主要检测能力,减少管理盲区。通过建立开源软件漏洞情报库,综合包括NVD、CNVD、CNNVD、Snyk、安全舆情等多种信息源,进行抽取、归类、整合,为检测提供丰富弹药,进一步提高检测的覆盖度、准确度。通过流水线检测,自动生成并维护系统模块级的开源软件使用台账。平台也对公共软件库进行周期性扫描,检查包括开源软件源代码是否已入库、是否有新增的安全漏洞和许可证协议、是否有清退但被再次引入等内容。

在持续的安全治理工作中,技术开发中心累计清退存量开源软件已达3000余个,完成4万余次开源软件版本升级,消除潜在安全漏洞隐患超过10万个。动态维护的开源软件使用资产台账,在风险应急时发挥巨大作用,可协助相关人员秒级定位使用的系统,使得掌握并管理“家底”的工作开展事半功倍。

由于开源软件的特性,上传软件的可能是个人,也可能是别有用心的组织,甚至是可能被攻击者从源头“投毒”的不知情者,现有的CVE/CPE体系以及NVD等漏洞库存在很大的局限,因为处置前提是有漏洞被上报收录,企业面对这类恶意攻击,实则很难从容应对。

现代软件开发构建在开源生态基础之上,中国银联将持续完善优化开源软件安全治理体系,携手各方共同努力,加强交流合作与信息共享,助力产业高质量发展。