开源软件是一种典型的信息资产,可以用信息资产管理理论来开展安全治理。笔者在工作过程中,综合采取梳理资产、评估和处置风险、持续改进等思路,逐渐打开工作局面。下面从管理、技术、实施三个方面谈一下体会。
管理方面
(1) 摸清家底
资产管理的第一步是建立资产清单。所以,开源软件安全治理的第一步就是摸清家底,解决开源软件“有哪些”、“谁在用”的问题。我们通过搭建私服仓库对开源软件进行统一管理,借助构建依赖关系自动化分析能力,自动获取应用系统和开源软件之间依赖关系,掌握产品中应用了哪些开源软件,以及其类型、协议、来源等信息,从而形成了全量使用关系视图。
(2) 明确职责
资产需要有管理责任人。通过发布制度,我们按照“谁引入,谁负责,谁支持”的原则明确了开源软件的责任人。对于开源软件新出现的漏洞,由安全部门负责监测告警,由相关责任人负责漏洞处置。
(3) 理顺流程
为做好安全管理工作,建立了覆盖开源软件全生命周期的闭环安全管控工作流程,包括:在引入环节建立了安全审核流程;在使用环节建立了漏洞监测、漏洞处置、例外申请流程;在退出环节建立了安全退出流程等。
(4) 制定标准
为满足监管和法律合规要求,企业应建立一套明确的开源管理政策,指导开源软件的安全、合规使用。在开源协议方面,建立可接受协议白名单。在安全方面,明确哪些风险我们能够接受、哪些必须拒绝,制定切合实际的标准。我们将开源软件分为开源基础软件、组件、工具三大类。对每一类制定不同的准入标准和处置标准,形成合理可行的差异化标准体系。例如,开源基础软件的使用范围广,升级影响大,其漏洞均需经过风险评估后再决定是否修复,且尽量统筹打包修复;开源工具不上生产,其漏洞风险相对较小,可适当降低安全准入门槛和漏洞处置时限要求。
(5) 度量评价
通过度量和评价,可以不断发现问题并持续改进,促进开源软件安全管理水平的提升。在治理过程中,我们通过设置过程性指标和结果性指标对治理工作进行度量。过程性指标主要用于度量和推进存量治理工作,比如任务完成率;结果性指标用于度量组织开源软件的治理成效、安全水平、管理能力等。
技术方面
(11) 工具支撑
完善的工具是实施治理工作的基础。开源仓库管理、依赖关系管理、黑白名单管理、安全漏洞管理、流程管理、配置管理,都离不开工具的支撑。我们基于开源仓库管理工具、开源软件漏洞扫描工具,结合已有构建、配置、项目管理工具,构建了开源软件的统一获取渠道,建立了投产前安全检查门禁,提供了限制使用、例外申请渠道,构建了支撑开源软件各项安全管理工作的工具体系。
(2) 威胁情报
及时全面的获取开源软件漏洞信息至关重要。可以基于开源软件漏洞扫描工具,结合NVD、CNVD等漏洞库信息,以及业界专业安全公司提供威胁情报,形成多渠道的综合情报来源。
(3) 处置方案
漏洞处置主要以升级版本为主,但有的漏洞可能尚未修复,或者该开源软件所有版本都有漏洞,因此需要对漏洞风险进行综合评估后,采取切实可行的处置方案。例如:对于经评估不受漏洞影响的可不修复,但必须限制该开源软件的扩散使用;对于暂无安全版本的,可升级到漏洞数量最少的稳定版本,并采取相应的风险缓释措施等。