去年,Nozomi Networks Labs 发布了一项研究,揭示了影响 Lanner Electronics 设备基板管理控制器(BMCs)的 13 个漏洞。 BMCs 是计算机主板上的组件,包含独立的 CPU、内存和 LAN 接口,允许远程管理员连接到 PC/服务器或发送命令以执行各种操作。对这些控制器的操纵,旨在远程监视和管理计算机,可能导致未经身份验证的对手完全妥协设备。
根据这项研究,我们发现了五个新的漏洞,影响了美国 Megatrends (AMI) MegaRAC BMC 软件解决方案。以下解释的漏洞具体影响了 AMI MegaRAC SP-X 代码库,该代码库是多个 BMC 设备固件基础。由于这个固件被众多供应商广泛采用用于创建其独特的远程管理解决方案,这些漏洞不仅限于特定范围的产品或个别供应商。相反,它们有可能影响所有基于受影响代码库衍生的产品(包括 OT、IoT 或 IT 设备)的所有供应商的产品。值得注意的是,对于一些设备,我们有证据表明这些漏洞影响了最新可用的固件版本。
在这篇博客中,我们分享了 AMI MegaRAC SP-X 服务处理器的概述,描述了漏洞,并说明了可能导致 BMC Web 界面上持久后门的攻击场景。
BMCs 和 AMI MegaRAC SP-X
基板管理控制器(BMC)是一种专门的微控制器,集成到服务器的主板中,用于管理和监控系统硬件的各个方面,如功耗、温度、风扇速度和存储设备。BMC 独立于主 CPU 运行,允许管理员远程访问和控制服务器,即使主处理器无法正常运行。
美国 Megatrends(AMI)的 MegaRAC SP-X 是市场上最著名的商用固件解决方案之一,用于 BMC 芯片。基于 Linux 内核,它提供了广泛的功能,包括远程电源管理、键盘-视频-鼠标交互、虚拟媒体支持等。管理员和操作员可以通过各种接口与 BMC 进行交互,如 Web 门户、标准 Redfish API、IPMI 服务等。
BMC 固件已知基于或曾基于 AMI MegaRAC SP-X 的供应商包括华硕、戴尔、技嘉、惠普企业、蓝梅、联想、英伟达和泰安。这些供应商可以选择部署标准的 MegaRAC SP-X 固件映像“原样”或根据他们的需求进行定制和配置。
我们的研究发现了备份文件和 BMC 主机基于 Web 界面的文件哈希验证存在漏洞。此外,如果主板 BIOS 或固件(例如,在安全启动过程中测量固件完整性的 UEFI)未强制执行完整性检查,我们发现并提出了一种攻击场景,可以允许攻击者在基于 Web 的 BMC 管理界面上隐藏后门。这个后门访问甚至可以在主机操作系统重新安装或 BMC 配置本身硬重置后仍然存在。我们最后解释了资产所有者可用和建议的纠正措施。
MegaRAC SP-X 漏洞发现
在标准 MegaRAC SP-X 代码库中发现的漏洞列表如下:
高风险:
-
CVE-2023-34337:加密强度不足(CWE-326),CVSS v3 7.6(AV:A/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H)
-
CVE-2023-34338:使用硬编码的加密密钥(CWE-321),CVSS v3 7.1(AV:A/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H)
中等风险:
-
CVE-2023-34473:使用硬编码凭据(CWE-798),CVSS v3 6.6(AV:A/AC:L/PR:H/UI:R/S:U/C:H/I:H/A:H)
-
CVE-2023-34471:缺少密码步骤(CWE-325),CVSS v3 6.3(AV:A/AC:H/PR:H/UI:R/S:U/C:H/I:H/A:H)
-
CVE-2023-34472:HTTP 头中 CRLF 序列的不正确中和(’HTTP 请求/响应拆分’)(CWE-113),CVSS v3 5.7(AV:A/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N)
CVE-2023-34337、CVE-2023-34473 和 CVE-2023-34471 影响 SPx12 版本直至更新-2.00(不包括)。CVE-2023-34338 影响 SPx12 版本直至更新-3.00(不包括)。CVE-2023-34472 影响 LTS12 版本直至 2021 年 4 月 16 日,LTS13 版本直至 2021 年 7 月 14 日,SPx12 版本直至更新-5.00(不包括),SPx13 版本直至更新-3.00(不包括)。
通过文件完整性哈希和备份恢复文件攻击 BMC
在我们实验室环境中为 OT/IoT 目的测试主板的 BMC 网页界面时,我们注意到它提供了执行 BMC 配置备份和恢复的可能性(图 1)。这个功能在我们之前第一部分研究博客中评估的 Lanner IAC-AST2500 中并不存在。
图 1. MegaRAC SP-X BMC 界面的备份和恢复功能。
通过检查备份文件的内容,我们立即注意到其中包含了底层 Linux 系统的敏感数据,如网络配置文件或认证信息。值得注意的是,备份文件中还有一些 Bash 脚本,这是获取 BMC 上远程代码执行(RCE)的明显机会。然而,仅仅改变备份文件的内容导致其被拒绝。因此,我们决定调查 BMC 是如何验证文件完整性的。
在解压设备固件并在 IDA Pro 中加载 spx_restservice 二进制文件(负责处理 Web 请求的主要二进制文件)后,我们很快注意到备份/恢复功能是通过一个名为 libBackupConf.so 的附加共享对象处理的,更具体地说,是通过 RestoreConfFile 导出函数(图 2)。
图 2. RestoreConfFile
验证程序的核心是在 VerifyFileIntegrity 函数内部完成的。在反转函数之后,我们能够理解,完整性是通过比较在提供的文件上计算的 HMAC-SHA1 哈希与文件尾部中包含的哈希进行验证的。如果匹配,则接受文件。否则,文件将被丢弃。
然而,我们很快注意到了在这个过程中的以下缺陷:
-
用于计算 HMAC-SHA1 的秘密原来是库中硬编码的十个值之一。此外,在我们特定的 BMC 固件中,对生成备份文件的功能进行进一步分析发现,用作秘密的值始终是列表中的第一个值;
-
HMAC-SHA1 构造不是在定义所使用的标准加密原语和算法的相关 RFC 中描述的那种(H(K XOR opad,H(K XOR ipad,text)),而是一个定制的简化版本(H(text,K))。
-
这个简化版本比标准的加密原语不够安全,因为它不提供对消息的 SHA1 碰撞的任何抵抗(这已被证明是可行的)
-
最后,从整个 20 字节的 HMAC-SHA1 输出中,算法只验证了 2 字节,导致只有 65,536 种可能的 HMAC-SHA1 组合。这种限制使得哈希函数更容易受到成功的网络暴力攻击。
在短时间内,我们能够注入一些代码行,向其中一个 Bash 脚本添加一个反向 shell,并制作一个有效的 HMAC-SHA1,这使我们获得了对 BMC 的 root 访问权限(图 3)。
图 3. 在 BMC 上获得的根壳
如预期的那样,备份和恢复功能仅限于经过身份验证的用户。然而,未经身份验证的攻击者可能能够间接利用其中一些问题,方法是在存储库服务器中植入恶意代码的备份和恢复文件,然后等待或说服一个毫不知情的受害者/用户使用该文件进行恢复,触发恶意代码的执行。
从主机攻击 BMC 并实现抗重置持久性
考虑到 BMC 的 Web 界面有多么强大,跨站脚本(XSS)代表了可能出现的最危险的漏洞之一,因为攻击者可以秘密地在受控主机上发起命令。在我们的分析中,我们广泛测试了 Web 应用程序的 XSS 漏洞,但我们未能在攻击者可能控制的字段中找到任何漏洞。这促使我们跳出固有思维,尝试在通常攻击者不会瞄准的字段中测试 XSS。
BMC 网络界面显示与受管系统相关的资产信息等内容。一个示例是“可更换部件”网页(图 4)。
图 4. FRU 信息页面
经过一些调查,我们发现其中一些数据是从主机系统的 BIOS/UEFI 中硬编码的值中提取出来的。过去,更新 BIOS 是一项只能通过启动到特殊主板功能来执行的任务,但如今越来越普遍的是可以直接从主机操作系统(例如,通过制造商的临时应用程序或 Windows 更新服务)执行 BIOS/UEFI 更新。因此,我们决定探索编辑 BIOS 图像并重新刷新以测试通过滥用其中一些字段来检测存储的 XSS。
作为概念验证,我们使用互联网上可用的一种 AMI BIOS 编辑工具,在 BIOS 图像中硬编码的供应商和产品名称中注入了一个 XSS 有效负载,如图 5 所示。我们也可以使用在启动过程中通常不显示的字段。
图 5. 带有被污染的供应商和产品名称的 BIOS
随后,我们登录到 BMC Web 界面并重新打开 FRU 网页。很快我们就收到了警报,确认了我们任意 JavaScript 代码的执行。
图 6. FRU 网页中的存储型 XSS
尽管相对简单,这种攻击会造成严重后果。在受控主机上获得管理员权限的攻击者可以横向移动并在基于 Web 的 BMC 管理界面上隐藏后门。即使对主机操作系统进行多次重新安装、更换硬盘或对 BMC 配置本身进行硬重置,这种访问也可能持续存在。唯一的消除方法是使用干净的镜像重新刷新 BIOS/UEFI。值得注意的是,类似攻击的可能性很低,但并非不可能:已经有记录显示,在国家支持的有针对性的攻击中,通过固件刷新实现持久性的案例已经发生。
根据 AMI 的威胁模型,对抗这类情况的保护由 BIOS/UEFI 完整性检查提供,并由 BMC 制造商和/或最终用户负责。因此,这一发现未被视为漏洞,也未分配 CVE ID。
可用的补救措施
所有基于这些版本直到 2021 年第三季度的 MegaRAC SP-X 的所有设备中的 BMC 固件都受到影响(除非供应商已应用特定定制来更改或删除代码的易受攻击部分)。值得注意的是,对于一些设备,我们能够确认这些漏洞存在于最新可用的固件版本中。因此,只有当相应的供应商选择将 BMC 固件基于在此之后发布的已修复版本之一(或者供应商已应用特定定制来更改或删除易受攻击部分的代码)时,BMC 固件才会修补到所有上述 CVE ID。
鉴于基于网络的 BMC 管理界面未明确提供有关其派生的 MegaRAC SP-X 代码库版本的信息,设备的漏洞状态的准确信息必须由各自的制造商提供。我们敦促资产所有者与制造商核实,并在可用时应用修补程序版本的 BMC 固件。
如果制造商没有提供任何信息或解决方案,可以采取以下缓解措施:
-
CVE-2023-34337、CVE-2023-34471、CVE-2023-34472、CVE-2023-34473:审查所有具有 BMC 访问权限的帐户,并删除不必要的帐户;避免从不受信任的来源恢复配置文件;
-
CVE-2023-34338:通过基于 Web 的 BMC 管理界面手动重新生成 TLS 证书。
至于持续攻击方案,即使在完全打补丁的 BMC 解决方案上,这种情况可能仍然可行。避免滥用这种情况的建议是始终启用所有 BIOS/UEFI 完整性保护(例如,强制执行签名固件更新,安全启动等)。
结论
AMI MegaRAC SP-X 是一款功能强大、全面的远程管理 BMC 固件解决方案,专为数据中心和企业级服务器设计,被广泛认可的供应商采用。 BMC 在高效管理和监控服务器硬件方面发挥着至关重要的作用,但它们的持续运行和远程可访问性也可能带来安全风险。
在本文中,我们已经确定并解释了影响多个知名供应商部署的多个设备上的标准 MegaRAC SP-X 代码库的 5 个新漏洞。我们还提出了一种攻击场景,攻击者可能在 BMC 上实现重置抗性持久性。我们最终建议所有资产所有者应用官方补丁,或者如果不可用,执行上述推荐的缓解措施。
声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与技术交流之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。
本人长期从事车联网攻防一线,如果你是一个车联网攻防的长期主义者,欢迎加入我的知识星球,我们一起往前走,每日都会更新,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款。
5-20人 88元
20-50人 98元
50-100人 128元
原文始发于微信公众号(车联网攻防日记):【IoT安全】BMC 固件中的漏洞影响 IoT 设备安全-第 2 部分