开源软件无处不在——几乎用于所有现代应用程序——但它面临的安全挑战越来越严重。依靠志愿者的支撑,漏洞现在使其成为恶意黑客和国家行为者网络攻击的主要目标。xz Utils 后门攻击的惊险事件凸显了开源安全性是多么脆弱。由于开源工具对私营公司和政府都至关重要,因此需要私营部门和公共部门加大投资。
互联网上许多众包代码很容易受到恶意行为者和民族国家的渗透。《经济学人》 报道称,开源软件是“互联网的核心”,主要由少数志愿者维护,这对企业和政府来说都是一个重大的安全风险。开源软件因其成本低廉而广泛部署在数字基础设施中。该基础设施嵌入整个数字世界,正受到各种敌对民族国家的攻击。
GitHub 开发者关系副总裁 Martin Woodward 此前曾表示,“开源软件是全球 99% 软件的基础。”约有 97% 的应用程序使用开源代码,90% 的公司以某种方式纳入或使用开源代码。
xz Utils 事件是一个令人不寒而栗的例子,说明了其中的利害关系。2024 年 3 月 29 日,微软软件工程师 Andres Freund“无意中发现了一个隐藏在 Linux 操作系统软件中的后门”。这个后门来自 xz Utils 的发布 tarball,它被篡改了,允许未经授权访问使用受影响版本的系统。被泄露的源代码是 Linux 系统中的xz Utils 开源数据压缩实用程序。 《纽约时报》写道,这位工程师阻止了一次“可能具有历史意义的网络攻击”。
由于 xz Utils 是开源软件,因此其代码是公开的,任何人都可以查看所做的更改。然而,这种开放性却被以一种特别狡猾的方式利用:攻击仅针对发布 tarball(软件发布版本的压缩存档文件)中的代码,而存储库的主分支则未受影响。这种巧妙的策略使入侵更难被发现。如果没有开发人员的警惕性和运气,这次攻击可能会造成巨大破坏,破坏全球无数系统。
一位名叫 Jia Tan 的开发人员开始为该项目贡献有用的代码,并慢慢赢得了信任。然后随着时间的推移,坏人偷偷带入了恶意软件。xz Utils 后门攻击最令人惊讶的元素之一是恶意代码是如何通过看似无害的 git 提交引入的。恶意软件没有直接更改 xz Utils 源代码,而是隐藏在二进制测试文件中的 x86_64 目标代码中,伪装成 XZ 解压中的边缘情况的单元测试。俄罗斯对外情报局 SVR 被怀疑是此次袭击的幕后黑手,而 SolarWinds 攻击的幕后黑手正是同一个情报机构。
这起事件并非孤例。开源项目对国家行为者来说极具吸引力,因为代码是公开的。虽然这种开放性有利于协作,但也让攻击者可以轻松研究代码及其更新。开源在全球基础设施中发挥着至关重要的作用;Lineaje 在 2023 年的一份报告显示,当今 70% 的软件都是开源的,82% 的开源软件组件“本身就存在风险”。不幸的是,它的普遍使用使其漏洞更加危险。
Lineaje 等人的报告强调了这些风险:82% 的开源组件由于维护不善、代码过时或安全漏洞而被认为存在风险。这些项目中的许多都是由资源有限的小团队或个人志愿者运营的,因此很容易受到攻击。
大型语言模型 (LLM) 的兴起加剧了这些风险。虽然 LLM 可以帮助开发人员完成调试或自动化工作流程等任务,但它们也可能被滥用。攻击者可以使用 LLM 快速分析开源代码中的漏洞,从而更容易找到可利用的缺陷。这些 AI 工具还可以制作令人信服的网络钓鱼消息或对开源项目的虚假贡献,使发现不良行为者变得更加困难。LLM 模仿人类交互的能力增加了恶意代码通过网络钓鱼和其他可以自动化的攻击媒介悄悄溜走的可能性。
尽管存在风险,LLM 也提供了改善开源安全性的机会。但需要权衡利弊,因为成本可能过高,因为公司不太可能在没有预算的情况下投资在开源代码上运行基于 LLM 的分析器。例如,人工智能系统可以标记代码库中的可疑变化或检测贡献者行为中的异常模式。 开源 LLM还“受益于快速增长的开发者社区基础,他们不断突破界限,每天扩大规模以解决复杂的网络安全挑战。”
然而,同样的技术可以增强防御,但也可能被武器化。如果没有适当的安全控制,在服务器或云环境中部署开源 LLM 会带来未经授权访问模型或其处理的敏感数据的风险。恶意行为者可以篡改训练数据或模型本身,注入有害代码或偏见,导致误导性或恶意内容。此外,保护不当的LLM 可能会泄露敏感信息,无论是通过生成的文本还是针对模型架构的攻击。
过去使用 xz Utils 等工具在一个存储库中完成的工作,很快将在未来几年内由一个人利用先进的 GenAI 技术扩展到数百个存储库中 — 而且这种转变可能已经开始。准入门槛已大幅下降,从需要国家级资源或极端奉献转变为现在可以批量生产。未来几年,存储库的大多数小更新或小更新都完全有可能由 GenAI 生成。
虽然有意义的、高质量的开发贡献仍然是一项不同的挑战,但维护者的角色也可能发生变化。维护者不再是积极贡献代码的熟练开发人员,而是越来越擅长管理繁重工作并表现出乐于助人的形象的人,而将更复杂或创新的任务留给一小群专注的开发人员。
传统的网络钓鱼攻击侧重于获取公司的内部目录,并将关键个人或他们信任的人作为攻击目标。借助 NPM 广泛的依赖关系生态系统(该生态系统是公开可访问的),攻击者可以从不同的角度进行攻击。他们可以识别给定软件包的少数维护者,评估问题积压情况,并利用这些信息部署看似有用的机器人,提供修复或提供帮助。这为获得信任并将自己嵌入开发过程创造了一条途径。
最好的假身份都是利用现实世界的数据制作的,这些数据会随着时间的推移通过社交媒体帖子、学术记录等不断丰富。一份令人信服的假身份证包括详细的背景故事,包括照片、人脉和在线状态。GenAI 简化了这些身份的创建,同时还通过模拟 GitHub 等平台上的编码活动来增强它们。
许多早期对开源项目的贡献都很小,而且很容易验证,比如修复注释中的拼写错误或更新依赖项。这些活动对于使用 LLM 的攻击者来说是理想的选择,因为它们可以大规模自动化。这使得攻击者可以创建数百个虚假身份,每个身份都有 LinkedIn 个人资料、社交媒体帐户和 GitHub 历史记录,其中包含数千个微小但合法的贡献。
这些身份可以参与多个项目,可能会重叠,并建立有用的记录。随着时间的推移,恶意行为者可能会使用其中一个身份提交更多关键贡献。甚至这些贡献最初可能看起来有效且有益。在民族国家或黑客集体等协调一致的努力中,一个身份可以增强另一个身份的可信度,强化叙述或获得影响力。
我们已经看到了类似 xz utils 事件的例子,其中多个身份被用来操纵信任。当攻击暴露时,这些身份就会被丢弃。在手动操作中,丢失此类资产的代价是巨大的。然而,有了 GenAI,生成新身份的成本极低,大大降低了攻击者的风险。
近期发生的一次软件供应链攻击针对的是流行的 @solana/web3.js npm 库,该库广泛用于构建基于 Solana 的应用程序,该攻击利用恶意代码入侵 1.95.6 和 1.95.7 版本,窃取用户的私钥并盗取加密货币钱包。此次攻击利用了钓鱼活动,允许威胁行为者获得发布访问权限并注入后门功能,通过看似合法的 Cloudflare 标头窃取私钥。受影响的版本已被删除,并敦促用户更新至 1.95.8 版本并考虑轮换密钥以降低风险。
由于对开源库的依赖性不断增加,以及网络钓鱼和社会工程等复杂攻击方法的兴起,预计 2025 年软件供应链攻击将会增加。根据Synopsys的一项研究,开源软件中的漏洞正在稳步增加。此外,开源工具在企业系统中的集成度不断提高,为攻击者带来了更高的投资回报,使得此类攻击对网络犯罪分子和国家支持的行为者都更具吸引力。
xz Utils 事件与 SolarWinds 攻击事件一样,起到了警示作用,凸显了公共和私营部门需要加大投资和合作,以保护开源软件并维护其作为数字公共产品的价值。受益于开源工具的公司需要加强并支持这些项目。这种支持可以包括资金、提供开发人员时间或提供安全专业知识。开源项目还需要更好的治理,例如更严格的代码审查流程和共同承担更新责任。更快地修补漏洞是另一个优先事项,因为延迟会使系统在更长的时间内暴露于攻击。
国家行为者仍然是最大的威胁之一。开源软件为他们提供了低成本、高回报的间谍、破坏和破坏目标。SolarWinds 攻击虽然涉及专有软件,但却是这些供应链漏洞破坏力的典型例子。
攻击者可能会继续更频繁地针对个人维护者,使用先进的社会工程策略来破坏项目。人工智能工具将继续增强攻击者和防御者的能力,从而引发一场争夺新威胁的竞赛。政府也可能会更多地参与其中,帮助促进公私合作伙伴关系,以改善整个生态系统的安全性。与此同时,可能会出台更严格的法规,迫使公司对其使用的开源组件承担更多责任。
说到 SolarWinds 事件,它是否已经从记忆中淡去取决于视角。虽然公众的注意力可能已经转移,但政府官员和网络安全专家仍然专注于吸取教训。软件供应链安全领域正在进行的许多工作,例如 OpenSSF 的举措(如 SLSA 和 GUAC),都是对更强大防御需求的直接响应,由CISA等机构推动,但进展缓慢,并非所有组织都采用了这些保护措施。联邦政府本身是开源软件的最大消费者之一,并将继续增加其在该领域的参与度。
尽管这些努力在幕后继续进行,但该事件的影响可能尚未完全引起公众共鸣,尤其是独立或业余软件开发人员,他们可能尚未完全理解更广泛的影响。
最终,正如专家 Michal Zalewski 所指出的,“最重要的是,我们有数不清的数万亿美元被投入到业余爱好者开发的代码中。”这强调了其他后门可能仍然潜伏在构成互联网骨干的关键软件中,未被发现的可能性。
虽然识别漏洞令人担忧,但更大的问题在于开源生态系统中信任的侵蚀。开源依靠那些真诚工作的匿名开发者的贡献而蓬勃发展,他们通常没有直接的互动或身份验证。GenAI 破坏了这一基础,让许多匿名贡献者完全可以捏造。
网络钓鱼攻击已经很危险了,因为它们利用的是信任,而不是突破技术防御——它们诱骗个人在受信任的环境中执行恶意代码。GenAI 使攻击者能够以合法贡献为幌子将恶意代码嵌入受信任的开源软件包中,从而加剧了这种风险。
这可能会引发一场竞赛,一方是利用 GenAI 渗透项目的恶意行为者,另一方是利用 GenAI 检测和应对漏洞的防御工具,防止漏洞被利用。那么问题就变成了,在一个贡献者与人工智能驱动的冒名顶替者越来越难以区分的世界里,对开源的信任是否还能存在。
随着我们进入 2025 年,开源软件正处于一个关键时刻。威胁变得越来越复杂,由国家行为者推动,滥用 LLM 等人工智能工具,并专注于供应链干扰以造成最大损害。然而,通过采取积极措施、加大投资和共同承担责任,我们有可能创造一个开源继续蓬勃发展的未来,成为创新和进步的力量,而不是等待被利用的漏洞。