前 Go 技术负责人 Russ Cox 在 ACM 通讯上撰文警告称,我们需要不断改进软件供应链的防御措施,并强调“一些有前景且应该更广泛应用的方法”和“一些需要进一步努力的领域”。我们现在可以采取一些重要措施,例如以某种形式采用软件签名,确保定期扫描已知漏洞,并在发现关键的新漏洞时做好更新和重新部署软件的准备。更多的开发应该转向更安全的语言,以降低漏洞和攻击的可能性。我们还需要找到资助开源开发的方法,使其不易被仅仅通过免费帮助就接管。对 OpenSSL 和 XZ 开发进行相对较小的投资,本可以阻止 Heartbleed 漏洞和 XZ 攻击。以下是这篇 5,000 字文章中的一些亮点:让构建可重现。 “可复现构建项目旨在提高人们对可复现构建的普遍认识,并构建工具以帮助实现所有 Linux 软件的完全可复现。Go 项目最近已将 Go 本身设置为仅提供源代码即可完全复现……无论您是在 Linux、Windows 还是 Mac 上构建,无论构建主机是 X86 还是 ARM,针对给定目标的构建都会生成相同的发行版代码。强大的可复现性使其他人能够轻松验证下载的二进制文件是否与源代码匹配……” 预防漏洞。“最安全的软件依赖项是那些从一开始就未使用的依赖项:每个依赖项都会增加风险……预防漏洞的另一个好方法是使用更安全的编程语言,删除容易出错的语言功能或减少对它们的使用频率……” 验证软件。 (“加密签名使得在签名和验证之间恶意更改代码变得不可能。剩下的唯一问题是密钥分发……”)“Go 校验和数据库就是这种方法的真实示例,它保护了数百万 Go 开发者。该数据库保存了每个公共 Go 模块每个版本的 SHA256 校验和……”资助开源。[Cox 首先引用了 XKCD 漫画《依赖关系》,称其“对形势的评估令人不安……”]“XZ 攻击最清楚地表明了问题尚未得到解决。开源资金不足和任何技术细节都导致了这个问题。”文章还强调了快速查找和修复漏洞的重要性,认为必须提高软件攻击的难度和成本。“我们在最重要的应用程序中使用从互联网上陌生人那里下载的源代码;几乎没有人检查代码……我们都还有更多工作要做。”
在 Slashdot 上阅读更多内容。