超过 75% 的开源软件安全漏洞存在于间接依赖中
创始人
2024-03-02 05:14:42
0

JavaScript、Ruby 和 Java 是间接依赖中存在缺陷最多的生态系统。

开源项目中的绝大多数安全漏洞都存在于间接依赖关系中,而不是存在于直接加载的组件之中。

“汇总所有生态系统的数字后,我们发现间接依赖中存在的漏洞数量是直接依赖的三倍以上。”Snyk 的应用安全顾问 Alyssa Miller 在接受讨论 Snyk 的《2020 年开源安全状况报告》的采访时说。

该报告研究了漏洞如何影响 JavaScript(npm)、Ruby(RubyGems)、Java(MavenCentral)、PHP(Packagist)和Python(PyPI)生态系统。

Snyk 表示,项目内部加载的主要组件所依赖的依赖库,受到了 86% 的 JavaScript 安全漏洞、81% 的 Ruby 漏洞和 74% 的 Java 漏洞的影响。

Snyk 认为,公司在扫描他们的主要依赖项是否存在安全问题时,如果不能探索其完整依赖树的多个层次,会导致发布或最终运行容易受到不可预见的缺陷影响的产品。

但是,虽然安全缺陷在 JavaScript、Ruby 和 Java 中普遍存在,但在 PHP 和 Python 中却不是这样,绝大多数缺陷都存在于直接依赖关系(主要组件)中。当然,这是有原因的。

“老实说,我发现这更多取决于生态系统内部本身的开发方法。”Miller 说。“尤其是 Java 和 Node.js 项目,似乎比其他生态系统更重地利用了依赖性。特别是,当你看到 Node.js 生态系统的庞大规模时,从其他包构建或利用关键功能的包是非常正常的。”

“询问任何 Node.js 开发人员,他们都可能会遇到这样的事,即在 npm 试图拉取所有必要的依赖关系时,等待很长时间才能打开一个项目,”Miller 补充说。“我们最喜欢的一个例子是一个 80 行的 Java 应用程序,指定了 7 个依赖关系。然而,当你走完整个依赖树时,你会发现有 59 个子依赖,突然间,80 行代码变成了 74 万行。”

“正如我们喜欢给它起的绰号,这种‘陌生人的危险’,是一些重大安全漏洞的根本原因,也是造成软件供应链安全复杂化的关键原因,”Miller说。

少量的缺陷会造成了巨大的影响

但 Snyk 团队并不只是看这些缺陷在开源生态系统中的位置,还看它们是什么类型的缺陷。

另一个有趣的发现是,2019 年发现的大部分新安全漏洞都是跨站脚本(XSS)缺陷,尽管数量很多,但这些缺陷只影响了一小部分实际运行的项目。

相反,在去年发现的所有缺陷中,有二十几个原型污染缺陷的影响最大,影响了超过 11.5 万个不同的开源项目,可能还有更多的私有项目也受影响。其中,jQuery 和 LoDash 的原型污染缺陷影响最大,因为这些框架是目前应用最广泛的 JavaScript 开发工具集。

但是,Snyk 团队在报告中还指出了另一个不寻常的地方,即“恶意软件包”被列为他们去年在项目中发现的第二大最常见的安全问题类型。这指的是故意出于恶意创建的开放源代码库,或者是开发人员帐户被黑并且代码中毒的库。

根据 Snyk 的说法,去年,被黑的或恶意的软件包是开源生态系统中第二大最常见的安全问题来源。“这些绝大多数(超过 87%)来自 npm (JavaScript)软件包,” Miller 说。

去年的安全问题不那么严重,但也不值得庆祝

此外,Snyk 还指出,他们在所扫描的所有五个生态系统中发现的缺陷数量下降了 20%。

“很难确定(它们因为什么下降),”Miller 说。“以我这种永久安全怀疑论者来说,这可能只是自然的退潮和流动的一部分。然而,在乐观的一面,我们确实看到了社区的一些关键变化,这可能意味着这不仅仅是这一年的异常值。”

“例如,我们看到所报告的跨站点脚本(XSS)漏洞比任何其他漏洞类型都多,它们只影响了我们当年扫描的总项目中的一小部分。这表明,XSS 可能不会影响到使用率更高因而更成熟的项目,这意味着人们可能更多关注安全编码技术方面。”

“此外,我们的调查显示,整个社区的态度开始将软件安全视为开发团队和安全团队(甚至在某种程度上是运营团队)之间的共同责任,”Miller 说。

“这种合作的改善无疑可以帮助推动围绕安全代码和安全使用开源包的更好的意识和战术措施。”

“我在安全领域工作了 15 年,我当然还没有准备好宣布某一年是事情出现转机的标志,但你可以认为这是一个趋势,我们将继续观察,看看未来几个月和整个 2020 年的情况如何。”

关于开源社区总体安全状况的其他见解,Snyk 的完整报告可在这里下载


via: https://www.zdnet.com/article/more-than-75-of-all-vulnerabilities-reside-in-indirect-dependencies/

作者:Catalin Cimpanu 译者:wxy 校对: wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

不允许第三方导出微信聊天记...
微信聊天记录的导出,一直是微信用户比较关心的事情,针对这个需求,网...
2026-01-22 17:48:45
Windows 10停更在...
2026-01-14 16:41:05 作者:狼叫兽 2026...
2026-01-22 14:49:15
湖北移动5G×AI拧紧智慧...
在襄阳市樊城区余家湖产业园,湖北荆洪生物科技有限公司的氟啶车间与特...
2026-01-21 15:48:16
“安全补丁” 和 “系统更...
很多人在使用手机或电脑时,都会忽略系统弹出的 “更新提示”。有人觉...
2026-01-20 11:47:39
原创 ...
菲律宾总统马科斯这几年在外交政策上越来越倾向与美国靠近,特别是在他...
2026-01-20 11:24:42

热门资讯

如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Textual:为 Pytho... 快速入门使用 TextualPython 在 Linux 上有像 TkInter 这样的优秀 GUI...
硬核观察 #1245 Open... #1 OpenAI 悄然删除禁止将 ChatGPT 用于 “军事和战争” 的禁令在 1 月 10 日...
使用时间序列数据,用开源工具助... InfluxData 是一个开源的时间序列数据库平台。下面介绍了它是如何被用于边缘应用案例的。收集到...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
硬核观察 #1249 LG 洗... #1 LG 洗衣机每天上传近 4GB 的数据?一个名为 Johnie 的 LG 洗衣机用户发现,他的...
2024 年 Linux 和开... 让我们尝试预测未来吧!新的一年快乐,朋友们 ✨2024 年的钟声已经敲过,我们有必要去预见一下将塑造...