开源软件具有免费、繁荣、易得等优点,因此被各行业广泛引入和使用,尤其是随着新兴产业的蓬勃发展“大智云链”等技术,开源软件的支撑作用越来越明显。但是,开源软件具有开放、自由、共享的特点,很容易成为攻击点。通过利用开源软件漏洞,甚至冒充开源贡献者嵌入漏洞,都是经过验证可行的攻击形式。在享受开源红利的同时,各行业也逐渐意识到开源软件的潜在风险。监管部门、企事业单位等都开始重视和推动开源软件的安全治理。开源软件是典型的信息资产,可以利用信息资产管理理论进行安全治理。在工作过程中,笔者综合运用资产梳理、风险评估与处置、持续改进等思路,逐步打开了工作局面。下面从管理、技术和实施三个方面谈一下经验。管理(1)了解家族资产管理情况的第一步是建立资产清单。因此,开源软件安全治理的第一步是摸清家族背景,解决开源软件“有什么”和“谁在用”的问题。我们通过搭建私服仓库对开源软件进行统一管理,借助自动依赖分析能力自动获取应用系统与开源软件之间的依赖关系,掌握产品中使用了哪些开源软件,以及作为其类型、协议、来源等信息,从而形成完整的使用关系视图。(2)明确职责资产需要有专人负责管理。通过发布制度,我们按照“谁引进、谁负责、谁支持”的原则,明确了开源软件的责任人。对于开源软件新增漏洞,由安全部门负责监控预警,相关责任人负责漏洞处置。(3)理顺流程为做好安全管理工作,建立了覆盖开源软件全生命周期的安全管控闭环工作流程,包括:建立了安全审计流程介绍链接;异常申请流程;在退出环节建立了安全退出流程等。(4)制定标准为满足监管和法律合规要求,企业应建立一套明确的开源管理政策,引导安全合规使用开源软件。在开源协议方面,建立可接受协议的白名单。在安全方面,明确哪些风险我们可以接受,哪些我们必须拒绝,并制定切合实际的标准。我们将开源软件分为三类:开源基础软件、组件和工具。对不同类别制定不同的准入标准和处置标准,形成合理可行的差异化标准体系。例如,开源基础软件应用范围广,升级影响大。在决定是否修复之前需要对其漏洞进行评估,并尽量协调包修复;开源工具未投入生产,漏洞风险较小,可适当降低。漏洞处置准入门槛和时限要求。(5)度量与评估通过度量与评估,可以不断发现问题,不断改进,促进开源软件安全管理水平的提升。在治理过程中,我们通过设置过程指标和结果指标来衡量治理工作。过程指标主要用于衡量和促进存量治理工作,如任务完成率;结果指标用于衡量一个组织的开源软件的治理有效性、安全级别和管理能力。技术方面(十一)工具支持完善的工具是实施治理工作的基础。开源仓库管理、依赖管理、黑白名单管理、安全漏洞管理、进程管理、配置管理都离不开工具的支持。基于开源仓库管理工具和开源软件漏洞扫描工具,结合现有的构建、配置、项目管理工具,构建了开源软件的统一获取通道,建立了产前安全检查权限控制,以及提供限制使用和例外申请的渠道。构建了支持开源软件各项安全管理工作的工具体系。(2)及时、全面地获取开源软件漏洞信息对于威胁情报来说非常重要。基于开源软件漏洞扫描工具,结合NVD、CNVD等漏洞数据库信息,以及业内专业安全公司提供的威胁情报,形成多渠道的综合情报源。(3)解决方案漏洞处理以升级版本为主,但部分漏洞可能尚未修复,或开源软件所有版本均存在漏洞,需要对漏洞进行综合评估后采取可行的解决方案风险。例如,经评估未受漏洞影响的开源软件无需修复,但必须限制开源软件的传播和使用;对于没有安全版本的,可以升级到漏洞最少的稳定版本,并采取相应的风险缓释措施等。实施(1)库存管理针对已经整理好的开源软件清单out,借助开源软件漏洞扫描工具(也可以在NVD、CNVD等漏洞数据库中手动查询),明确待治理存量漏洞清单。对于刚开始开源软件安全治理的企业来说,存在的漏洞数量可能会比较多。因此,需要遵循“风险至上”的原则,考虑应用系统之间的依赖关系,制定基础平台优先治理、互联网应用重点治理等差异化。按照治理策略,分批有序进行治理。在治理过程中,我们采取了专项治理、自主治理、即刻处置三种方式。专项治理主要针对组织内风险程度高、影响面广的漏洞进行彻底治理。自治主要是为了充分发挥研发团队的主动性,自主选择范围,减少易受攻击的组件数量。立即处置是指对监管机构或情报机构发来的高危、重要漏洞立即进行处理。(二)外防引进为避免出现“边治边污”的局面,需要严格控制开源软件的引进。一是建立开源软件安全审查机制。只有通过安全审查的开源软件才能进入组织的开源私服仓库。二是坚持使用组织的开源私服仓库作为开源软件的唯一可信来源。应用软件的集中构建必须依赖于私有服务器仓库,以防止未经授权的软件被构建到应用系统中。三是持续更新开源软件使用观,自动识别所有开源软件中的新漏洞,及时向研发团队发出漏洞预警,推动漏洞修复和补救措施快速落地。(3)内部防扩散随着时间的推移和漏洞库的更新,私服仓库中软件的安全状态会发生变化。当出现新的安全漏洞时,尽快限制易受攻击软件的使用范围,防止风险在组织内扩散。应建立开源软件“灰名单”和应用系统“白名单”,对开源软件和存在漏洞但尚未处理的系统进行标记,禁止“白名单”之外的系统使用软件在“灰名单”中。开源软件安全治理是一项长期、持续、复杂的系统性工作。在治理实践过程中,没有真正的灵丹妙药,必须以扎实细致的工作态度推进落实。从业者要真正认识到开源软件安全治理的长期性和艰巨性,正确处理安全与发展的关系,建立高效实用的工作机制和符合企业技术栈的工具链,构建体系+技术全能开源软件管理安全线路。【本文为专栏作者“安安牛”原创文章,转载请通过安安牛(微信公众号id:gooann-sectv)获得授权】点此查看作者更多好文
