开源软件具有免费、繁荣、易获取等优点,因此被各行业广泛引入和使用,尤其是伴随着“大智移云链”等新兴技术的蓬勃发展,开源软件的支撑作用越来越明显。但是开源软件又具有开放、自由、共享等特性,使其容易被利用作为攻击点。通过利用开源软件漏洞,甚至伪装成开源贡献者预埋漏洞,都是被验证可行的攻击形式。各行业在享受开源红利的同时,也逐步认识到开源软件的潜在风险。监管部门、企业、机构等都开始重视并推动开源软件安全治理工作。

开源软件是一种典型的信息资产,可以用信息资产管理理论来开展安全治理。笔者在工作过程中,综合采取梳理资产、评估和处置风险、持续改进等思路,逐渐打开工作局面。下面从管理、技术、实施三个方面谈一下体会。

管理方面

1.摸清家底

资产管理的第一步是建立资产清单。所以,开源软件安全治理的第一步就是摸清家底,解决开源软件“有哪些”、“谁在用”的问题。我们通过搭建私服仓库对开源软件进行统一管理,借助构建依赖关系自动化分析能力,自动获取应用系统和开源软件之间依赖关系,掌握产品中应用了哪些开源软件,以及其类型、协议、来源等信息,从而形成了全量使用关系视图。

2.明确职责

资产需要有管理责任人。通过发布制度,我们按照“谁引入,谁负责,谁支持”的原则明确了开源软件的责任人。对于开源软件新出现的漏洞,由安全部门负责监测告警,由相关责任人负责漏洞处置。

3.理顺流程

为做好安全管理工作,建立了覆盖开源软件全生命周期的闭环安全管控工作流程,包括:在引入环节建立了安全审核流程;在使用环节建立了漏洞监测、漏洞处置、例外申请流程;在退出环节建立了安全退出流程等。

4.制定标准

为满足监管和法律合规要求,企业应建立一套明确的开源管理政策,指导开源软件的安全、合规使用。在开源协议方面,建立可接受协议白名单。在安全方面,明确哪些风险我们能够接受、哪些必须拒绝,制定切合实际的标准。我们将开源软件分为开源基础软件、组件、工具三大类。对每一类制定不同的准入标准和处置标准,形成合理可行的差异化标准体系。例如,开源基础软件的使用范围广,升级影响大,其漏洞均需经过风险评估后再决定是否修复,且尽量统筹打包修复;开源工具不上生产,其漏洞风险相对较小,可适当降低安全准入门槛和漏洞处置时限要求。

5.度量评价

通过度量和评价,可以不断发现问题并持续改进,促进开源软件安全管理水平的提升。在治理过程中,我们通过设置过程性指标和结果性指标对治理工作进行度量。过程性指标主要用于度量和推进存量治理工作,比如任务完成率;结果性指标用于度量组织开源软件的治理成效、安全水平、管理能力等。

技术方面

1.工具支撑

完善的工具是实施治理工作的基础。开源仓库管理、依赖关系管理、黑白名单管理、安全漏洞管理、流程管理、配置管理,都离不开工具的支撑。我们基于开源仓库管理工具、开源软件漏洞扫描工具,结合已有构建、配置、项目管理工具,构建了开源软件的统一获取渠道,建立了投产前安全检查门禁,提供了限制使用、例外申请渠道,构建了支撑开源软件各项安全管理工作的工具体系。

2.威胁情报

及时全面的获取开源软件漏洞信息至关重要。可以基于开源软件漏洞扫描工具,结合NVD、CNVD等漏洞库信息,以及业界专业安全公司提供威胁情报,形成多渠道的综合情报来源。

3.处置方案

漏洞处置主要以升级版本为主,但有的漏洞可能尚未修复,或者该开源软件所有版本都有漏洞,因此需要对漏洞风险进行综合评估后,采取切实可行的处置方案。例如:对于经评估不受漏洞影响的可不修复,但必须限制该开源软件的扩散使用;对于暂无安全版本的,可升级到漏洞数量最少的稳定版本,并采取相应的风险缓释措施等。

实施方面

1.存量治理

针对已梳理出的开源软件清单,借助开源软件漏洞扫描工具(也可手工在NVD、CNVD等漏洞库查询),可以明确待治理的存量漏洞清单。对于刚启动开源软件安全治理的企业,存量漏洞数量可能很大,因此,需要按照“风险优先”的原则,统筹考虑应用系统间的依赖关系,制定基础平台优先治理、互联网应用重点治理等差异化的治理策略,分批次有序开展治理。我们在治理过程中采取了专项治理、自主治理和即时处置三种方式,专项治理主要针对组织内风险程度高、影响范围广的漏洞进行重点彻底治理。自主治理主要是发挥研发团队的能动性,自主选择范围压降漏洞组件数量。即时处置是针对监管或情报部门发来的高危、重要漏洞立即开展处置。

2.外防输入

为避免出现“边治理、边污染”的情况,需要对开源软件的引入严格把关。一是建立开源软件引入安全审查机制,只有通过安全审查的开源软件采可以进入组织的开源私服仓库。二是坚持以组织的开源私服仓库作为开源软件的唯一可信来源,应用软件集中构建必须依赖私服仓库,防范未经授权的软件被构建入应用系统中。三是持续更新开源软件使用视图,自动识别所有开源软件新增漏洞情况,及时向研发团队发出漏洞告警,推动漏洞修复和补救措施快速落实。

3.内防扩散

随着时间的推移以及漏洞库的更新,私服仓库中软件的安全状态会发生变化。在出现新的安全漏洞时,要第一时间限制漏洞软件的使用范围,防范风险在组织内蔓延。应该建立开源软件的“灰名单”以及应用系统的“白名单”,对出现漏洞尚未完成治理的开源软件和系统进行标记,严禁“白名单”外的系统使用“灰名单”内的软件。

开源软件安全治理是一项长期持续复杂的系统工作,在治理实践过程中,真正的银弹并不存在,必须以扎实、细致的工作态度来推动实施。从业者要真正认识到开源软件安全治理的长期性和艰巨性,正确处理好安全与发展的关系,建立高效实用的工作机制和符合企业技术栈的工具链,构建制度+科技的全方位开源软件管理安全防线。

(本文作者:中国农业银行研发中心曹玉磊)

声明:本文来自安全牛,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。