2024年8月12日,奇安信集团对外发布《2024中国软件供应链安全分析报告》(以下简称《报告》)。《报告》显示,国内企业软件项目,开源软件使用率达100%。目前,开源软件漏洞指标仍处于高位,软件供应链的安全问题并没有得到根本性的改善,20多年前的开源软件漏洞仍然存在于多个软件项目中。《报告》建议,软件供应链安全保障应加强顶层设计,持续推进和落地相关保护工作。
作为本系列年度分析报告的第四期,本报告深入分析了过去一年来代码安全问题对软件供应链安全性的潜在威胁,总结了趋势和变化。与往年报告相比,本期报告在开源软件生态发展与安全部分新增了对NPM生态中恶意开源软件分析的内容;并通过多个实例再次验证了“外来”组件“老漏洞”发挥“0day漏洞”攻击作用的状况。感兴趣的读者可重点关注。
国内软件供应链安全状况有所改善,但漏洞指标仍处于高位
奇安信代码安全实验室通过数据分析发现,与历年相比,2023年国内企业自主开发软件的源代码高危缺陷密度有所下降,并且因使用开源软件而引入安全风险的状况有一定改善。尽管如此,相关漏洞指标仍处于高位,软件供应链安全风险的管控亟待进一步加强。
《报告》通过对2023年国内企业自主开发源代码的分析发现,虽然整体缺陷密度达到12.76个/千行,高于以往各年,但高危缺陷的密度为0.52个/千行,比之前三年有明显的下降;NULL引用类缺陷的检出率为25.7%,较往年也有较大降低。奇安信代码安全实验室认为,该趋势的出现,很大程度上得益于软件开发过程中,研发企业对重点缺陷逐渐重视,针对重点问题的安全编码规范进一步普及,并且代码审计工具的使用持续推广。
与此同时,国内企业因使用开源软件而引入安全风险的状况依然不容忽视。
2023年,奇安信代码安全实验室对1763个国内企业软件项目中使用开源软件的情况进行分析发现,全部使用了开源软件,使用率为100%,平均每个项目使用了166个开源软件,数量再创新高;另一方面,平均每个项目存在83个已知开源软件漏洞,含有容易利用的开源软件漏洞的项目占比为68.1%;存在已知开源软件漏洞、高危漏洞、超危漏洞的项目占比分别为88.0%、81.0%和71.9%,与去年相比均有所下降。其他如古老开源软件漏洞、老旧开源软件版本使用等方面的状况基本与之前历年持平。由此可见,国内企业使用开源软件的安全状况虽有所好转,但风险依然处于高位。
正所谓“道高一尺魔高一丈”,在过去一年中,软件供应链安全攻击事件没有丝毫减少的趋势,攻击手段依然花样百出。例如2023年9月,某黑客组织都在使用域名仿冒和星标劫持技术向开源包管理器PyPi植入一系列恶意包,并引诱开发人员使用,攻击者可以攻陷平台用户设备,窃取金融和个人信息、登录凭据等敏感数据,可能影响数百万人。2024年7月初,一家网络安全公司发现OpenSSH服务器进程存在“regreSSHion”漏洞,攻击者可利用漏洞实施系统完全接管、恶意程序安装和后门创建等攻击行为,严重程度堪比Log4Shell。
《报告》指出,虽然从趋势来看,上述的软件供应链安全问题有一定程度的缓解,但另一方面,这些指标数据仍处于高位,软件供应链的安全问题并没有得到根本性的改变。值得高兴的是,越来越多的机构和企业开始关注并实施软件供应链的安全,一些机构和企业基于规范的流程和实践,落地了相应的解决方案和检测平台。但就目前的形势而言,这些经验、方法和工具还需要进一步的持续完善、推广和应用。
开源软件生态持续繁荣,NPM包项目数量和增速均列第一
根据奇安信代码安全实验室的监测和统计,2022年底和2023年底,主流开源软件包生态系统中开源项目总量分别为5499977和7959049,一年间增长了44.7%,增速迅猛;截至2023年底,主流开源软件包生态系统中平均每个开源项目有11.3个版本,与前几年基本持平。2023年开源软件生态持续繁荣。
其中,NPM包生态开源项目数量和增速均位列第一。与前三年相比,NPM超越Godoc,成为开源项目数增速最快的包生态系统。八个典型的开源软件包生态系统中开源项目数量和增长率情况如下图所示,其中开源项目数量最多的是NPM包生态系统,截至2023年底,其开源项目数量达到了4170641,依然远高于其他生态;开源项目数量增速最快的也是NPM,2023年一年间的项目总量增速高达79.1%,Godoc的项目数增长也很快,达58.1%。
在开源软件源代码检测中,2023年全年,“奇安信开源项目检测计划”对2248个开源软件项目的源代码进行了安全检测,代码总量为309522947行,共发现安全缺陷5108161个,其中高危缺陷355721个,整体缺陷密度为16.50个/千行,高危缺陷密度为1.15个/千行。两项缺陷密度指标较去年均有所下降。
在典型安全缺陷检出情况方面,报告通过对2248个开源软件项目的缺陷检测结果分析发现,注入、密码管理、日志伪造、跨站脚本、NULL引用、配置管理、输入验证、资源管理、路径遍历、API误用等十类典型安全缺陷的总体检出率为76.7%,与前两年相比,有小幅升高。每类典型缺陷历年的检出率及对比情况如下图所示。
在开源软件公开报告漏洞方面,根据奇安信代码安全实验室监测与统计,截至2023年底,CVE/NVD、CNNVD、CNVD等公开漏洞库中共收录开源软件相关漏洞64938个,其中有7107个漏洞为2023年新增。
《报告》还分析发现,与前几年报告数据一致,多个二三十年前的老旧开源软件版本仍在使用。分析发现,许多软件项目中仍然在使用老旧的开源软件版本,有的版本已经超过30年,存在极大的运维风险。被使用的老旧开源软件版本中,最早的一款是1993年3月3日发布的byacc1.9,已经发布31年。同时,开源软件各版本使用依然混乱,这些都给软件供应链安全埋下了巨大风险。
建议加强软件供应链安全保障的顶层设计
《报告》认为,目前国内缺少软件供应链安全管理领域权威的实施指南;此外,对于数量巨大的中小型软件研发企业来说,制定和实施系统的软件供应链安全解决方案面临着成本、精力、人员等诸多难题,当前能够采取的防护措施相对有限。因此,应加强软件供应链安全保障的顶层设计,建立健全软件供应链安全的指导监督机制和基础服务设施,并尽量覆盖所有类型的软件生产和供应商。
为此,《报告》提出了三方面建议,一是建立国家层面统一的软件供应链安全保护基础设施;二是完善国家和行业级的软件供应链安全测评认证体系;三是健全关基软件供应商安全实践证明材料的备案机制。