自去年以来,针对成千上万开发人员使用的开源代码库的攻击呈指数级增长。网络罪犯以开源软件包为目标,试图通过软件供应链传递恶意代码。安全提供商Sonatype的数据显示,2021年发生了12,000起网络安全事件,今年此类所谓的软件供应链攻击增加了650%。正如本周的Log4j漏洞所表明的那样,公司必须谨慎对待开源代码。什么是软件供应链攻击?开源软件包通常存储在在线代码存储库中。根据波恩大学、FraunhoferFKIE研究所和法国SAP实验室的研究人员的说法,由于某些代码包在各种应用程序中无处不在,这些代码库几乎相当于“大规模恶意软件的可靠分发渠道”。2021年针对开源软件的供应链攻击将增加650%图1:年度软件供应链攻击总数(来源:2021Sonatype《软件供应链状况报告》)根据Sonatype发布的《软件供应链状况》报告,主要有三种软件供应链攻击的类型。最常见的两种形式是依赖混淆和拼写错误抢注,这两种形式都依赖于依赖管理器等软件开发工具自动下载并在应用程序中实施开源代码这一事实。在依赖混淆攻击中,攻击者创建一个具有较新版本号的易受攻击的包,这使得软件开发工具可以自动实现有缺陷的包。这种形式是2021年最常见的软件供应链攻击类型。在错字抢注攻击中,攻击者会给自己创建的包起一个与流行包非常相似的名字(大多数时候只是一个字母不同),希望开发者输入错误的包名。包。恶意代码注入是在开源软件包中添加新的代码,任何运行该软件包的人都会被欺骗。Sonatype表示,今年此类攻击有所减少,这可能是因为开源代码库增强了自身的安全性。波恩大学的研究发现,Node.js(npm)和Python(PyPi)代码库是供应链攻击的主要目标,这可能是因为在软件包安装过程中很容易触发恶意代码。开源软件安全状况Sonatype的报告评估了常见开源软件包中的漏洞数量。报告发现,MavenCentralJava包代码库存在漏洞的组件数量最多,超过35万个组件存在严重漏洞,很容易被攻击者利用获取root级权限。漏洞组件数量第二多的是nmpJavaScript包代码库,有250,000个组件存在严重漏洞。常见开源代码库中检测到的严重漏洞图2:各开源代码库中存在漏洞的开源包组件总数(蓝色代表至少存在一个已知漏洞的组件数量;红色代表存在严重漏洞的组件数量漏洞。)Sonatype发现易受攻击的包并不代表代码库中包含的所有包的很大一部分。例如,MavenCentral代码库中只有4.9%的程序包含严重漏洞。在PyPi代码库中,这个比例更小,仅为0.4%。即便如此,下载这些包的频率意味着它们包含的漏洞可以快速广泛地传播。2021年,JavaScript开发者将下载1.5万亿个开源包,Python包将被下载1270亿次。2021年,JavaScript开发者将下载1.5万亿个开源包开源的双刃剑,开源既是数字创新的重要推动力,也是软件供应链攻击的诱人目标。这一严酷的现实凸显了工程主管必须拥抱智能自动化的重要责任和机会,以便他们能够在最好的开源供应商上标准化,并使用最好的版本来帮助开发人员保持第三方库的更新。”提交的报告波恩大学的研究人员指出,许多开源项目引入了双因素身份验证机制和禁用会话脚本来自动安装额外的软件包。开源生态系统应该促进采用这些措施,他们写道。“尽管普遍增加在利益相关者的安全意识方面,这些对策应该尽可能地推广并默认执行,以防止开源软件供应链攻击。源码软件安全,Log4j由unp维护aidvolunteers并被广泛应用于大量的应用中。专家表示,实施这些应用程序的企业往往不知道其存在,导致企业需要数月时间才能找到并修复所有漏洞实例。
