当前位置: 首页 > 科技观察

超过75%的开源软件安全漏洞存在于间接依赖中

时间:2023-03-19 01:21:28 科技观察

JavaScript、Ruby和Java是间接依赖中最脆弱的生态系统。开源项目中的绝大多数安全漏洞都存在于间接依赖项中,而不是直接加载的组件中。“汇总所有生态系统的数字,我们发现间接依赖中的漏洞数量是直接依赖中的三倍多,”Snyk的应用程序安全顾问AlyssaMiller在接受《 2020 年开源安全状况报告 》讨论Snyk的采访时说。该报告研究了漏洞如何影响JavaScript(npm)、Ruby(RubyGems)、Java(MavenCentral)、PHP(Packagist)和Python(PyPI)生态系统。根据Snyk的说法,项目中加载主要组件的依赖库受到86%的JavaScript安全漏洞、81%的Ruby漏洞和74%的Java漏洞的影响。根据Snyk的说法,公司在扫描其主要依赖项以查找安全问题时未能探索其完整依赖项树的多个级别可能会导致发布或最终运行易受无法预料的缺陷影响的产品。然而,虽然安全缺陷在JavaScript、Ruby和Java中普遍存在,但在PHP和Python中却并非如此,其中绝大多数缺陷存在于直接依赖项(主要组件)中。当然,这是有原因的。“老实说,我发现它更多地取决于生态系统本身的开发方法,”米勒说。“特别是Java和Node.js项目似乎比生态系统的其他部分更严重地利用依赖关系。特别是,当您查看Node.js生态系统的庞大规模时,从其他包构建??或利用关键功能的包是很正常。”“询问任何Node.js开发人员,他们可能会经历漫长的等待项目打开的过程,而npm会尝试提取所有必要的依赖项,”Miller补充道。“我们最喜欢的例子之一是一个80行的Java应用程序,它指定了7个依赖项。但是,当你遍历整个依赖项树时,你会发现59个子依赖项,突然之间,80行代码变成了740,000行。“这种‘陌生人危险’,正如我们喜欢给它起的绰号,是一些重大安全漏洞的根本原因,也是使软件供应链中的安全问题复杂化的一个关键原因,”米勒说。少量缺陷可能会导致但是,Snyk团队并不仅仅关注这些缺陷在开源生态系统中的位置,而是它们是什么类型的缺陷。另一个有趣的发现是,2019年发现的大多数新安全漏洞都是跨站点脚本(XSS)漏洞,尽管数量庞大,但只影响了一小部分实际运行的项目。相反,在去年发现的所有缺陷中,有20个原型污染缺陷影响最大,影响超过11.5数万个不同的开源项目,可能还有更多的私有项目也受到影响。其中,jQuery和LoDash受原型污染缺陷的影响最大,因为这些框架是目前使用最广泛的JavaScript开发工具集。然而,Snyk团队在报告中指出的另一个不寻常的特征是,“恶意软件包”被列为他们去年在项目中发现的第二大最常见的安全问题类型。这指的是开源代码库,或开发者帐户被黑客入侵且代码中毒的库。根据Snyk的说法,被黑客攻击或恶意软件包是去年开源生态系统中第二大最常见的安全问题来源。”大多数(超过87%)来自npm(JavaScript)包,”Miller说。去年的安全问题没有那么严重,但并不值得庆祝。此外,Snyk指出,他们发现缺陷数量下降了20%。“很难确定(他们为什么而倒下),”米勒说。“对于像我这样永远的安全怀疑论者来说,这可能只是自然潮起潮落的一部分。然而,从好的方面来说,我们确实看到了社区中的一些关键变化,这可能意味着这不仅仅是今年的异常值“例如,我们看到报告的跨站点脚本(XSS)漏洞比任何其他漏洞类型都多,它们只影响我们当年扫描的全部项目的一小部分。这表明XSS可能不会影响使用率更高的更成熟的项目,这意味着人们可能会更加关注安全编码的技术方面。“此外,我们的调查表明,整个社区的态度开始将软件安全视为开发团队和安全团队(甚至在某种程度上,运营团队)之间的共同责任,”米勒说。改进当然可以帮助提高围绕安全代码和安全使用开源包的意识和战术措施。“我在安全领域工作了15年,我当然不准备宣布某一年是事情正在好转的标志,但你可以将其视为一种趋势,我们将继续看看未来几个月会发生什么。”2020年怎么了。”