Linux 基金会的软件签名如何对抗供应链攻击

开源项目遭到破坏并用于传播恶意软件可能已成为过去。 Linux 基金会的软件签名计划希望成为软件发布的 Let's Encrypt。
问题
开源的广泛使用令人震惊。几乎所有正在进行的重要软件开发中都可以找到开源软件、工具和库。不幸的是,使开源具有吸引力的东西——您可以访问软件的源代码并且任何人都可以提交错误修复和新功能——提供了一个可以被威胁参与者利用的攻击媒介。
开源项目已被网络犯罪分子注入恶意代码,他们利用开源产品的流行作为其恶意软件的分发方法。通常,它会为威胁行为者提供进入受害者计算机的后门。它还可能运行击键记录器或从网络犯罪分子的服务器下载实际的恶意软件。
这种类型的攻击是供应链攻击的一种形式。在供应链攻击中,受害者不会直接受到损害。恶意负载被插入受害者供应商之一的某物中。当受害者获得受污染的物品时,恶意负载就会被触发,受害者就会受到威胁。供应链攻击最著名的例子是震网病毒对伊朗纳坦兹铀浓缩厂的攻击。
开源软件显然是网络犯罪分子用来进行此类攻击的平台。作为回应,Linux 基金会正在启动 sigstore。 sigstore 是一项与 Google、Red Hat 和普渡大学联合开发的免费服务,软件开发人员可以使用它对其软件版本进行数字签名。
sigstore 保护开源消费者免受依赖混淆攻击等攻击。这些攻击欺骗包管理器安装本地可用资源(例如库文件)的远程托管恶意版本。包管理器被告知正在安装的软件存在依赖关系,需要升级本地库文件。远程托管的受污染版本具有更高的版本号,可以满足伪造的依赖关系。 “升级”发生,系统受到损害。
sigstore 的工作原理
与所有签名和认证方案一样,签名或证书的价值与人们对颁发机构的信任程度有关。 sigstore 使用基于行业标准 X.509 方案的 OpenID Foundation 的 OpenID Connect 来定义和管理证书。 sigstore 使用 OpenID 身份验证协议将证书绑定到开发人员的身份。通常,这是他们的电子邮件地址或其他帐户标识符。
sigstore 客户端创建一个短期密钥对。它查询 sigstore 公钥基础设施 (PKI),后者检查有效的 OpenID Connect 验证并在一切正常时颁发证书。证书是使用将用于签署软件的密钥对值创建的。
证书和签名的审计跟踪作为不可变的公共日志进行维护。该日志可用于验证软件版本和证书。它提供文件签名的公开访问证明。后续签名将是唯一的,因为时间和日期也被记录下来。这为开源文件的起源和出处提供了一套保证,并允许基于签名的安全策略捕获无法验证和信任的文件。
如果恶意代码被注入到一个开源项目中,并且合并管理或代码和同行评审过程没有发现它,它可能会被编译成二进制文件。如果二进制文件随后进行了数字签名,则 sigstore 将不知道该嵌入式威胁并且理论上可以证明恶意版本。
在那种情况下,公共签名日志可能是调查攻击的一项资产,并且可以作为向其他人发出二进制文件受损的预警的一种方式。可以构建系统,将二进制证书与已知良好和已证明不良版本的数据库进行比较。
这可能与 Have I Been Pwned 网站的工作方式类似。您可以通过他们的网站手动搜索您的电子邮件。如果找到您的电子邮件,则表示它已包含在数据泄露中。您被告知哪个网站的哪个数据泄露暴露了您的个人详细信息。
不难想象系统会根据参考数据库检查版本号和签名真实性,参考数据库会发回关于已签名软件版本的通过/不通过决定。此外,每次在签名活动中使用他们的电子邮件地址或 OpenID Connect ID 时,开发人员都会收到通知。如果他们没有发起该事件,则需要进行调查。
让我们加密,但对于软件
在 2021 年 3 月的一篇博文中,谷歌将 sigstore 描述为类似于 Let's Encrypt,但用于软件发布。 Let's Encrypt 是一个免费开放的证书颁发机构,可为 HTTPS 网站生成 SSL/TLS 证书。它允许这些网站积极验证自己的身份,以便访问者可以确定该网站确实如其所说。一旦确定了网站的身份,访问者的浏览器就会使用证书中的公钥信息来加密他们的计算机与网站之间的通信。从 Let's Encrypt 获取证书的过程是自动化的。
谷歌博客继续说道:“就像 Let's Encrypt 为 HTTPS 提供免费证书和自动化工具一样,sigstore 提供免费证书和工具来自动化和验证源代码的签名。 Sigstore 还具有由透明日志支持的额外好处,这意味着所有证书和证明都是全局可见、可发现和可审计的。”
驯服狂野的西部
今天使用开源软件的方式在 10 年前是不可想象的。在更广泛的开发领域采用开源不仅仅是因为源代码的可访问性、代码质量以及错误修复和补丁的周转时间。
开源曾经被怀疑。但是组织现在得到开源。开源模式被认为更多地与营销和出版有关,而不是致力于 GNU 通用公共许可证 (GPL) 的许多变体。
主要是,这是一种让您的代码或产品在那里的方式。获取 GitHub 帐户,编写您的程序,并告诉人们它可用。如果它有任何好处,它就会成长,并希望滚雪球。想参与开源项目吗?简单的。将合并请求推送到他们的 Git 存储库,或提供帮助处理他们的文档。
开源以最积极的方式产生了颠覆性影响。但它也对所有人免费。开源生态系统一直迫切需要可以为软件供应链提供透明度、验证和审计的东西。
sigstore 展示了通过一个免费、简单且可扩展的系统来满足这一需求的所有潜力。