日前哈佛商学院、哈佛创新科学实验室、Linux 基金会、OpenSSF (开源安全基金会) 联合研究撰写的《免费和开源软件普查 III》发布,此次研究以前两次研究为基础,研究构成现代软件基石的应用程序级组件。
此次研究分析了 10000 家公司使用的超过 1200 万条开源软件使用情况数据,研究团队与业界合作收集了来自多个平台的匿名数据,分析包括对生产代码库的自动扫描和对软件组合的全面人工审查,从而深入了解开源软件的使用情况及其在整个软件供应链中的间接依赖情况。
本次研究发现的特点包括:
96% 的代码库中都存在开源组件
云服务相关的专用包 (也就是非开源) 使用量正在急剧增加
业界继续依赖过时的 Python 2 导致面临安全风险
自第二次调查以来 Rust 采用率激增 500%,标志着向内存安全编程的转变
软件组件缺乏标准化命名增加了安全风险
一小部分贡献者推动了主要的开源软件,带来了可持续性方面的担忧
这份报告目前在 Linux 基金会官方网站提供免费下载,有兴趣的网友可以查看报告全文:https://www.linuxfoundation.org/research/census-iii?hsLang=en
单一维护者项目的风险暴露:
研究报告指出,40% 的顶级项目只有 1~2 名开发者并且贡献了超过 80% 以上的代码,贡献者 / 维护者的高度集中模式代表着潜在的安全隐患。
案例是今年的 XZ Utils 供应链投毒事件,黑客通过频繁为该项目提交代码获得主要维护者的好感和信任,之后成为维护者后开始在项目中投毒,然后感染了大量的下游项目。
OpenSSF 基金会正在努力解决这类挑战:确保审查的源代码就是人们正在运行的代码。开源软件的一大优势就是可以进行广泛审查,从而寻找有意或无意中包含的漏洞。
然而如果审查的内容不是用于构建最终产品的内容那审查就会变得没有意义,所以现在 OpenSSF 的工作就包括强化构建和分发流程,确保现实中运行的代码就是已经经过审查的代码。
Python 2 属于老生常谈的问题:
Python 基金会在 2000 年发布 Python 2,在 2008 年发布 Python 3 系列,目前 Python 主要在 Python 3.x 系列上进行更迭。
比较头疼的是一些行业的 Python 2 使用率为 20%~30%,使用过时版本的 Python 意味着存在安全隐患,但业界暂时也没有更好的办法能够完成新版本更迭。
OpenSSL 认为如果让新版本升级变得极其容易或许能够推动开源软件的新版本采用率,例如在几乎所有情况下,新版本都应该完全向后兼容旧版本,尤其是以前的老版本,尽管这需要开发者付出额外的努力,但这应该是正确的方法。