USBAnywhere——Supermicro中虚拟媒体服务导致的BadUSB攻击
大多数安全人员都会对未知的USB设备保持高度警惕,永远不会拿起一个未知的、不可信的USB,插入计算机。但是,最近我们发现了有关USB应用的新漏洞,它存在于Supermicro
服务器的基板管理控制器(baseboard management controllers)上,我们并将其称为USBAnywhere
。它可让攻击者很轻易地远程连接到服务器,并通过公网将任意USB设备挂载到服务器上。
Supermicro公司为全世界各大企业提供各类基础网络建设。
在撰写本文时,我们发现至少有47000个系统的基板管理控制器(BMC)暴露在公网上,并且使用了和漏洞相关的协议。此外,请记住这些只是直接暴露在公网上的BMC,那些攻击者可登录访问的BMC也存在同样的漏洞。
想了解其他信息可直接访问我们的GitHub。
介绍
按照原本的设计,BMC允许管理员带外(out-of-band)管理服务器,是高权限组件。而这个漏洞的根本原因在于Supermicro X9、X10和X11平台的BMC实现虚拟媒体的方式存在缺陷,即远程连接磁盘镜像,将其作为虚拟USB CD-ROM或软盘的方法存在缺陷。当用户远程访问时,虚拟媒体服务的验证流程未对流量进行加密亦或使用弱加密,这让攻击者在拦截流量的情况下可轻易破解身份凭证,非法登录服务。在某些情况下,攻击者还可凭借默认凭证甚至不需要凭证登录服务。
一旦连接上,攻击者可利用虚拟媒体服务将某个USB设备与目标系统进行交互。这意味着攻击者可以像BadUSB一样攻击服务器,比如加载一个新的操作系统镜像,使用键盘和鼠标修改服务器、植入恶意软件,甚至完全禁用某些设备。这种攻击方式并不复杂,任何攻击者都有可能造成巨大的损失。
远程USB访问
通常,对虚拟媒体服务的访问是由BMC的web接口上的一个小型Java应用实现的。这个应用涉及到BMC上的623端口(虚拟媒体服务),使用自定义数据格式对客户机进行身份验证,并在客户机和服务器之间传输USB数据包。
通过对身份验证流程的分析,我们发现了以下问题:
- 明文验证
虽然这个Java应用使用唯一的session ID进行身份验证,但该服务还允许客户机使用纯明文用户名和密码。
- 未加密的网络流量
存在流量加密的选项,但必须由客户端主动发起。Java应用会对初始的身份验证进行加密,然后其他所有通信都使用未加密的数据包。
- 弱加密
流量加密使用的是编译到BMC固件中的固定密钥(RC4加密)。此密钥在所有Supermicro BMC中都一样。而且RC4有多个已公开的弱点,已被禁止在TLS中使用。
- 验证绕过(仅适用于X10和X11平台)
当客户端在虚拟媒体服务上进行了正确的身份验证,然后断开连接后,关于该客户机的一些服务的内部状态就会被错误地保留下来。此时内部状态和某个客户端套接字文件描述符相绑定,如果此时新客户端被BMC分配了相同的套接字文件描述符,则新客户端会继承了这个内部状态。即使新客户机使用不正确的凭据进行身份验证,服务也会让新客户端继承以前客户端的授权。
综上所述,这些弱点可让攻击者轻易获得对虚拟媒体的访问。在最简单的情况下,攻击者可以直接尝试BMC的默认用户名和密码。即使更改了默认密码,攻击者仍然可以轻松访问。如果管理员在BMC上次关闭后使用了虚拟媒体服务,即使攻击者输入错误的用户名和密码,仍然可以连接。考虑到BMC很少断电下线,这种身份验证绕过漏洞很大概率能成功。
此外,攻击者还可以拦截到虚拟媒体服务的流量,并利用存储在BMC中的固定密钥解密。
通过对623端口扫描发现,来自90多个国家的47339个BMC的虚拟媒体服务可以被公开访问。
USB连接到目标系统
绕过身份验证后,用户可以访问BMC上的虚拟USB集线器。这个虚拟集线器支持最多5个虚拟设备,且支持任意设置。
通常,当一个新的USB连接到主机时,主机会通过“描述符”识别设备的类型及其配置。这些描述符告诉系统哪个是USB CD-ROM、打印机和WiFi,以加载相应的驱动,进行交互。
然而,Supermicro的虚拟USB hub中的设备依赖于BMC上的软件来提供这些描述符。因此,BMC硬件允许某软件成为任何USB设备。这就是Java应用程序可以成为虚拟CD-ROM驱动器的原因。
当与允许用户在软件中模拟USB设备的Facedancer等框架相结合时,攻击者可以模拟他们需要的任何设备。而最显著的就是BadUSB攻击,在下面的视频中,我们的研究人员演示了一个使用Facedancer的所进行的攻击。
确保BMC的安全性
值得注意的是,BMC永远不应该直接暴露在公网上。一切攻击的开端都是因为可以在公网上找到BMC。
由于BMC的高权限、重要性和“漏洞百出”的名声,它也成为安全研究中最活跃的领域之一。通过一个简单的shodan扫描,可以发现全球至少有94000个623端口暴露在公网上。
此外,未暴露于公网的BMC也应仔细监测是否有攻击产生。这类服务器的固件通常不会得到及时更新。
我们这项研究表明一个事实,一些BMC漏洞即使是新的攻击者也可进行利用。攻击者只需使用一个免费的工具来模拟USB设备,就可以远程控制对企业服务器。为了防范这类针对系统固件的攻击,及时进行固件更新是非常必要的。
修复
在我们上报漏洞后,Supermicro已承诺会尽快为他们的X9、X10和X11平台提供固件更新。建议使用Supermicro X9、X10和X11平台的用户及时访问Supermicro安全中心,了解更新信息。
除了厂商提供的安全更新,组织还应该采用第三方工具来测试服务器是否存在其他漏洞。
漏洞时间表
2019-06-19: Eclypsium提供漏洞报告给Supermicro
2019-07-09: Eclypsium向Supermicro报告了更多发现
2019-07-29: Supermicro确认漏洞报告并开发了一个补丁
2019-08-16: Eclypsium通知CERT/CC有大量公共系统受到漏洞影响
2019-08-16: Supermicro确认将于9月3日前发布新固件
2019-08-21: Eclypsium试图第二次通知CERT/CC
2019-08-23: Eclypsium通知其他受漏洞影响机器的网络运营商
2019-08-23: Eclypsium发现Supermicro X9平台也受到了影响
2019-09-03: Eclypsium公开漏洞细节
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://eclypsium.com/2019/09/03/usbanywhere-bmc-vulnerability-opens-servers-to-remote-attack/
最新评论