CVE20148272漏洞分析:戴尔(Dell)远程控制卡脆弱的SessionID机制

CVE20148272漏洞分析:戴尔(Dell)远程控制卡脆弱的SessionID机制

我们最近发现了一个Dell集成远程控制卡(iDRAC)的漏洞,Dell集成远程控制卡是集成在服务器上的小型设备。

黑客利用这个编号为CVE-2014-8272的漏洞,可以在低权限或者未认证的情况下,启用新session执行任意命令。本文主要会讲述该漏洞的细节和利用手法,并给出我们的修复建议。最后,我们会提供检测CVE-2014-8272漏洞的工具供大家下载。

红黑联盟小科普

IPMI协议:整合服务器和其他系统(如存储设备、网络和通信设备)的硬件管理规范,同时支持多类操作系统。

BMC:通过与系统板上不同传感器进行通信,并在某些参数超出其预置阈值时发送警报和日志事件来监测发生严重事件的系统。

iDRAC:名为Dell集成远程控制卡,是附加在服务器上的一台小电脑,通过与服务器主板上的管理芯片BMC进行通信,监控与管理服务器的硬件状态信息。它拥有自己的系统和IP地址,与服务器上的OS无关。

信道噪声:即干扰信号,噪声干扰不去除,就会造成信号失真,严重的会使得通信无法正确和有效的进行。

背景:IPMI v1.5 Activation阶段的Session-ID

 

在阐述细节之前,我们先来了解下IPMI v1.5信道的Session-ID:

CVE20148272漏洞分析:戴尔(Dell)远程控制卡脆弱的SessionID机制

用户(远程终端)和BMC(管理系统)间的信道的通信过程可以分Discovery、Activation、Active三个阶段建立,细节如下:

在Discovery阶段,BMC应答的认证算法可以用于认证IPMI v1.5信道终端账户(如ADMINISTRATOR, USER, OPERATOR)。在Activation阶段,远程终端会提出账户凭据信息,由支持的认证算法的管理系统进行验证。一旦以上认证成功后,会产生一个Session-ID。此Session-ID是信道的诸项认证的标志,在此以后的每次通信都需要包含这个Session-ID,包括之后的Active阶段。BMC有了这个机制可以同时支持多个session通信,这是因为session除了用来区别信道外,Session-ID也用于鉴别信道的权限级别。比如,远程终端用USER权限的账户,就是无法执行成功“Set User Password”这个高权限命令的。

漏洞:Dell集成远程控制卡的Session-ID

Session-ID作为无符整型数,需要注意两点:

1.在不同信道之间需要有随机性,以保持区别2.它应该有一个可能值的范围(2^32)

不幸的是,这并不是该远程控制卡(为了看起来明了,以下尽量这样称呼iDRAC)

实际采用的规格,它采用的Session-ID是0x0200XXYY格式。Byte-3和Byte-2被设置为0×0200,也许其代表着远程控制卡支持的IPMI的版本号。这个不是重点,我们继续分析。Byte-0(YY)可能是代表激活的时间周期范围(0×00~0×03),这标志着至少在测试的这个版本,远程控制卡能同时支持四个信道,每个时间周期对应一个信道。在随后的信道请求中,该远程控制卡会返回一个“Node Busy”的错误信号:

 

CVE20148272漏洞分析:戴尔(Dell)远程控制卡脆弱的SessionID机制

在Activation阶段发出Temporary-Session-ID和Session-ID后,Byte-1(XX)的值会发生增长。远程控制卡会把0×00当做特殊的值进行跳过(值范围为0×01~0xFF),因此Session-ID的范围为(2^8)-1:

CVE20148272漏洞分析:戴尔(Dell)远程控制卡脆弱的SessionID机制

利用方法:任意命令注入

黑客可以在建立的session里注入任意命令,在他拥有USER账户权限时,可以通过现有的Temporary-Session-ID和Session-ID值预测下一次的值,其步奏如下:

1.在拥有账户凭据的情况下,黑客可以发送“Get Session Challenge”请求,去获得当前的Temporary-Session-ID。2.使用下一个Session-ID携带IPMIv1.5命令,可以预测到其值为当前Temporary-Session-ID加上3。3.重放该请求,当通信再次建立时,请求会注入到下一个session里。

下面是该攻击过程的两个截图:

CVE20148272漏洞分析:戴尔(Dell)远程控制卡脆弱的SessionID机制

 

在上面的例子中,第一个“User List”命令列出远程控制卡里的6个账户,但只有“root”用户拥有ADMINISTRATOR权限。接下来,却出现了一个由合法ADMINISTRATOR用户发送的“Chassis Status”命令。这是因为黑客用预测的Session-ID发送了“Set User Access”命令,然后获得了ADMINISTRATOR权限。最后的“User List”命令显示“Set User Access”确实注入成功,“user”账户已经由USER权限提升到ADMINISTRATOR权限:

CVE20148272漏洞分析:戴尔(Dell)远程控制卡脆弱的SessionID机制

上面的网络数据包截图展示了“Chassis Status”命令的执行结果。选中的第12帧为“Set User Access”的应答包,但其是通过另一个无关的IP进行注入的。这表明了虽然远程控制卡有着IP与Session-ID对应映射,它只会检查这个地址映射表去应答来源,但却没有用来限制来自外来源的请求。

在这次过滤中,任意命令注入发生在第10帧和14帧之间。如果远程控制卡是在第9帧(提前)收到了注入命令,黑客会收到“Insufficient Privilege Level”(权限不足)的错误提示。

这种攻击的缺点是会产生一定的信道噪声,因为黑客没有办法知晓下次session什么时候会建立起来。

供应商回应

这个漏洞可能有两个点需要修复。第一需要充分利用2^32的空间大小,保证选择值的随机性。第二则需要通过映射关系过滤请求的源,保证不会有外来源进行干涉通信。然而,戴尔为了修复iDRAC v1.98,而在这个版本里摈弃了IPMI v1.5协议,但这并不符合兼容规范。然而,他们给出了以下理由:

IPMI 1.5已经不再推荐使用,而且也没有戴尔用户请求我们使用它。
安全建议

据Dan Farmer于2014年6月发布的文章来看,大型扫描结果显示109,726台开着UDP 623端口的机器,还在使用IPMI v1.5,约占扫描总量的46.8%。若是根据戴尔在五月的卖出服务器占15%的市场份额来算,约有17,500台服务器还在使用IPMI v1.5。然而戴尔指出没有用户提出请求让他们实现向后兼容性,这意味着这17,500台机子除非已经全部更新到了IPMI v2.0,不然肯定是存在漏洞的。

更多相关文章
  • >> 点击进入 ChinaJoy2014 专题,查看更多报道 易网科技讯 7月30日消息,在今天召开的2014年Chinajoy产业高峰论坛上,UC优视首席运营官朱顺炎在演讲中表示,UC优视已经完成了对九游与PP助手的整合,未来还将对公司其他流量入口进行整合.未来的UC游戏平台,将集中U ...
  • >> 点击进入 ChinaJoy2014 专题,查看更多报道 易网科技讯 7月30日消息,在今天举行的第十二届中国国际数码互动娱乐展览会上,触控科技有限公司首席执行官陈昊芝表示在刚进入这个行业的时候我们是无知:"通过三年的发展,我们证实了自己的无畏和坚持.我们用自己的产品证明了 ...
  • catalog database 的功能 1)集中存放rman的资料库(备份的元数据),并且可以和target database 的controlfile同步 2)存放rman的备份脚本 catalog database 的配置 1)需要建立一个单独的database SQL> show pa ...
  • 一,简介Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket 框架.它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面,这样客户端就不必重新发送请求或使用轮询技术来获取消息.  二,实现机制SignalR 的实现机制与 .NET WCF 或 Re ...
  • INQ:全球最强黑客曾为新闻集团编写间谍软件 周三,一位黑客在加州联邦法院出庭作证时表示,媒体巨头新闻集团旗下NDS部门曾聘请其编写一款间谍软件,但否认自己使用过这款软件入侵NDS竞争对手的卫星电视服务网络. 据国外媒体报道,此前美国卫星电视网络服务商DISH网络公司对新闻集团NDS部门提起法律诉讼 ...
  • 需求:标题就是需求,想用密码库批量检测一下域内的弱密码. 解决:PowerShell来实现,不需要第三方工具,不怕被人偷了密码. 本脚本需要3个文件,空的即可,位于d:/pwd下 1 name.csv,保存需要测试的用户名列表 2 pwd.csv,保存需要测试的密码列表 3 name2.csv,保存 ...
一周排行
  • 是对查询出来的结果集作为一个单元来有效的处理.游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行.可以对结果集当前行做修改.一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强.存储过程, ...
  • 1. nfs server端的安装和配置 (1)安装nfs server sudo apt-get install nfs-kernel-server nfs-common (2)重启nfs server      ...
  • 1391. 畅畅的牙签袋(改) 题目描述 上次妄图遮掩显示器的企图失败了,所以畅畅很不开心.这次,他换了一种牙签袋卷土重来了.这次他选择了十字形的牙签袋(即每贴一个牙签袋都会影响5块区域,贴的时候中心点必须贴在显示器 ...
  • 前一阵公司采购的服务器昨天终于到货了,因为货运的车在高速路上坏掉了,结果分了两批运进公司.用了一天时间验货,直到晚上8点多才将5台服务器和一台存储演完,并将两台服务器上架. 早上9点第一批货就送到了,于是一天紧张的验 ...
  •     1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问� 题)     #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL     我在 ...
  • 版本:5.6.3.5 (5) 1. 优化实体ChangeKey队列,减少写库IO(默认为5分钟写入一次数据库) 2. 优化Protobuf序列化启用自动GZip压缩,减少Redis内存消耗 3. 修 ...
  • 1 import java.util.Vector; 2 import java.util.Iterator; 3 import java.util.Arrays; 4 import java.util.ArrayL ...
  • 感谢微信平台一天一道算法题每天多一点进步-   problem: 12个高矮不同的人 排成两排 每排必须是从矮到高排列 而且第二行比对应的第一排的人高 问排列方式有多少种? analyse: 据说  这题 是来自于 ...
  • 前面ModelView变换相当于拍照时放置相机和调整被拍物体的位置和角度.投影变换则对应于调整相机镜头远近来取景. 下面代码设置当前Matrix模式为Projection投影矩阵: gl.glMatrixMode(G ...
  • 瀑布模型(Waterfall Model)      喷泉模型(fountain model)是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程. 优点:    1.该模型的各个阶段没有明 ...