一个已有 10 年历史的 Windows 漏洞仍在攻击中被利用,使可执行文件看起来像是经过合法签名的,而微软的修复在这些年之后仍然“选择加入”。更糟糕的是,升级到 Windows 11 后修复被删除。
周三晚上,有消息称 VoIP 通信公司3CX 遭到破坏,在大规模供应链攻击中分发其 Windows 桌面应用程序的木马化版本。
作为此供应链攻击的一部分,Windows 桌面应用程序使用的两个 DLL 已被恶意版本替换,这些恶意版本会向计算机下载其他恶意软件,例如信息窃取木马。
攻击中使用的恶意 DLL 之一通常是 Microsoft 签名的合法 DLL,名为 d3dcompiler_47.dll。然而,威胁行为者修改了 DLL 以在文件末尾包含加密的恶意负载。
正如昨天首次指出的 那样,即使文件已修改,Windows 仍将其显示为由?? Mi??crosoft 正确签名。
被视为具有有效签名的修改后的 DLL
对可执行文件(例如 DLL 或 EXE 文件)进行代码签名旨在向 Windows 用户保证该文件是真实的,并且未被修改以包含恶意代码。
当已签名的可执行文件被修改时,Windows 将显示一条消息,指出“对象的数字签名未验证”。但是,即使我们知道 d3dcompiler_47.dll DLL 已被修改,它在 Windows 中仍然显示为已签名。
在就此行为联系 ANALYGENCE 的高级漏洞分析师Will Dormann并分享 DLL 后,我们得知该 DLL 正在利用 CVE-2013-3900 漏洞,即“WinVerifyTrust 签名验证漏洞”。
Microsoft 于 2013 年 12 月 10 日首次披露了此漏洞,并解释说可以在签名的可执行文件中向 EXE 的验证码签名部分(WIN_CERTIFICATE 结构)添加内容而不会使签名无效。
例如,Dormann 在推文中解释说 ,Google Chrome 安装程序将数据添加到 Authenticode 结构中,以确定您是否选择“向 Google 发送使用统计信息和崩溃报告”。安装 Google Chrome 后,它将检查此数据的验证码签名以确定是否应启用诊断报告。
微软最终决定将该修复程序设为可选,可能是因为它会使合法的、已签名的可执行文件失效,这些可执行文件将数据存储在可执行文件的签名块中。
“2013 年 12 月 10 日,Microsoft 发布了所有受支持的 Microsoft Windows 版本的更新,更改了使用 Windows Authenticode 签名格式签名的二进制文件的签名验证方式,”Microsoft 对 CVE-2013-3900 的披露解释道。
“可以在选择加入的基础上启用此更改。”
“启用后,Windows Authenticode 签名验证的新行为将不再允许 WIN_CERTIFICATE 结构中的无关信息,并且 Windows 将不再将不兼容的二进制文件识别为已签名。”
现在已近十年后,已知该漏洞已被众多威胁参与者利用。然而,它仍然是一个选择加入的修复程序,只能通过手动编辑 Windows 注册表来启用。
要启用此修复程序,64 位系统上的 Windows 用户可以进行以下注册表更改:
启用这些注册表项后,您可以看到 Microsoft 验证 3CX 供应链攻击中使用的恶意 d3dcompiler_47.dll DLL 中的签名有何不同。
更糟糕的是,即使您添加了注册表项来应用修复程序,它们也会在您升级到 Windows 11 后被删除,从而使您的设备再次容易受到攻击。
由于该漏洞已在最近的攻击中使用,例如 3CX 供应链和 1 月份的Zloader 恶意软件分发活动 ,很明显应该修复它,即使这会给开发人员带来不便。
不幸的是,大多数人并不知道这个缺陷,并且会查看恶意文件并假设它是可信的,因为 Windows 报告它是可信的。
“但是当修复是可选的时,群众将不会受到保护,”多曼警告说。我启用了可选修复程序,一整天都像往常一样使用计算机,并且没有遇到任何让我后悔我的决定的问题。
虽然这可能会导致某些安装程序(如 Google Chrome)出现问题,无法显示为已签名,但额外??的保护值得带来不便。
BleepingComputer 就此漏洞的持续滥用问题联系了 Microsoft,这只是一个选择加入的修复程序,但尚未收到回复。