上周四,大量西部数据 My Book 移动硬盘用户数据被远程清空的事件引发了众人关注。由于西数官方要求用户拔掉网线,事情开始变得有些混乱。
本周,又有安全人员爆出了这些硬盘还存在新的漏洞。
一项调查显示,攻击者对于 My Book Live 存储设备的大规模擦除不仅涉及利用 2018 年的老漏洞,还涉及第二个关键安全漏洞,该漏洞允许黑客在没有密码的情况下远程执行恢复出厂设置。
更值得注意的是,根据漏洞代码的情况来看,西部数据的开发者有意去除了恢复出厂设置时需要验证用户名和密码的步骤。
身份验证检查程序被注释掉
这个未被记录的漏洞位于一个名为 system_factory_restore 的文件中。该文件包含一个可执行重置 PHP 脚本,允许用户恢复所有默认配置和擦除存储在设备上的所有数据。
通常情况下,恢复出厂设置需要用户提供用户密码。这种身份验证确保暴露在互联网上的设备只能由合法所有者重置,而不是由恶意攻击者重置。
但是,如下面的脚本所示,西部数据开发人员创建了 5 行代码来对 reset 命令进行密码保护。由于未知的原因,身份验证检查被取消了,或者用开发人员的话说,它被注释掉了,如每行开头的「//」符所示。
- function post($urlPath, $queryParams = null, $ouputFormat = 'xml') {
- // if(!authenticateAsOwner($queryParams))
- // {
- // header("HTTP/1.0 401 Unauthorized");
- // return;
- // }
安全专家兼网络发现平台 Rumble 的首席执行官 HD Moore 认为:「在系统恢复端点中注释掉身份验证的供应商,这种做法不会让事情有利于他们,就好像他们故意启用了旁路。」
「要利用此漏洞,攻击者必须知道触发重置的 XML 请求的格式。这不像使用 GET 请求访问随机 URL 那样容易,但也不是那么难以做到,」Moore 说。
我的数据哪去了?
在发现第二个漏洞的前五天,全世界的人都报告说,他们的 My Book Live 设备遭到破坏,然后恢复出厂设置,所有存储的数据都被清除。My Book Live 是一种书本大小的存储设备,它使用以太网接口连接到家庭和办公室网络,以便连接的计算机可以访问其中的数据。授权用户还可以通过 Internet 访问他们的文件并进行配置更改。西部数据在 2015 年对旧版 My Book Live 停止了技术支持。
西部数据人员在发现大规模擦除数据后发布了一份公告,称这是攻击者利用 CVE-2018-18472 造成的。安全研究人员 Paulos Yibelo 和 Daniel Eshetu 在 2018 年底发现了远程命令执行漏洞。因为它在西部数据停止支持 My Book Live 三年后曝光,就像此前人们所报道的一样,该公司从未去修复它。
在 Arstechnica 和安全公司 Censys 的 CTO Derek Abdine 进行的一项分析发现,上周遭到大规模黑客攻击的设备也受到了利用未授权重置漏洞的攻击。在从两个被攻击的设备提取的日志文件中记录了攻击。
其中一个日志文件发布在西部数据支持的论坛上,它显示有人从 IP 地址为 94.102.49.104 成功恢复一个设备:
- rest_api.log.1:Jun 23 15:46:11 MyBookLiveDuo REST_API[9529]: 94.102.49.104
- PARAMETER System_factory_restore POST : erase = none
- rest_api.log.1:Jun 23 15:46:11 MyBookLiveDuo REST_API[9529]: 94.102.49.104 OUTPUT System_factory_restore POST SUCCESS
第二个日志文件从被攻击者入侵的 My Book Live 设备上获取,文件显示另一个 IP 地址为 23.154.177.131,利用了相同的漏洞。如下所示:
- Jun 16 07:28:41 MyBookLive REST_API[28538]: 23.154.177.131 PARAMETER
- System_factory_restore POST : erase = format
- Jun 16 07:28:42 MyBookLive REST_API[28538]: 23.154.177.131 OUTPUT
- System_factory_restore POST SUCCESS
在将这些发现提交给西部数据后,安全人员收到了以下回复:「我们可以确认,至少在某些情况下,攻击者利用了命令注入漏洞 (CVE-2018-18472),其次是恢复出厂设置漏洞。目前尚不清楚为什么攻击者会利用这两个漏洞。我们将为恢复出厂设置漏洞请求 CVE,并将更新我们的公告以包含此信息。」
漏洞被密码保护了
这一发现提出了一个棘手的问题:如果黑客已经通过利用 CVE-2018-18472 获得了完全的 root 访问权限,那么他们对第二个安全漏洞有什么需要?目前还没有明确的答案,但根据现有的证据,Abdine 提出了一个貌似合理的理论,即一名黑客首先利用 CVE-2018-18472 进行攻击,而另一名竞争对手随后利用了另一个漏洞,试图夺取那些已经受到攻击的设备的控制权。
攻击者利用 CVE-2018-18472 提供的代码执行能力修改了 My Book Live 堆栈中名为 language_configuration.php 的文件,该文件就是漏洞所在位置,根据恢复文件,修改代码添加了以下几行:
- function put($urlPath, $queryParams=null, $ouputFormat='xml'){
- parse_str(file_get_contents("php://input"), $changes);
- $langConfigObj = new LanguageConfiguration();
- if(!isset($changes["submit"]) || sha1($changes["submit"]) != "56f650e16801d38f47bb0eeac39e21a8142d7da1")
- {
- die();
- }
此更改阻止任何人在没有与加密 SHA1 hash 56f650e16801d38f47bb0eeac39e21a8142d7da1 对应的密码的情况下利用该漏洞。事实证明,这个哈希密码是 p$EFx3tQWoUbFc%B%R$k@。
从被黑客攻击的设备中恢复的另一个修改后的 language_configuration.php 文件使用了不同的密码,对应于哈希值 05951edd7f05318019c4cfafab8e567afe7936d4。黑客利用第三个哈希值 b18c3795fd377b51b7925b2b68ff818cc9115a47 对一个名为 accessDenied.php 的单独文件进行密码保护。这很可能是为了防止西部数据对 language_configuration 的修补。
迄今为止,破解这两个哈希值的尝试还没成功。
根据西部数据公告的内容,一些 My Book Live 硬盘被黑客攻破经由的漏洞是 CVE-2021-18472,感染了名为 .nttpd,1-ppc-be-t1-z 的恶意软件。该恶意软件在使用 PowerPC 的硬件上运行,My Book Live 就是这样的设备。
在西数的论坛中一位用户报告称,遭到黑客入侵的 My Book Live 收到了此恶意软件,该木马使设备成为了名为 Linux.Ngioweb 的僵尸网络的一部分。
一种可能性
所以,为什么那些成功将如此多 My Book Live 设备卷入僵尸网络的黑客要突然把东西都删光呢?为什么他们在已拥有 root 权限的情况下会使用未记录的身份验证绕过?
看起来,最有可能的答案是大规模擦除和重置是由另一波攻击者造成的,很可能是一个试图控制竞争对手僵尸网络,或只是想破坏它的竞争对手。
「至于大规模 POSTing 到 [sysem_factory_restore] 端点的动机,我们还不知道,可能是竞争对手的僵尸网络运营商试图接管这些设备或使它们无用,或者是有人想要以其他方式在搞破坏。这些设备可能已经被入侵过了一段时间,毕竟漏洞早在 2015 年就已存在了。」Abdine 表示。
不论如何,第二个漏洞的发现,意味着 My Book Live 比你想象得还要不安全。它或许才是西部数据让所有用户立即拔掉网线的真正原因——任何拥有这些硬盘的用户都应该立即这样做。
那么如何存储自己的资料才能更安全?对于那些瞬间丢失数年宝贵资料的同学们,再买一块西数硬盘怎么想都是不可能的。不过 Abdine 表示,西数 My Book 目前的在售产品和涉事 My Cloud Live 设备具有不同的代码库,其中不包含最近大规模擦除中利用的任何一个漏洞。
「我也查看了 My Cloud 固件,」Abdine 说道。「它经过了完全的重写,只有很少一些地方和旧版相似。所以它们之间不会有相同的问题。」