acm-header
登录

ACM通信

实践

打开底板管理控制器


四个控件相关的图标,插图

回到顶部

2011年,Facebook宣布了开放计算项目(Open Compute Project),旨在围绕数据中心硬件的开源设计和规范形成一个社区。Facebook分享了它的硬件规格,与现有的数据中心相比,这减少了38%的能源消耗和24%的成本。6Facebook和其他超级规模公司(谷歌、微软等)向开放计算项目捐赠的是他们对大规模运行数据中心所带来的痛苦问题的解决方案。

从那时起,该项目扩展到开放数据中心的所有方面:底板管理控制器(bmc)、网络接口控制器(nic)、机架设计、电源母线、服务器、存储、固件和安全。本专栏主要关注BMC。这是对一个复杂主题的介绍;有些部分只是触及表面,但目的是提供开放源码BMC生态系统世界的全貌,首先简要概述BMC在系统中的角色,触及与BMC有关的安全问题,然后深入到在开放源码生态系统中开发的一些项目。

如果CPU是主板的“大脑”,则BMC是主板的“脑干”。它监控和管理计算机或硬件设备的物理状态。包括温度、湿度、电源电压、风扇转速、远程接入和操作系统功能。BMC在历史上一直是一个基于SuperH或arm的芯片系统(SoC),具有常见的功能,包括但不限于:

  • 以太网的RMII(媒体无关简化接口)和RGMII(媒体无关简化千兆接口)。
  • 带SPI(串行外围接口)NOR的引导闪存。(NOR和NAND是非易失性闪存的类型;区别在于所使用的逻辑门的类型。)
  • 外围组件互连(PCI)快线。
  • 一种用于与主机通信的LPC(低引脚数)总线。英特尔的LPC的继承者是eSPI(增强串行外围接口总线)。

BMC通常使用智能平台管理接口(IPMI)与外部世界(或数据中心控制网络)通信,IPMI是一种基于消息的硬件级接口规范,用于管理和操作计算机系统。它独立于操作系统、服务器的CPU和允许管理员在没有操作系统或任何系统管理软件的情况下管理系统的固件运行。管理员还可以利用IPMI的本地网络在无法访问的远程计算机上获得控制台。

回到顶部

BMC的安全问题

IPMI堆栈在设计时没有考虑安全性(IPMI规范要求在堆栈上提供用户密码的散列)。假设数据中心控制网络将是隔离和可信的,这就是IPMI以安全漏洞而臭名昭著的原因。2IPMI堆栈和BMC中的漏洞是毁灭性的,因为它们负责许多特权操作。提高IPMI安全性一直被忽视,因为大多数IPMI软件是专有的。

BMC有自己的问题,主要是专有软件和漏洞。最近值得注意的BMC漏洞是USBAnywhere,3.由里克·阿尔瑟发现,他是Eclypsium的首席工程师。在Supermicro服务器上,攻击者可以使用USBAnywhere远程连接到服务器,并虚拟挂载任何USB设备到服务器。因此,攻击者可以加载新的操作系统映像或植入固件后门,以便进行远程访问。当时,有47000个脆弱的系统被发现暴露在公共互联网上。另一个有趣的弱点是Pantsdown,1它允许从主机对BMC地址空间进行读写访问。Pantsdown是所请求的特性导致漏洞的一个例子。

但是等等,还有更糟的。就像Trammell Hudson在他的Modchips of the State演讲中指出的那样th2018年混沌通信大会,7BMC通常通过串行外设接口(SPI)访问主机固件,并通过直接内存访问(DMA)访问主机内存。BMC获得DMA访问是因为它作为设备在外围组件互连快车(PCIe)总线上。这意味着它可以将代码注入到主机的固件中。许多BMC固件也缺乏安全引导的概念。这使得BMC成为黑客的主要目标。在这里,我要强调我在上一篇关于开源固件的文章中提到的一点:5一个令人担忧的问题是,拥有最多权限的代码的可见性和可检查性是最低的。

回到顶部

BMC开源

数据中心的开源趋势催生了许多创新的BMC项目。

OpenBMC。2014年,Facebook决定通过启动一个开源BMC软件项目来解决专有BMC软件的问题。42015年,IBM和Rackspace在他们自己的项目中合作解决了同样的问题。9这两个项目都被称为OpenBMC,并最终合并为OpenBMC项目,固件社区今天很熟悉(https://github.com/openbmc/openbmc).OpenBMC项目合并后的创始组织是微软、英特尔、IBM、谷歌和Facebook。OpenBMC对各种bmc有最广泛的支持。

OpenBMC项目包含u-boot,这是一种开放源码引导加载程序,它引导Linux内核时使用一个最小的根文件系统,其中包含运行OpenBMC所需的所有工具和二进制文件。OpenBMC是用面向服务的方法设计的。服务由systemd启动和维护,并通过dbus相互通信。为服务设计是一种简单的方法,可以让多个协作者和供应商对单个BMC实现做出贡献。这允许每个提供代码库的供应商都有独立的守护进程,可以打开它们,以便在其特定的OpenBMC发行版中发布;然而,它也使BMC软件的调试、审计和投入生产变得更加复杂。

U-bmc。在OpenBMC之后出现了u-bmc (https://github.com/u-root/u-bmc),一个由谷歌的克里斯蒂安·斯文森(Christian Svensson)启动的软件项目。u-bmc是用Go语言编写的,其目标是实现一个更小的BMC软件架构,通过用gRPC取代IPMI来挑战现状。从安全的角度来看,删除IPMI使得u-bmc具有挑衅性,因为攻击面积减少了。与OpenBMC不同,u-bmc在DRAM初始化之后直接从ased启动代码引导Linux内核,因此不需要像u-boot这样的引导加载程序。在本文发表之时,u-bmc支持基于ASPEED AST2400和AST2500的bmc,但计划在未来支持更多的bmc,并始终欢迎贡献。如果您有一个支持coreboot的Supermicro X11SSH板,那么可以使用u-bmc作为您的BMC软件。

RunBMC。不仅BMC的软件是开源的,硬件也是。Dropbox的Eric Shobe和Jared Mednick分析了所有BMC系统拓扑结构,以及每个平台之间的差异。结果就是RunBMC,一个用于bmc的标准硬件接口。Dropbox于2019年8月向开放计算项目捐赠了RunBMC硬件规格的第1版,以及Nuvoton NPCM75OR和ASPEED 2500 RunBMC模块的两个参考板。8


OpenBMC为BMC固件和硬件的开源奠定了基础。这催生了一系列开源的其他创新,我们可以期待更多的创新。


RunBMC设计允许从板的其他部分分离出BMC,隔离和锁定BMC子系统。在此之前,BMC是焊接到板上。从安全的角度来看,这是引人注目的,因为焦点转移到了单个的、可更换的BMC卡上,如果损坏,它可以很容易地被替换、更新为不同的版本或与其他安全特性集成。例如,一个信任根(trusted root),即在执行前对系统软件进行验证的可信源,可以保证BMC卡和单板其他部件之间的I/O安全。这也允许用户在常见的BMC制造商、asped和Nuvoton之间轻松切换。有趣的事实:Sun也有BMC与它的集成熄灯管理器(ILOM)连接,戴尔也有戴尔远程访问控制器(DRAC),惠普有集成熄灯管理器(iLO), IBM和联想有集成管理模块(IMM),然而,大多数现在都没有这种方式。

回到顶部

开源进一步推动生态系统

OpenBMC为BMC固件和硬件的开源奠定了基础。这催生了一系列开源的其他创新,我们可以期待更多的创新。这个空间产生了许多很棒的项目,我很幸运能够照亮正在完成的令人惊叹的工作。在栈的最低级别开放源代码的软件提供了对在系统上运行的最有特权的代码的可见性。我们只能希望这将导致更多的人审查代码,鼓励更少的架构,并减少系统在未来被发现的风险。

回到顶部

致谢

感谢开源生态系统中的个人帮助我了解他们的项目:Rick Altherr, Chris Koch, Christian Svensson, Ron Minnich, Trammell Hudson, Eric Shobe和Jared Mednick。如果你有兴趣帮助这里提到的任何项目,请查看GitHub。

ACM队列的q戳相关文章
queue.acm.org

现代安全
杰西Frazelle
https://queue.acm.org/detail.cfm?id=3301253

开源软件的商业化
迈克尔·j·卡雷尔
https://queue.acm.org/detail.cfm?id=945125

GNL不是Linux
Kode恶性
https://queue.acm.org/detail.cfm?id=2909572

回到顶部

参考文献

1.常见的漏洞和暴露。cve - 2019 - 6260;https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6260

2.常见的漏洞和暴露。智能平台管理界面;https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=ipmi

3.Eclypsium。BMC的虚拟媒体漏洞使服务器受到远程攻击;http://bit.ly/2NSdX2b

4.介绍“OpenBMC”:下一代系统管理的开放软件框架。Facebook工程,2015;http://bit.ly/2PHS73T

5.开源固件。acmqueue17日,3 (2019);https://queue.acm.org/detail.cfm?id=3349301

6.使用开放计算项目构建高效的数据中心。Facebook, 2011;http://bit.ly/2NBDwEm

7.哈德逊,t . 2019。国家芯片;https://trmm.net/Modchips#Defenses

8.RunBMC: OCP硬件规范解决了数据中心BMC痛点;https://blogs.dropbox.com/tech/2019/03/runbmc-ocp-hardware-spec-solves-data-center-bmc-pain-points/

9.Sullivan, A. OpenPOWER & Open Compute:全速推进Barreleye, 2015;https://blog.rackspace.com/openpower-open-compute-barreleye

回到顶部

作者

杰西Frazelle是一名独立顾问。她曾在Docker核心团队、谷歌和微软工作。


版权由作者/所有者持有。
向所有者/作者请求(重新)发布许可

数字图书馆是由计算机协会出版的。版权所有©2020 ACM股份有限公司


没有发现记录

Baidu
map