现代数据中心依靠 Baseboard Management Controllers (BMCs) 进行远程管理。这些嵌入式处理器使管理员能够重新配置服务器、监控硬件运行状况并推送固件更新,即使在系统关闭电源时也是如此。
但是,这种能力会严重损害安全性并扩大攻击面。如果不加以保护,受损的 BMC 可以对整个设备群提供持久的秘密访问。
NVIDIA Offensive Security Research (OSR) 团队最近分析了数据中心环境中使用的 BMC 固件。该团队确定了 18 个漏洞,并开发了 9 个正在运行的漏洞。现代基础设施中经常被忽视的组件中存在的此类漏洞可能会导致严重的安全漏洞,从而给企业带来风险。
本文将介绍 BMC 的工作原理、OSR 发现的漏洞,以及企业应该采取哪些措施来保护自己。有关更多详细信息,请参阅 Breaking BMC:The Forgotten Key to the Kingdom。
是什么让 BMC 变得强大且有风险
BMC 是嵌入式服务处理器,可实现安全的大规模远程管理。在超大规模或物理上无法访问的环境中,它们使管理员能够监控硬件、重新配置系统固件并恢复计算机。其中一些操作甚至可以在不启动主机电源的情况下执行。
通过键盘视频鼠标 (KVM) 访问,BMC 可以修改 BIOS 设置、应用固件更新并控制启动行为。它们收集详细的遥测数据,如温度、功耗和风扇转速,并且独立于主机操作系统运行。虽然这种访问级别对于现代基础设施至关重要,但也会带来潜在的安全风险。
BMC 通常在传统安全监控系统之外运行,通过专用管理接口公开,并由第三方固件堆栈提供支持。如果受到入侵,它们就会成为在其控制的每个系统中保持持久性的平台,而检测方式通常很难甚至无法检测到。
NVIDIA DGX H100 等 NVIDIA 系统依靠 BMC 实现安全、可扩展的操作。因此,即使组件来自外部供应商,其安全性也会受到严格评估。
BMC 不仅仅是一个控制平面,而是一个潜在的妥协平面,这使得保护 BMC 至关重要。

BMC 内部:从 Side Channels 到 Root Access
在评估过程中,NVIDIA OSR 团队分析了现代数据中心服务器中常用的 BMC 固件包。在无法访问源代码的情况下,该团队直接从设备镜像对固件进行逆向设计,发现了 18 个漏洞 (从凭据处理缺陷到内存损坏错误) ,并开发了 9 个可行的漏洞来评估实际影响。此外,它还能够验证 NVIDIA 产品是否容易受到这些攻击,并允许验证补丁。
通过侧信道泄露凭据
该团队对 IPMI 身份验证过程进行了调查,并确认该过程仍然容易受到最初于 2013 年发现并分配给 CVE-2013-4786 的 hash-leak 漏洞的影响。不过,只有当攻击者知道 BMC 系统中的有效用户名时,才能利用此漏洞。BMC 响应时间显示了一个经典的 timing oracle 侧通道,允许团队识别有效的用户名。获得有效的用户名后,我们可以使用泄露的 hash 和标准 word lists 离线强制密码。
该漏洞源于 BMC 在身份验证期间使用 memcmp
比较用户名。由于 memcmp
在第一个不匹配时退出,因此响应时间泄露了用户名的初始字符数是正确的,从而提供了一个典型的时间侧通道。

通过不安全的 API 实现完全远程访问
固件镜像表示用户数据库由 Redis 管理,使用加密密码,但密钥一起存储。该团队发现了一个 API,可以通过它查询 Redis 数据库。我们确定了密码和用户名的存储位置,通过 API 访问这些位置,解密了密码,并成功获取了完整的用户数据库。
另一个 API 允许使用 BMC 凭据对 IPMI 服务器进程中的虚拟内存进行读/ 写访问。在不检查区域或大小的情况下,我们发现服务器模块加载在一致的基础地址上。这表明缺乏 Address Space Layout Randomization (ASLR) ,ASLR 是针对堆喷洒、面向返回的编程漏洞和直接内存操作等一系列攻击的标准缓解措施。

由于缺乏 ASLR,团队能够识别隐藏配置标志的位置,并直接通过 API 进行切换。这使我们能够启用通常不公开的文件下载功能。通过将此与单独的路径遍历漏洞关联,我们能够从 BMC 检索敏感文件,包括 /etc/shadow
。

/etc/shadow
这些功能在默认情况下处于启用状态,并且可以在身份验证后使用。它们共同为我们提供了对系统的深度访问权限,并为我们指明了坚持的清晰路径。
与主机系统旋转
在完全访问 BMC 后,团队开始探索与主机系统本身进行交互的方法。使用 BMC KVM 功能,我们修改了 Bootloader 参数,并获得了对主机操作系统的 shell 访问权限,无需任何用户凭据。在此实例中,Secure Boot 未启用。但是,如果启用该功能,则可以通过 BMC 调整 Unified Extensible Firmware Interface (UEFI) 设置。这将允许 Secure Boot 被禁用,前提是 UEFI 不受密码保护。
进入后,团队发现主机的磁盘未加密,并且包含剩余的固件更新镜像。这使我们能够检索原始 BMC 固件并对其进行逆向工程,以便更详细地了解系统。
我们还确定了一个公开 API,允许 BMC 直接读取和写入主机的 SPI 闪存。借助此功能,我们能够修改 NVRAM 条目,例如禁用 Secure Boot。这不是一条理论路径,而是经过了测试和确认。对持久性和主机妥协的影响是严重的。

经典内存漏洞,无现代缓解措施
在审查身份验证功能时,团队发现了一种逻辑,用于处理用于记录目的的共享遥测库。在该代码中,我们发现了基于堆栈的经典预身份验证缓冲区溢出。BMC 固件使用 strcpy
将未验证的输入复制到固定大小的缓冲区中,然后立即进行函数指针调用。这提供了在尝试登录期间执行代码的直接路径。
真正突出的是缺乏针对堆栈和内存损坏漏洞的标准现代缓解措施,包括:
- 堆栈的 Data execution prevention
- 堆栈 Cookie
- ASLR
- 控制流完整性 (CFI)
- 沙盒
这些是现代系统中的基准缓解措施,如果不采用这些措施,则利用起来要容易得多。
该团队针对此身份验证前漏洞开发了一个漏洞,该漏洞完全劫持了控制流,允许执行注入的 shellcode。由于缺少防御层,开发过程并不困难。
推动整个生态系统的修复
在验证漏洞后,OSR 与负责受影响 BMC 固件的供应商 American Megatrends Inc. (AMI) 密切合作。我们提供详细的技术报告,使 AMI 能够修补问题并协调整个客户群的修复工作。
由于此固件在整个行业中广泛部署 (不仅仅是在 NVIDIA 系统中) ,因此该团队与供应商并行发布了我们自己的 CVE,以加速感知和补救。这有助于确保受影响的 NVIDIA 客户可以迅速采取行动,而正式的供应商 CVE 则遵循其标准流程。
这项工作的影响不仅限于 NVIDIA 产品。识别并披露常用 BMC 平台中的漏洞有助于提高整个生态系统中 BMC 安全的标准。
安全团队现在应该做什么
BMC 不仅仅是后台基础设施,还是能够深度控制硬件的特权系统。如果它们不是您的安全模型的一部分,则应该是。开始使用:
- 限制访问:将 BMC 接口放置在隔离的管理网络上,切勿将其公开到互联网上。
- 积极修补:与您的供应商合作,确保 BMC 固件得到更新并追踪 CVE。
- 监控活动:将 BMC 事件视为日志记录和检测策略的一部分。关注固件、配置和登录行为的变化。
- 审核供应链:询问供应商如何构建、测试和维护 BMC 固件。尽可能进行验证。
- 推动强化:需要基本的缓解措施,如 ASLR、堆栈保护和嵌入式系统中的不可执行内存。这些保护措施应作为基准。
BMC 是实现全面系统控制的门户。一旦遭到入侵,它们就会为攻击者提供持久的低级立足点。保护它们对于保护现代基础设施至关重要。
加强基础设施安全性
通过主动识别漏洞、与供应商密切合作并与更广泛的社区分享见解,NVIDIA 正在帮助在整个数据中心生态系统中推动更强大的防御。
这项 BMC 研究是深度技术安全工作如何揭示隐藏风险并产生实际影响的一个例子。该团队将继续挑战假设,调查被忽视的组件,并提高基础设施安全性。保护堆栈意味着保护堆栈的每一层。如需了解更多信息,请参阅完整的研究论文,即 Breaking BMC:The Forgotten Key to the Kingdom。
想要详细了解如何保护堆栈的其他层?浏览 NVIDIA GTC 演讲,了解代理式 AI 的最新进展。