近日,GitHub在其年度Octoverse状态报告中指出,开源软件安全漏洞在被披露之前的发现周期超过四年。
报告分析了超过45,000个活动代码目录,以深入了解开源安全性(漏洞)以及开发人员在漏洞报告、警报和补救方面的做法。
其他发现
通过分析依赖关系图收集的长达一年的数据后,报告发现GitHub上的大多数项目至少具有一个开源依赖项。
对于使用JavaScript(94%)、Ruby(90%)和NET(90%)的用户来说百分比最高。JavaScript和Rudy项目的中位数直接依赖项数量最多(分别为10和9),而JavaScript的中位数可传递依赖项数量最多(即它们的直接依赖项本身具有其他依赖项)。
另一个有趣的发现是,大多数开源软件漏洞是由错误而不是恶意攻击引起的。
“对来自六个生态系统的521个随机样本进行的分析发现,有17%的代码提交与后门尝试之类的明显恶意行为有关。在这17%的统计中,绝大多数来自npm生态系统。”
他们解释说,后门最明显的迹象是攻击者通常是通过账户劫持来获取对程序包源代码存储库的访问权限,而针对这些尝试的最后一道防线是在开发管道中进行仔细的同行评审,尤其是来自新提交者的更改。
“许多成熟的项目都进行了认真的同行评审。攻击者已经意识到了这一点,因此他们经常试图在发行时间节点通过版本控制之外的手段来实施破坏,例如通过对软件包名称进行篡改来欺骗人们下载恶意代码版本。”
GitHub指出,人为失误产生的漏洞也能具有类似恶意攻击的破坏性,而且更有可能影响受欢迎的项目。
开源安全的最佳实践
“使用开源软件时,安全始终是关注的重点。我们的分析表明,发现的潜在漏洞与所编写代码的行数成正比。”报告指出:“开源的力量和希望来自社区。通过与数百万开发人员的联手,不仅可以开发软件包而且可以识别和修复漏洞,我们可以更快、更安全地开发软件。”
报告强调,开源安全的关键是利用自动警报和补丁工具。“我们自己的分析发现,自动生成pull request更新补丁版本的存储库,平均修复时间为33天,这比没有自动更新的存储库要快13天或1.4倍。”
【本文是51CTO专栏作者“安全牛”的原创文章,转载请通过安全牛(微信公众号id:gooann-sectv)获取授权】