Matt Mullenweg 回应安全咆哮:WordPress 更新的数字签名很重要,但不是优先事项
已发表: 2017-02-16Paragon Initiative Enterprises 的首席开发官 Scott Arciszewski 以其密码学工程工作而广为人知,他在 Medium 上发表了一篇文章,批评 WordPress 开源软件项目的联合创始人 Matt Mullenweg 对安全性不够关心。 Arciszewski 已经撤回了这篇文章,但你可以通过 Wayback Machine 阅读它。
Arciszewski 正在开发一个名为 libsodium 的项目,这是 PHP 7.2 的核心扩展,它允许加密、解密、签名、密码散列等。 它的目标是使开发人员能够构建更高级别的加密工具。
WordPress 的自动更新系统是通过 api.wordpress.org 处理的。 由于更新没有数字签名,如果 api.wordpress.org 遭到入侵,攻击者可能会向数千或数百万个站点发送恶意更新。 去年年底,在 Wordfence 发布了可能危及更新服务器的复杂安全漏洞的详细信息后,这种情况成为人们最关心的问题。
Arciszewski 建议将离线代码签名和椭圆曲线密码学作为解决方案,“可以为文件生成有效签名的密钥不存储在服务器上(只有文件本身和有效签名),所以即使服务器被黑客入侵,攻击者不能只是将木马恶意软件添加到文件中,”他说。
OpenSSL 是 PHP 的扩展,通常用作公钥加密,但它只支持 Arciszewski 认为不足的 RSA。 由于 WordPress 是用 PHP 编写的并且支持 5.2-7+ 版本,Arciszewski 需要创建一个兼容的解决方案。 这启发他创建了 sodium_compat,将 Ed25519 签名验证添加到 WordPress 的自动更新程序中。
Arciszewski 向 WordPress 提交了许多补丁,但 WordPress 核心开发人员 Dion Hulse 告诉他,在通过第三方的安全审核之前,sodium_compat 库无法合并到核心中。 审计可能会花费大量资金,因此 Arciszewski 的计划是看看 Automattic 是否可以承担部分成本或众包资金。 然而,在 Mullenweg 通知 Hulse 停止开发该功能后,他的项目被搁置,因为它与编辑器、定制器和 REST API 的三个核心重点领域无关。
Arciszewski 将这一决定描述为不负责任,并且每个用户都有理由感到震惊,“WordPress 团队已经表明,他们没有足够的责任来管理他们对互联网的令人印象深刻的所有权(除了一些无权纠正组织路线的人) ),“ 他说。 “这种疏忽行为将使网络的其余部分受到伤害。”
更新签名很重要,但不是优先事项
Mullenweg 用他自己的一篇回应了 Medium.com 上的帖子,并重申了 WordPress 开发团队对安全性的承诺。
“每个参与其中的人都非常认真地对待自己的责任,WordPress 的发展意味着许多有思想、勤奋的人已经参与进来,从各个角度全面考虑 WP 网站的安全性,”他说。
Mullenweg 还澄清了通过对 WordPress 更新实施数字签名可以阻止哪些攻击。
“它可以阻止中间人攻击,即有人在您的博客和 WordPress.org 之间修改网络上的更新文件,或者它可以阻止提供更新的 .org 部分受到损害但签名的情况部分不是,有人决定发送更新,即使他们知道他们会被拒绝,”他说。

该团队不知道有任何 WordPress 网站以这种方式受到攻击。 尽管存在这种可能性,但损害的程度可能会受到限制。 更新服务器受到全天候监控,并且由于许多大型网络托管公司会自动扫描其客户的网站以查找恶意软件,因此很可能会很快发现恶意更新。
Mullenweg 描述了如果更新服务器被入侵会发生什么。
“我们会很快关闭它,通知全世界有问题,解决问题,重新打开它,并尽可能通知特定的站点或主机,”他说。 尽管 WordPress 为 Alexa 跟踪的前 1000 万个站点中的 27.5% 提供支持,但站点数量不太可能受到损害。
他接着说,有更简单的方法可以破坏 WordPress 网站,并根据影响列出了 WordPress 安全性的最大问题。
- 网站不更新核心。
- 网站不更新插件。
- 网站不更新主题。
- 弱密码,没有暴力保护或双重身份验证。
- 主机(专业或临时)不扫描和修复站点。
- 实践中未见的假设性问题,分散了上述现有优先事项。
Mullenweg 证实,在 Arciszewski 发表他的帖子的前一天,他主动提出为 sodium_compat 的审计捐款。 即使库通过了审核,代码也无法立即添加到核心中,“您还需要在服务器端做一些重要的工作,以将签名与更新服务器隔离开来,所以这首先是值得的,“ 他说。
如果代码被添加到核心,只有更新到具有加密库和更新检查的版本的站点才能利用它。 WordPress.org 仍然需要将更新发送到没有更新检查的旧版本。 这些网站仍然容易受到恶意更新的影响。
Mullenweg 说,数字签名和更新签名最终会出现在 WordPress 中,但这不是优先考虑的问题,因为它前面还有其他安全问题,“我们将这些问题放在优先级之上, “ 他说。
“一个好的方法是首先构建服务器端,因为正确地做到这一点,比如使用 HSM,是困难而重要的部分; 然后签署包裹; 然后在插件中测试验证,因为我们不想破坏自动更新; 然后最后合并到核心并设置客户端拒绝非签名更新。 在客户端,我们需要选择一个密码库,并对其进行审计。”
Mullenweg 结束了他的帖子,解释了为什么他在 Medium 而不是他的个人网站上发表了他的回复。 “似乎是这种咆哮最流行的地方。 我还想试试著名的 Medium 编辑器,”他说。
钠兼容性的下一步是什么
虽然 2017 年将他的库添加到 WordPress 的前景看起来不太好,但 Arciszewski 说还有很多其他 PHP 项目可以从中受益,“为了他们,我仍然强烈倾向于寻求独立的第三方——方密码学审计,并试图众筹成本,”他说。
