编辑 | 宋 慧
出品 | CSDN云计算
头图 | 付费下载于东方IC
2020年底,SolarWinds 遭受的大规模网络攻击,使得美国和多国政府在内的 18000+ 机构被影响。几乎每个月,软件供应链都在遭受黑客攻击。
而从软件端看,“检测发现,国内企业软件项目 100% 使用了开源软件;超 8 成软件项目存在已知高危开源软件漏洞;平均每个软件项目存在 66 个已知开源软件漏洞。”6 月 2 日,奇安信集团代码安全实验室正式发布《2021 中国软件供应链安全分析报告》(下文简称报告),首次对国内软件供应链各个环节的安全风险,进行了深入细致的研究和解读。
报告认为,随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。
“吃了不好的食品会生病,用了不好的软件会被攻击”,奇安信集团代码安全事业部总经理、代码安全实验室主任黄永刚举了一个形象的例子。“拿牛奶来说,从奶农、奶站到车间,各个环节都可能导致原材料被污染,造成食品安全问题。同样,软件供应链可划分为开发、交付、运行三个大的环节,每个环节都可能会引入供应链安全风险从而遭受攻击,上游环节的安全问题会传递到下游环节并被放大。”
每 1000 行代码就有超过 10 个安全缺陷
源代码是软件的原始形态,位于软件供应链的源头。源代码安全是软件供应链安全的基础,其地位非常关键。
报告显示,2020 年全年,奇安信代码安全实验室对 2001 个国内企业自主开发的软件项目源代码进行了安全缺陷检测,检测的代码总量为 335011173 行,共发现安全缺陷 3387642 个,其中高危缺陷 361812 个,整体缺陷密度为 10.11 个/千行,高危缺陷密度为 1.08 个/千行。
开源软件的安全缺陷则更加密集。2020 年全年,“奇安信开源项目检测计划”对 1364 个开源软件项目的源代码进行了安全检测,代码总量为 124296804 行,共发现安全缺陷 1859129 个,其中高危缺陷 117738 个。2020 年检测的 1364 个开源软件项目整体缺陷密度为 14.96 个/千行,高危缺陷密度为 0.95 个/千行。
超 8 成项目存在高危开源软件漏洞
与企业自主编写的源代码相同,开源软件同样位于软件供应链的源头。国际知名咨询机构 Gartner 表示,现代软件大多数是被“组装”出来的,不是被“开发”出来的。在奇安信代码安全实验室分析的 2557 个国内企业软件项目中,无一例外,均使用了开源软件。
在 2557 个国内企业软件项目中,共检出 168604 个已知开源软件漏洞(涉及到 4166 个唯一 CVE 漏洞编号),平均每个软件项目存在 66 个已知开源软件漏洞,最多的软件项目存在 1200 个已知开源软件漏洞。
其中,存在已知开源软件漏洞的项目有 2280 个,占比高达 89.2%;存在已知高危开源软件漏洞的项目有 2062 个,占比为 80.6%;存在已知超危开源软件漏洞的项目有 1802 个,占比为 70.5%。影响范围最大的开源软件漏洞为 Spring Framework 安全漏洞(漏洞编号为 CVE-2020-5421),影响了 44.3%的软件项目。
值得警惕的是,在所有存在已知开源软件漏洞的项目中,部分软件项目中竟然还存在多年前已公开并修复的古老漏洞,最古老的漏洞是 2005 年 11 月公开的 CVE-2005-3510,仍然存在于 31 个项目中。
与此同时,开源软件的漏洞数量仍呈高速上涨的趋势。据奇安信代码安全实验室监测与统计,截至 2020 年底,CVE/NVD、CNNVD、CNVD 等公开漏洞库中共收录开源软件相关漏洞 41342 个,其中 5366 个为 2020 年度新增漏洞。
奇安信:三层建议助力建设供应链安全良性生态
报告认为,软件供应链已经成为网络空间攻防对抗的焦点,直接影响关键基础设施和重要信息系统安全。然而,目前我国在软件供应链安全方面的基础比较薄弱,亟需从国家、行业、机构、企业各个层面建立软件供应链安全风险的发现能力、分析能力、处置能力、防护能力,整体提升软件供应链安全管理的水平。
对此,奇安信代码安全实验室建议:
在国家和行业监管层面,应制定软件供应链安全相关的政策要求、标准规范和实施指南,建立起国家级/行业级软件供应链安全风险分析平台,并且将软件供应链安全的相关工作纳入产品测评、系统测评等工作中。
在最终用户层面,首先应明确本单位内部软件供应链安全管理的目标和工作流程;在采购商业软件时,应充分评估供应商的安全能力,要求供应商提供其软件产品中所使用的第三方组件/开源组件的清单,一旦这些第三方组件/开源组件出现安全漏洞,要求供应商提供必要的技术支持;在软件开发中,须严格遵循软件安全开发生命周期管理流程。
在软件厂商层面,需要提高安全责任意识,建立清晰的软件供应链安全策略,严格管控上下游,持续削减自主开发的代码和开源软件所带来的安全风险,同时建立完善的产品漏洞响应机制,必须要时为客户提供相应的技术支持。