开源软件供应链的隐藏漏洞:底层基础设施风险解析

本文深入探讨开源软件供应链中的基础设施安全隐患,分析Maven Central等关键基础设施面临的可持续性挑战,并提出企业级缓存策略等解决方案,帮助组织构建更安全可靠的软件开发生态系统。

开源软件供应链的隐藏漏洞:底层基础设施

关键要点

  • 组织在使用开源组件时缺乏清晰的库存清单,当出现类似Log4Shell的零日漏洞时,这种缺乏监督的情况会将安全事件转变为广泛的危机
  • 欧盟网络弹性法案意图对开源软件施加义务,将其视为商业软件。如果考虑到所有利益相关者的意见,而不仅仅是知名参与者的意见,这个意图是好的
  • 开源的另一个主要漏洞是其运行的底层基础设施。其功能中断将导致所有主要软件供应链生态系统出现重大中断
  • Maven Central(主要的Java存储库)80%的流量来自三大云提供商(Amazon、GCP和Azure)的客户
  • 组织可以通过引入确保在其组织内缓存必要软件依赖项的公司政策来缓解开源基础设施的压力

对话内容

Olimpiu Pop:大家好。我是Olimpiu Pop,InfoQ编辑,今天我很荣幸邀请到Sonatype的CTO兼联合创始人Brian Fox。Brian,请介绍一下自己,我知道您深度参与开源社区。

Brian Fox:当然。感谢邀请。我是Brian Fox,如您所说,是Sonatype的联合创始人兼CTO。Sonatype运营着Maven Central存储库,我们还是Nexus等许多其他软件的生产商。我很早就开始参与开源。

我的开源资历主要来自Maven项目。我很早就成为贡献者,曾担任了几年的PMC主席,现在仍在PMC中,虽然很久没有编写代码了。我还与Apache Infrared合作运营一些项目。最近,我加入了开源安全基金会(OpenSSF)的理事会,同时也是FINOS(金融开源基金会)的董事会成员。通过这些努力,近年来我与各国政府合作,为一些国家网络安全草案做出了贡献。过去几年,我还参与了欧洲的网络弹性和CRA工作。

欧盟网络弹性法案对开源是否有利?[01:42]

Olimpiu Pop:感谢您在CRA方面的帮助。您对此非常参与。当您觉得欧洲的开源面临危险时,您是敲响警钟的人之一。现在您对结果满意吗?我知道人们觉得他们听取了意见,但您感觉如何?

Brian Fox:这是个复杂的问题。对于可能不完全了解的听众,CRA试图对开源施加义务,将其视为商业软件,这大体上是正确的方向。问题在于,这是我多年来一直在推动的事情,组织使用开源软件,但不进行跟踪。他们不知道内部有什么。当出现类似Log4j的情况时,他们不知道软件内部有什么,就会出现集体恐慌。这是我近二十年来一直在帮助组织解决的问题,通过为他们构建服务和产品来实现这一点。因此,CRA的成熟总体上是有益的。

问题在于起草过程中,他们试图堵塞漏洞。他们明确表示担心组织通过开源其软件来规避处罚,我不确定我们是否应该担心这一点。如果大型商业企业愿意开源其软件,为什么我们不认为这是好事呢?但他们的确担心。因此,在结果中,他们试图定义商业,并试图对开源生产者施加义务,如果没有具体的排除或例外,这可能意味着编写软件的个人可能对其无法控制的软件中的重大安全漏洞承担法律责任。

因此,如果您编写了一个库,有人将其包含在,比如自动驾驶汽车中,并且由于您软件中的错误导致人员死亡,即使您不知道您的开源被用于汽车,您也可能承担责任。这是一个好主意走得太远的案例,可能会引起反弹。

还有一些早期语言将Sonatype(运营Maven Central的公司,托管全球所有开源Java库)突然置于负责传输的所有内容的安全性的位置上。因此,几年前我向任何愿意听的人大声疾呼:这是好的,但欧洲即将做的事情基本上是将自己与世界其他地区隔离开来,因为如果您不是欧盟公民并在编写开源,我不必遵守您的法律。我可以更改我的许可证并通知您不能再在欧洲使用。这是您真正想要的吗?您是否想不得不寻找自己的Linux分支以及所有其他东西,因为世界各地的开源用户将您排除在外?

目前,作为美国公民,您必须限制开源的地方只有朝鲜、伊朗和俄罗斯。欧洲真的想通过声称您不能访问开源而将自己加入该名单吗?此外,您是否想将自己置于Maven Central等开源基础设施提供商被迫为欧洲封锁的情况,以免我们对几乎每个开源Java的错误负责?这太疯狂了。幸运的是,经过很长时间,人们听取了意见,并做出了一些例外来澄清问题。然而,这不是立法通过后的主要目标。在战斗之后,我感到满意,也许不是高兴。与此同时,这些标准如何制定已变得有问题。立法要求围绕许多不同事物定义标准。

有标准机构,特别是在欧洲境内运营的机构,他们习惯于在非常商业的意义上工作。因此,目前实际发生的是开源仍然难以在这些标准中被听到。因此,我的幸福感从那种满足感退步到一些挫败感。我们可能会倒退,因为最终定义的标准可能只适用于商业实体,因为这是目前唯一对过程有投入的群体。我确定有人会对这种说法提出异议,但这就是我看到的情况,我仍然在几个会议中每周都进行这种对话。所以我们拭目以待。

Olimpiu Pop:CRA从一开始就是一场战斗,是一个持续的过程。最终,达成的妥协或点对开源支持者来说是体面和可以接受的。然而,随着执行阶段和实施的开始,它将在两年后全面生效。商业实体会被听取,而不是有一个包括开源代表在内的所有人可以讨论的开放平台。

这是当前时刻最大的危险,特别是当我们听到很多关于主权的讨论时。此外,当涉及到云时,有很多事情被推动。令我惊讶的是,在开源峰会以及春季的QCon Europe上,有很多关于主权云的讨论,Linux Foundation EU,以及如您所说,派系正在形成,而不是朝着共同目标前进。我们应该对发生的事情保持警惕,并作为一个团体保持警惕,因为作为消费者,我们需要理解并确保这符合我们的最佳利益。

Brian Fox:是的,这是一个非常 slippery slope。我最近没有听说过,但在CRA签署后不久,有一些开源项目基本上从市场上撤回了所有开源,因为他们基本上说,我不是律师。我无法确定我在这里没有责任。我不会承诺对我所有的东西提供五年的支持。因此,立即生效,我撤销所有我的开源。至少有一些人从开源中退缩,不仅在欧洲,而且在全球范围内,因为他们无法理解其影响。这是一个真实的事情,不仅仅是危言耸听。它会有多糟糕还有待确定。

Olimpiu Pop:是的,在最近一段时间,您可以看到软件正在成熟,人们真正理解它在哪里发生。但与其余基础设施相比,我不知道,想想电气基础设施或燃气基础设施,软件具有附加价值和附加能力,即全球的一群人可以作为提供者,作为基础设施建设者,但没有人会去建立自己的开源电网并允许它。所以这就是优势,但也是我们所有的问题。

揭示开源基础设施中的漏洞[10:02]

Olimpiu Pop:在这方面,我看到在开源峰会期间有很多讨论。Linux Foundation讨论了很多关于开源空间发生的事情。每个人都知道并看到了报告,称90%的软件现在是开源的。Frank Nagle是Linux Foundation的一部分,他将持续这一努力,特别是在AI时代。然后,有关于商业开源和像MongoDB这样的公司的报告,这些公司也从其付费产品中赚钱,但提供开源许可模式。所以这是愉快的一天,您最近在忙什么?因为我总是在秋季等待您整理的关于未来10年开源状况的报告。今年将是第11年。

Brian Fox:今年是第11周年,因此我们每年发布软件供应链安全状况报告。我们已将其转移到第一季度,因此今年的第11份报告将在冬季进行。最初就是这样开始的,我们慢慢变成了秋季。因此,我们将继续努力。我们将重点关注AI、代理AI,以及如何与开源治理等相交。如果您对我们对此的想法感兴趣,我最近在几篇博客文章中写了相关内容。但这项工作即将到来。

除此之外,我一直在演讲和撰写关于开源基础设施可持续性的文章,这是一个有趣的话题。每个人都习惯于思考开源可持续性,每个人的头脑都会想到,支付维护者,让您的开发人员贡献所有代码。是的,您应该做所有这些事情。但大多数人没有做。这里没有什么新内容。

一直潜伏在雷达下,没有足够人关注的是开源生产所依赖的所有基础设施。这些包括Maven Central,由Sonatype支付。我们像运营慈善机构一样运营它。我们不是非营利组织,但我们在历史上将这部分视为慈善机构,大多数其他软件包注册表也是如此。许多不同的开源基础设施也是如此。

它是为开源捐赠的,或者是为支持开源而捐赠的;随您选择。所有超大规模提供商都向项目提供积分和类似倡议。每个人都在这样做。但总的来说,他们都像慈善机构一样运营。没有消费和成本的平衡。因此,我在去年初,确切地说是2024年,开始深入研究这一点,因为我正在与超大规模提供商和其他人进行对话,试图找到更好的模型。

因为当我查看我们在Maven Central的数据时,80%的流量来自美国三大云提供商之一:Amazon、Microsoft和Google。因此,他们的客户共同产生了Sonatype支付的80%带宽。因此,关于对此做些什么的对话是必要的?这些超大规模提供商显然在带宽方面有比我能够谈判的更好的费率。然而,这种对话导致了诸如“嗯,没有人愿意签署一张开放的账单只是为了支付无限的带宽”之类的事情。那么您在做什么来遏制滥用呢?以前没有人真正问过我这个问题。这有点讽刺,因为每个人都认为,哦,有一条更大的鱼。他们总是会介入并为这些事情写一张无限的支票。答案是他们不会。事实上,这些公司中的大多数是几乎每个开源基金会的赞助商,包括我参与的那些以及所有这些东西。

因此,他们正在回馈,但没有人愿意签署运营一项必须无限期运行且是关键基础设施的服务,而这些服务只是无限制地增长。当我开始深入研究时,我发现消费模式严重不平衡,我忘记了确切数字,大约80%的流量来自全球不到1%的单个IP。它严重偏向少数重量级用户。我们必须实施一些合理的节流来控制这种情况。对于像这样的开源事物,您必须小心处理,因为人们习惯于永远免费乘坐。因此,您必须在行动中仁慈并改变这一点。因此,这导致了一段旅程,从查看单个IP到查看组织消费。

我发现有一些实质性的非云组织从我们这里下载东西,跨越数千个IP号码,并且在某些情况下每两周下载同一组10,000个JAR五十万次。这太荒谬了。所以就像,为什么会发生这种情况?这导致我进一步深入,我发现了更多。我不一定称之为滥用,但我会说生态系统中其他工具做出的决定由不支付账单的公司做出,将所有这些视为免费基础设施。

这是我们所说的公地悲剧的典型案例,当没有人真正看到谁在支付东西时,浪费就会随之而来。因此,我在这条道路上已经走了很长时间。在与其他开源基础设施提供商、其他软件包注册表等交谈时,目前每个人都在承担这种负担。我们正在讨论如何改变这种动态,因为将其作为无限、无限制、无限制的慈善机构运行是不可持续的。

Olimpiu Pop:这当然是正确的。但这是您作为一家公司正在支持的事情,每个人都认为这是理所当然的。如果您看看大型参与者,您提到的三大云提供商,他们有80%的下载量流向那个方向,但没有人愿意支付,或者他们没有任何意图。他们期望它像云一样,对吧?它们在天空中,它们在那里。我们不在乎它们如何到达那里以及所有这些东西。

Brian Fox:澄清一下,我在这里谈论的不仅仅是云。是一般用户。他们中的许多人在云上,这使我的工作更加困难,因为我没有简单的方法来找出他们是谁。我无法联系他们并要求他们改变行为或做类似的事情。这是不透明的。

这不是对云的指责。云,如我所说,他们向开源投入了大量资金。他们是帮助启动Alpha Omega基金并了解所有其他事情的人。但关键是,即使在与他们的对话中,也很难在业务和成本方面达成一致。这最终是这里的问题,所有这些基金会,以及他们支持开源基础设施的程度,依赖于一组恩人,即签署支持事业的成员。

但成员们加入时并没有想到,哦,我想签署,所以我年度会费的一大块用于支付另一家财富100强公司每月下载JAR一百万次。没有人对此感到兴奋,但这就是正在发生的事情,因为这些基金会依赖会员费支付运营成本。另一方面,所有消费者都可以无限制地消费这些东西。

因此,这有点,无论是像Sonatype这样为Central支付费用的单个公司,还是像Eclipse的成员为OpenVSX东西支付费用,或者Linux Foundation的成员为所有分发支付费用,当消费与成本不一致时,最终会产生大量浪费。

因此,我们正在探索思考这一问题的方法。节流是其中的一部分,但可能有模型,如果组织超过某个预期阈值,他们必须支付。如果他们分发专有软件,情况就是这样,我发现许多公司。我称之为无限制CDN用例。他们 clearly 将东西放入Central,这是专有的,他们这样做只是因为他们不必购买或支付CDN来分发他们的东西。没有人会争辩说这是公平的,但他们正在利用分发和网络效应等等,这很好,但如果他们支付一些,将有助于贡献。因此,这就是所有这一切的方向,我们需要在成本和消费之间做得更好,然后其中一些事情开始自行解决。

我们可以做出改变以缓解开源基础设施的压力[18:12]

Olimpiu Pop:我们都喜欢开源的好处,特别是开放的部分,但这也是关于责任的。如果您使用它,您应该为此做出贡献。如果您无法贡献金钱、时间或其他任何东西,很高兴看到您如何使用它。模式,您与存储库或软件包管理器交互的方式。这是一种方式。对于开发人员,只是使用软件包管理器的人,有什么建议,他们如何调整与此交互的方式,以使他们的生活更轻松,最终也使您的生活更轻松?

Brian Fox:是的,这是一个很好的问题。总的来说,不是个别开发人员是问题。我们希望他们能够访问这些东西。是大型组织没有使用存储库管理器,例如。因此,他们没有缓存他们使用的依赖项,而是他们10,000个CI作业中的每一个,或者在不久的将来,他们的代理开发工具正在衍生并重新下载相同的JAR,因为这是 quote unquote 免费的,这就是我要说的重点。

因此,如果您负责这些组织的基础设施,您应该仔细查看您如何使用这些开源工具。仅仅因为它们对您是免费的,并不意味着它们对世界是免费的。我将其等同于燃烧碳。这就是为什么上限税在这里是一个概念上有价值的东西,因为如果对您来说无限制排放碳实际上是免费的,而全人类支付成本。

这就是我们正在谈论的。一旦您开始对其定价,那么人们就开始思考,嗯,那些效率事情对我有意义。因此,如果对您来说没有任何惩罚,只是因为您在云上的入口成本是免费的,就简单地将相同的组件下载到您的云中,那么您为什么会做任何不同的事情呢?这就是部分原因,成本是有些看不见的。因此,这就是我们正在谈论的。因此,如果您负责基础设施,思考您的组织如何使用它,并思考更有效地使用它并为其做出贡献。当这些基金会开始改变他们的模型时,这可能不是一个选项,但成为其拥护者将是有帮助的。如果您正在开发使用这些服务的工具,请仔细思考您如何做。

我震惊地发现,许多这些 giant 公司,它们 hammering Central,正在这样做;它们甚至有存储库管理器,如Nexus,无法有效使用它,因为他们使用的构建工具中的决定,这使得他们很难将流量发送到存储库管理器。因此,他们是意外地这样做。这再次是因为另一家公司创建了一个不必为Central支付的构建工具,因此他们没有考虑使其高效。我们发现了多个这样的实例。这就是为什么我试图提高意识。在大多数情况下,没有人恶意做这些事情,但如果它是看不见的,那么我们就在集体浪费我们可用的资源。

Olimpiu Pop:几年前,一群人正在编写全球碳年鉴,包括商业、营销和各种其他领域的人。然后他们试图为每个人提供关于碳管理重要性的基本理解。然后他们提供数字,如,好吧,太阳能电池板,在建造时需要碳,但然后您在几个月内达到零,您已经使用了它,等等,等等。

其中一个结论是关于舒适性。如您所说,这不是恶意的,但只是不考虑这些事情是舒适的。这让我的生活轻松,我依赖于通常重要的事情。鉴于如今软件基础设施的规模,我们意识到我们创造的碳足迹。我们是主要参与者之一,特别是随着所有AI的进步,它正在变得更糟。我们甚至不考虑它,我们正在做一些相当愚蠢的事情。一个例子,我曾在某个时候与Red Hat的Holly Cummins讨论过,可能现在是IBM。有些人只是使用YouTube上的4K来听音乐。他们正在编码,他们不看视频,但他们使用4K,然后所有背后的基础设施。

Brian Fox:这是一个完美的例子。是浪费。您为什么这样做?嗯,因为它很容易。

Olimpiu Pop:是的,很舒适。

Brian Fox:是的。我有一个例子,一个人 essentially 设置了他们的管道,以便每次提交时,它都会运行所有测试和所有持续集成过程。然后它在Maven Central上 staging 一个潜在的部署,只是为了运行验证,因为它曾经失败过一次。因此,他们设置了它,因此他们正在这样做,并导致我们必须验证签名并做各种工作,当他们知道他们将放弃它时。他们每次提交都在这样做。

因此,我联系并 like,老兄,您在做什么?我明白了。最后,我告诉他们原因。我说:“听着,如果您不关心浪费Sonatype的钱,至少为我们所有人做一个更好的碳燃烧者,因为您在浪费碳并这样做。这太荒谬了”。就是那些小事。当我说出来时,他们 like,我从未想过这一点。我只是因为它免费而想到它。然而,当您实际考虑谁在支付那个CI时间时,它可能是捐赠的时间,可能来自GitHub或GitHub Actions。有人在支付它,这不是免费的。

Olimpiu Pop:显然,但不要期望每个人都广泛思考并理解我们的痛苦或您在这种情况下痛苦。但唯一闪过我脑海的是,作为曾在多家公司负责基础设施的人,风险如何?如果发生某些事情,您意外拔掉Maven Central的插头怎么办?我的公司依赖于此,有人,我不知道,清洁女工只是踩到保持服务器、Maven Central电缆运行的电缆。会发生什么?我什么也不做,因为我依赖Maven Central。因此,这是一对一的风险缓解和风险管理,

Brian Fox:当然,这一直是信息,因为我们的第一个产品是Nexus,缓存代理。因此,它使那些事情更快、更可靠,并且您 less 依赖互联网。讽刺的是,在早期每个人都拥有那些,因为Maven Central不在高性能CDN上。它是美国一所大学捐赠的时间,因此它失败一段时间并不罕见。因此,每个人都必须有一个存储库管理器。

因此,以一种奇怪的方式,通过我们投资越来越昂贵的基础设施,我们反对人们使用存储库管理器。我们使其更可靠,然后他们不再觉得需要这样做。因此,这是一个经典的双赢,因为如果您开始做这些事情,您的构建将变得更快。您可能不关心您花钱下载那些东西,但它仍然需要时间,并且从您自己机架中的机器上的10千兆网络连接拉取总是比每次从互联网上拉取更快。这是无法回避的。

供应链攻击在过去几年中增加了700% [25:29]

Olimpiu Pop:这是肯定的。因此,让我迭代潜在风险,我 broadly 说开发人员,意思是消费的人,即组织和一切,但因为最终开发人员是敲响警钟的人,他们只是去参加会议,他们听事情,然后只是去找他们的经理,然后他们带着问题来,我如何说服我的经理做正确的事情?嗯,大多数时候,除了AI,因为生成式AI说服了所有经理说服所有开发人员他们使用生成式AI,这也是一个不同的模式。

然而,您提到了没有必要基础设施的风险。在某个时刻,基础设施被切断,您在寒冷中,您没有它。然后显然,全球变暖 pressing 我们所有人,我们每天都能看到它。另一个要考虑的因素是风险。我特别查看了您在過去兩年中整理的供应链报告的状态,并 reported on it。有趣的是,供应链攻击正在增加,我不知道,它是三倍,四倍,几乎一切都是报告最初几年发生的事情,可能在另一部分是五倍多。我不记得数字了,但规模是荒谬的。

Brian Fox:连续多年增长了700%。是的。

Olimpiu Pop:是的。如果我在组织内部缓存,我会处于一个更好的位置,因为我能确保我处于一个更安全的位置,我正在使用什么,我不会暴露于对所有人开放的东西,这样说对吗?

Brian Fox:是的,我谈论这个已经很久了。您可以看到,我甚至不再谈论它了。这是旧闻,但对人们再次听到它有用。您谈论的是故意恶意开源的兴起,对吧?我们至少从2017年起就一直在谈论、跟踪并提供解决方案。我不知道最新数字。大约是900,000次恶意攻击,并且每周增加数千次。是的,部分问题是这么多这些直接依赖于从存储库中获取或获取项目,这意味着如果攻击者可以将某些东西放入存储库,他们 instantly 获得对 millions 项目的访问权限,包括NPM和其他工具。他们更喜欢最新的。因此,这无关紧要。我不必将其放入其中并说服人们升级。

我只是将其放入其中,一个工具 instantly 获取它。完全在线依赖这些事情的实时设置您的情况,您的开发人员可能在公共存储库上的几秒钟内下载恶意组件。像Nexus这样的工具具有您可以为您开发人员实施的能力,对吧?因为我们有信息。我们 analyze 这些事情 as soon as 它们命中公共存储库,不仅仅是Maven Central,所有,因为我们的客户需要所有这些。我们可以在它们命中存储库的几分钟内告诉某些东西是可疑的,然后我们可以阻止开发人员获取它。但如果您没有这些基础设施,您就没有任何这些防火墙,如果可以的话,可以阻止这些东西进入。

我开始这个对话 focused on 只是停止资源。但您是对的,有这些其他,更传统的角度,它将使您更安全。它将使您更快。因此,就像,您为什么不这样做?部分答案是,他们使用的一些工具决定不优先考虑 that。像Gradle这样的工具使得很难使用存储库管理器,例如。这就是我发现的。我不知道。我是Maven guy,不是Gradle guy。但这就是我在与一些这些公司合作试图遏制他们的行为时学到的,然后他们回来说,是的,我们不能。因此,我深入挖掘并发现了一些。

例如,我们发现React Native正在为本地移动电话和类似应用程序编译JavaScript。我们发现会发生的是,他们运行一个NPM构建,那个东西会 fork off 数千个Gradle构建。这些Gradle构建中的每一个都在一遍又一遍地获取相同的组件。更糟糕的是,因为Gradle文件是生成的,他们无法在其中插入说去我的存储库管理器的行。

我发现一个大型公司的实例,有60名开发人员,但不是他们的CI系统。他们的CI系统来自不同的CI空间,只是字面上他们办公室的开发人员机器;他们正在创建比许多云更多的流量到Maven Central,不是三大云,而是像电缆调制解调器提供商这样的云,这 thinking about 是震惊的,但当您实际理解发生了什么时并不难。一个构建递归地 forking 数万个其他构建,这些构建中的每一个都在一遍又一遍地下载相同的东西。

幸运的是,当我联系React团队时,他们使得可以做出更改,告诉React staff 当您生成Gradle文件时,覆盖URL以使用我的存储库管理器。现在的问题是说服人们翻转那些开关,但至少他们已经制作了那些开关。但这些都是那些隐藏的事情,这些没有人想到的决定,现在 baked into 工具中,只是使这 so much worse。因此,这些是我们发现的一些 specifics,我确定我会找到更多。

大多数软件包管理器在基础设施问题上合作[30:48]

Olimpiu Pop:是的,祝您好运。因此,我在考虑我知道的所有有问题的生态系统。我知道NPM是受恶意开源影响最严重的之一。PyPy是另一个。您是独自在这场战斗中,还是 common front?我认为NPM有很大的吸引力。JavaScript增长很多。Python这些天迅速增长。Rust的Cargo, again,随着其在内核中的采用获得了 significant traction,并且无疑是CNCF生态系统中最闪亮的工具。您在一起工作吗?或者您仍然像黑暗中的甘道夫一样独自一人,然后试图将人们聚集在一起?或者我应该把这个问题留到以后?

Brian Fox:大多数软件包管理器最近聚集在一起,我们讨论了可持续性问题。每个人都在经历同样的问题。每个人都不确定如何与他们的社区处理它。因此,我们正在努力制定联合声明,以在全球范围内提高这个问题的可见性。因此,我们正在合作。在open SSF内有工作组,大多数,如果不是所有,软件包注册表都在努力处理诸如如何使供应链更安全的清单,谁实施了MFA和这些类型的事情,当然。

他们面临的挑战之一与这些内生决定有关。在Maven中,有命名空间的概念,group ID,来自Java的Byron,您公司名称的反向DNS。这为我们管理Central提供了一个方便的地方,以确保我们验证您控制您试图发布到的命名空间。您要么需要拥有自己的域,要么使用您所属基金会或GitHub组织的项目域名,但我们需要您提供证明。

这从桌上移除了一整套这些恶意攻击,因为假装是org Apache Struts比如果您只是试图假装是Struts要困难得多。并且它使得某人将您误认为这些其他生态系统中这些事情的官方提供者的可能性降低。他们没有命名空间的概念,但他们熟悉NPM添加的作用域,这是在事后引入的并且是可选的。并且发布到存储库中的大多数东西没有。因此,现在您移除了一个也必须被伪造的元数据。您移除了识别中的一个因素,如果可以的话。

然后没有名称的验证,因为没有命名空间可以绑定。因此,您可以轻松地 typo-squat 流行项目,然后您将其与我之前提到的结合,Maven actively 劝阻您说,我想要最新的jar。您需要放入版本号。因此,仅仅因为存储库中出现新版本并不意味着您的构建正在获取它。您必须更新并获取它。因此,我们 preferred 稳定性 over 自动更新,公平地说,长期以来这有其自身成本。我在谈论人们仍在运行旧、易受攻击的Log4J版本的时间有多长,对吧?因此,该决定有 trade-offs,但另一方面是生态系统,它将获取最新的,除非您告诉它不要。那是攻击者的 ready 受众。

因此,那些因素,假装是您不是的人的容易性,结合即将在您能将其放出的那一刻获取这些东西的受众。如果您是攻击者,为什么不从那里开始?因此,这就是为什么我们看到它非常不成比例。这些故意恶意组件出现在那些生态系统中。这不是因为他们不试图使其安全。那些工具的早期设计中做出的决定没有提供他们真正需要的杠杆,以做像我们能够用Maven和Maven Central做的事情。

Olimpiu Pop:我在听您说话时想的是open SSF记分卡。我发现那非常非常好。还有那些只是检查您的存储库的工具,它只是带着分数和建议而来。我知道在某个时刻,我与一个开源库的维护者交谈过,在演示之后,他说:“好吧,我学到了一些新东西”。好吧,我很高兴我能推广 that。还有一些可能帮助人们的东西,或者在持续部署的道路上。还有这个 minimal continuesdeployment.org,一个关于我们应该如何做得更好的宣言。在该空间发送一些东西会有所帮助。

Brian Fox:是的。朝着持续一切的推动加剧了我一直在谈论的大多数问题。因此,这是一个我们将事情推向极端的案例,就像我谈论的发布者的例子,staging 一直到 central,让人们意识到那些肯定会有所帮助。我一直在试图阐明的另一部分,因为我大约一年前了解到这一点,甚至让我有点惊讶,是这些开源项目中的一些花费约60,000美元的机器时间 just 做一个单一版本。所有这些都是因为所有集成测试和所有这些东西,当您谈论大型分布式数据库、分布式文件系统、大规模测试时,这不便宜。这些是这些开源项目中的一些正在看的。就像,哇,我们已经从一个非常不同的地方移动,比当我开始时。

当我开始时,我捐赠我的时间。我已经有一台计算机、互联网连接和电力,我只需要时间来处理代码。快进到今天,如果您从您的个人机器发布,这 more or less frowned upon,因为谁能信任您的机器没有被入侵?我们喜欢在可重复、可审计、可跟踪的供应链中看到事情。猜猜看?那些都在云中运行, mostly 在捐赠的机器时间上。这是 crept up on us 并变得 invisible 的部分。

但世界对所有这些东西的期望都是有成本的。因此,我们现在处于一种情况,是的,开发人员仍在贡献他们的时间,当然有关于他们应该如何得到补偿的对话。但我阐明的 light 是 everything 在 that 之下 as well, just not free。因此,越多的人思考 that,他们 will,至少他们中的一些, hopefully 将不可避免地开始改变他们的行为一点点,以成为更好的整体公民,认识到 that。

优化构建:存储库管理器缓存的力量[37:28]

Olimpiu Pop:那 definitely 有用。有两种方法可以赚更多钱。其中之一是获得更多,另一种是在您如何花钱上更加谨慎。如果您选择两种方式, definitely 是最好的。您提到的方式, definitely 是期望的方式,巨大参与者有更好的治理和更好的方式在他们这边实施东西。我们知道这不是您从今天到明天会做的事情。

现在我将再次回到这个大景观的 pawns,开发人员。将帮助他们使他们的生活更轻松,但也使您的生活更轻松的建议。他们如何开始查看构建是这里的主要主题,以及他们交互的方式。他们应该知道什么?三件事,五件事,您认为对他们做有用的事情,以 wrap up 一个想法。

Brian Fox:确保您有一个存储库管理器,以便它可以缓存所有这些 things。这是真的。即使您在云中运行,光速仍然是 thing。此外,现在双击 that 并确保您的构建 actually 使用它。这是我发现的事情。人们以为他们是,但结果他们不是。因此,仔细查看日志,确保它实际上是从您的Nexus或您拥有的任何东西下载。那将走很长的路。顺便说一句,它将使您所有的东西更快,它甚至可能也节省您的钱,因为现在您支付更少的计算时间给所有那些构建作业运行。您可能不支付带宽,但您支付CPU时间,而它坐在那里,twiddling its thumbs 等待下载。

这些是常识性的事情,开始有所作为。然后那 also,如我之前所说,为您提供了那个杠杆点,开始为恶意开源和类似事情实施保护。并翻转它,如果您是开源开发人员或您正在开发利用这些事情的工具,只是仔细思考您如何利用它们—缓存事情。不要仅仅因为您可以就每次都重新运行东西。回到我们过去不得不编写代码的方式,当我们有有限内存、有限CPU无法无限扩展时。我们不得不对我们正在做的事情更加明智。带回 that,我认为,可以在这里帮助很多。

Olimpiu Pop:让我们在云空间中采用嵌入式开发心态, promoting 更大的节俭。云提供商已经开始削减他们的数百项服务。所以是我们查看我们拥有什么的时候了。因此,在我们移动之前,增加基础设施,因为如您所说,这些天只是进入控制台非常容易。您只是增加它。突然之间,您加倍了运行数字 of CPU,s 并且比过去容易得多。在您这样做之前-

Brian Fox:我们正处于AI爆炸的边缘,因为其中一些事情是由您可以向问题添加多少人类自我限制的,对吧?想象一下,您可以 quadruple 您的开发力量或更多,就像您可以调高或调低您的云一样。如果您可以调高或调低您的AI代理,这些小的低效率现在变得更加放大。因此,我们正处于看到其中一些的边缘。我确定知道一些软件包管理器正在努力应对AI引起的负载,正是因为这个确切原因。

Olimpiu Pop:是的。因此,我保留我的陈述,它说AI是自行车。如果您只是下山并且不戴头盔,如果您跌倒,您会有大问题。如果您以正确的方式做,它可能帮助您。在我们开始混乱地使用AI之前,确保我们使用我们自己的基础设施,并且我们实际上知道我们在那里有什么。好的。Brian,在我们结束之前,我们还想触及什么其他事情吗?

Brian Fox:我认为我们已经把这个打死了。希望它对听众有用,他们学到了一两件事。

Olimpiu Pop:太好了。我将触及您提到的博客文章,以提高每个人的意识。祝您在战斗、我们的斗争中好运。感谢您成为开源社区的 champion,祝您有美好的一天。谢谢。

Brian Fox:谢谢。

提到:

  • 开源软件:公司认为理所当然的9万亿美元资源
  • 网络弹性法案
  • 碳年鉴
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计