WordPress 5.2,利用数字签证解决供应链攻击

为了应对日趋突出的供应链安全攻击,WordPress最新版本 5.2日前发布,利用离线数字签名来基本更新架构增加一层安全防护。本文虫虫带领大家一起了解WordPress新版本带来新的安全机制。

WordPress 5.2,利用数字签证解决供应链攻击

概述

6年前的2013年WordPress 发布了其版本3.7,为了该版本中入了自动更新机制,确保可以自动给有WordPress站点自动更新重要的安全补丁,以防止安全漏洞被利用和大规模扩散。这对安全来说是个很好的功能,也是业界通认的可取方法。然而6年后的今天一切都变了,攻防策略发生了巨大变化,针对软件供应链的攻击逐渐成了主流,而且有进一步扩大的趋势,主要语言的热门库,热门软件及其插件都成了这种攻击的潜在目标。试想如果WordPress的更新服务器自动更新服务器被人黑掉,然后利用自动更新软件打包发出一个木马或者勒索脚本,那么全球都会哀嚎。实际上这也不仅仅是个设想,WordFence的安全研究人员在2016年就发现了现实中针对WordPress基础设施攻击媒介,并及时阻止攻击。

WordPress 5.2,利用数字签证解决供应链攻击

此次攻击的原理如下图:

WordPress 5.2,利用数字签证解决供应链攻击

针对这种安全态势,解决由于WordPress自动升级架构可能给全网30%的网站带来的潜在威胁,WordPress新版本引入了离线数字签名机制来缓解基础更新架构中潜在的安全攻击。

新版本数字签名校验

当WordPress站点安装自动更新时,新版本软件会首先检查是否存在x-content-signature标头。更新服务器未提供,则会查询filenamehere.sig文件。

更新补丁不论以何种方式交付,都会使用签名都会Ed25519算法的SHA384计算文件哈希。数字签名通过base64编码的,用于安全传输。数字签名私钥由WordPress官方核心开发团队管理。 WordPress 5.2初始版本的验证密钥是fRPyrxb/MvVLbdsYi+OOEv4xc+Eqpsj+kkAS6gNOkI0= 有效期为3年到2021年4月一日过期。

WordPress客户端更新程序会对提供的更新包进行数字签名校验。校验示例代码如下:

WordPress 5.2,利用数字签证解决供应链攻击

WordPress 5.2程序中内一个校验函数verify_file_signature(),可直接使用。

对于第一个版本,如果签名无效,WordPress将(默认情况下)就设置软失败。这种不安全默认值的原因是为了确保在更新代码中存在错误时不会阻止更新(比如目前已知的PHP 7.2.0-7.2.2的算法bug,不支持ext/sodium)。

对于早于PHP 7.2的环境,则Ed25519签名验证算法有sodium_compat提供,这是我们开发的纯PHP libsodium polyfill。

在WordPress 5.2之前,如果有人想攻击感染互联网上的每个WordPress网站(大约有33.8%的网站),只需要想法APT官方的更新服务器或者用DNS劫持欺骗等方法欺骗自动更新功能下载和安装任意代码(打包攻击木马、勒索脚本的等等),为所如为,干各种勾当(例如构建世界上最大的DDoS僵尸网络)。

有了数字签名校验后,你必须要用同样的方式完成欺骗劫持,就算真正黑掉了官方的更新服务器,也没用,你的有数字签名私钥来签发你自己的恶意安装包。

新密码套件Libsodium API和WP插件数据的升级

除了用于WordPress核心的安全性增强之外,新版本中包含的sodium_compat密码插件,可以让开发人员使用其加密库,比如mcrypt(在PHP 7.1中弃用,在PHP 7.2中删除)和libsodium(在PHP 7.2,由sodium_compat补充)。Libsodium支持很多功能,最主要是可以让插件开发人员可以无缝安全地将数据迁移到新的API:

运行时解密的所有数据

如果可以加密/解密任意记录,最直接的方法是使用mcrypt_decrypt()来获取明文,然后使用sodium_crypto_secretbox()一次性重新加密你的代码。然后删除用于处理mcrypt加密消息的运行时代码。

在运行时解密部分数据

如果不能一次解密所有记录,最好的方法是使用sodium_crypto_secretbox()重新加密所有内容,然后再应用mcrypt风格的解密例程。

未来目标:所有开发人员的代码签名

目前版本的数字签名只支持WP核心程序的更新。针对WP的主题和插件还不支持数字签名。未来官方的想法是提供插件供应商签署自己的版本并建立一个集中系统Gossamer保存这些数字签名(和相关元数据),这样保证整个程序和插件等整个供应链都能保证安全可靠。

Gossamer系统建设是WP重要目标,可能会在WP5.3或5.4时候推出。


分享到:


相關文章: