关于“VMware ESXi OpenSLP堆溢出漏洞”的修复说明
前段时间IT圈被一个“ESXiArgs 勒索软件攻击VMware ESXi 服务器”的相关新闻刷屏。互联网上的文章称,这些攻击活动似乎利用 CVE-2021-21974 漏洞,由 OpenSLP 服务中的堆溢出问题引起,未经身份验证的威胁参与者可以利用该问题进行低复杂度攻击。CVE-2021-21974 影响以下系统:
ESXi70U1c-17325551之前的ESXi 7.x的版本。
ESXi670-202102401-SG 之前的 ESXi 版本 6.7.x。
ESXi650-202102101-SG 之前的 ESXi 版本 6.5.x。
VMware在 2021 年 2 月 23 发布了补丁程序以解决该问题(链接为https://www.vmware.com/security/advisories/VMSA-2021-0002.html)。表1列出的版本及以后的版本不受此漏洞影响。
表1 不受CVE-2021-21974影响的最低ESXi版本
版本名称 | 实体包ID | 内部版本号 |
ESXi70U1c-17325551 | ESXi70U1c-17325551 | 17325551 |
ESXi670-202102001 | ESXi670-202102401-SG | 17499825 |
ESXi650-202102001 | ESXi650-202102101-SG | 17477841 |
截止到本文写作时,VMware ESXi最新版本如表2所列。
表2 部分VMware ESXi最初补丁版本
版本名称 | 内部版本号 | 发布日期 |
VMware-ESXi-8.0a-20842819-depot | 20842819 | 2022-12-08 |
VMware-ESXi-7.0U3j-21053776-depot | 21053776 | 2023-01-31 |
ESXi670-202210001 | 20497097 | 2022-10-06 |
ESXi650-202210001 | 20502893 | 2022-10-06 |
VMware 尚未找到证据表明未知漏洞(0-day)被用于传播最近这些攻击中使用的勒索软件。大多数报告指出,一般支持终止 (EOGS) 和/或严重过时的产品正成为已知漏洞的目标,这些漏洞之前已在 VMware 安全公告 (VMSA) 中得到解决和披露。
考虑到这一点,VMware建议客户升级到vSphere 组件的最新可用受支持版本,以解决当前已知的漏洞。此外,VMware 建议在 ESXi 中禁用 OpenSLP 服务。ESXi 7.0 U2c 和 ESXi 8.0 GA默认禁用该服务。
1 关于ESXi补丁包介绍
使用浏览器访问https://my.vmware.com,输入注册账户登录后,在“产品和账户→产品补丁程序”(如图1所示)访问“产品补丁程序”网站。
图1 产品补丁程序
在“产品补丁程序网站”的“您为以下项选择了补丁程序”下拉列表中选择“ESXi (Embedded and Installable)”,在右侧选择版本(8.0、7.0、6.7.0、6.5.0、6.0.0等),本示例选择6.7.0,列出VMware已经发布的ESXi 6.7.0的所有补丁。如图2所示。单击右侧的“立即下载”链接,可以下载对应的ESXi的补丁程序,当前示例中,ESXi 6.7的补丁程序文件名称为ESXi670-202210001.zip。
图2 产品补丁程序
ESXi的zip升级补丁包,包含常规版本实体包和仅安全修复版本实体包。在图2“公告”中列出由-SG结尾的ID标识的为仅安全修复版本实体包,由-BG结尾的实体包ID标识的为常规版本实体包。
仅安全修复版本实体包只适用于新的安全修复。不包括任何新的缺陷修复,但包括早期修补程序版本和更新版本中的缺陷修复。
VMware 修补程序版本和更新版本包含“常规映像配置文件”和“重要映像配置文件”。例如对于当前示例的ESXi670-202210001.zip,包括4个映像配置文件,名称如下:
ESXi-6.7.0-20221004001-standard
ESXi-6.7.0-20221004001-no-tools
ESXi-6.7.0-20221001001s-standard
ESXi-6.7.0-20221001001s-no-tools
这4个配置文件中,前缀相同的配置文件修复了相同的问题,其中-standard结尾的ID标识的配置文件包括了新版本的VMware Tools安装包,而-no-tools结尾的ID标识的配置文件没有包含VMware Tools安装包。在数字后面有s的是重要映像配置文件,用于安全修复更新。不带s的为常规映像配置文件,只用于缺陷修复。
如果需要安装所有新的安全修复和缺陷修复,则必须应用此版本中的所有实体包。在某些情况下,常规版本实体包将取代仅安全修复版本实体包。这没有问题,因为常规版本实体包同时包含新的安全修复和缺陷修复。
可以使用 esxcli software profile update 或 esxcli software profile install 命令升级或更新 ESXi 主机。其中update 命令使用指定配置文件中的相应 VIB 来更新现有的 VIB,但不影响目标服务器上安装的其他 VIB。 install 命令安装库映像配置文件中显示的 VIB,并且移除目标服务器上安装的任何其他 VIB。这是两者的区别。在大多数的情况下使用update参数。
2 检查当前的ESXi版本
如果ESXi受vCenter Server管理,登录到vCenter Server管理界面,在左侧导航窗格中单击ESXi主机,在右侧“摘要”选项卡中可以查看当前主机安装的ESXi版本,如图3所示,当前示例中主机安装了ESXi 8.0,内部版本号为20513097。
图3 查看ESXi版本号
如果ESXi没有受vCenter Server管理,登录到ESXi主机,在导航器中单击“主机”,在右侧查看ESXi的版本,如图4所示。如果没有内部版本号,可以在“帮助→关于”中查看ESXi内部版本号。当前示例中ESXi的内容版本号为15843807。
图4 查看ESXi版本号
3 权宜措施
VMware建议将受影响ESXi升级到最新版本。如果服务器暂时无法升级,可以使用以下的临时措施。注意,此解决办法仅适用于 ESXi。请勿将此权宜措施应用于其他 VMware 产品。
使用该权宜措施,使用 SLP 通过端口427查找 CIM 服务器的 CIM 客户端将无法找到该服务。
要实施权宜措施,请执行以下步骤:
(1)使用以下命令停止 ESXi 主机上的 SLP 服务:
/etc/init.d/slpd stop
注意:仅当 SLP 服务未在使用中的时候才能将其停止。使用以下命令可查看服务位置协议守护进程的运行状况:
esxcli system slp stats get
(2)运行以下命令以禁用 SLP 服务:
esxcli network firewall ruleset set -r CIMSLP -e 0
(3)要使此更改在重新引导后仍然有效,请执行以下操作:
chkconfig slpd off
(4)检查重新引导后此更改是否仍然有效:
chkconfig --list | grep slpd
该命令会显示slpd off,如图5所示。
图5 禁用slp服务
要移除上述权宜措施,请执行以下步骤:
(1)运行以下命令以启用 SLP 服务的规则集:
esxcli network firewall ruleset set -r CIMSLP -e 1
(2)运行以下命令以更改 slpd 服务的当前启动信息:
chkconfig slpd on
(3)运行以下命令以检查运行上述步骤(步骤 2)后更改是否有效:
chkconfig --list | grep slpd
执行该命令后会显示slpd on。
(4)运行以下命令以启动 SLP 服务:
/etc/init.d/slpd start
如图6所示。
图6 启用slp服务
4 升级ESXi补丁以解决
下面分别介绍ESXi 7.0、6.7和6.5的升级。3个不同版本升级类似。
4.1 启动ssh服务
如果使用命令行升级ESXi,可以使用xshell以ssh方式登录到ESXi。默认情况下,ESXi主机SSH服务是禁用的,需要管理员手动打开。
(1)当ESXi受vCenter Server管理时,在vCenter Server中将ESXi主机置于维护模式时,该ESXi主机上的虚拟机会迁移到集群中其他ESXi主机上。如果ESXi是单机使用,没有加入到集群中,在将ESXi置于维护模式时,需要将该主机上所有正在运行的虚拟机暂时关机。等升级完成后,退出维护模式后,再打开虚拟机的电源。
(2)ESXi的ssh服务默认没有开启,如果需要开启ssh服务,使用浏览器登录到ESXi主机,在“操作”菜单中选择“服务→启用Secure Shell(SSH)”(如图7所示)。
图7 启动SSH服务
(3)如果ESXi受vCenter Server管理,在vCenter Server导航中选中ESXi主机,在右侧“配置”选项卡的“系统→服务”中找到SSH,单击“启动”链接,启动SSH服务,如图8所示。
图8 启动SSH服务
(4)当主机升级(管理配置)完成后,为了安全原因,应停止SSH服务。
4.2 ESXi 7.0升级
要为ESXi安装相应版本的补丁步骤如下。在本节的示例中,将把图2中ESXi 7.0-15843807版本,升级到ESXi 7.0-20497097。
(1)从VMware产品补丁程序(https://customerconnect.vmware.com/cn/patch),下载当前ESXi 7.0版本的补丁程序,文件名称为VMware-ESXi-7.0U3j-21053776-depot.zip,大小为361MB。
(2)将下载的VMware-ESXi-7.0U3j-21053776-depot.zip文件上传到ESXi主机本地存储根目录。在本节中,ESXi本地存储的名称为datastore1。
(3)使用ssh登录到ESXi主机,执行vmware -vl查看当前ESXi版本。列出上传的ESXi安装包中的配置文件名,然后将主机置于维护模式,相关命令和显示如图9所示。
图9
【说明】大多数情况下,ESXi安装包中会包括2个配置文件名,这2个配置文件区别是一个包含了新版本的VMware Tools(后缀名为-standard),另一个不带VMware Tools(后缀名为-no-tools)。管理员可以根据需要进行安装。
从图9可以看到,当前ESXi版本号为VMware ESXi 7.0.0 build-15843807,安装包VMware-ESXi-7.0U3j-21053776-depot.zip中的配置文件名称为ESXi-7.0U3j-21053776-standard和ESXi-7.0U3j-21053776-no-tools。选择ESXi-7.0U3j-21053776-standard用于升级,命令如下。
esxcli software profile update -d="/vmfs/volumes/datastore1/VMware-ESXi-7.0U3j-21053776-depot.zip" -p ESXi-7.0U3j-21053776-standard
升级完成后,将显示如下的信息:
Update Result
Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
Reboot Required: true
同时还会显示安装了VIB包信息。
(4)执行reboot重启ESXi。再次进入系统后,使用ssh登录到ESXi主机,执行esxcli system maintenanceMode set --enable false退出维护模式,执行vmware -vl查看升级后的版本。如图10所示。
图10
4.3 ESXi 6.7升级
如果有的zip升级包有常规映像配置文件和重要映像配置文件,需要一一安装。在当前的案例中,要升级的ESXi的版本号为6.7.0-8169922。
(1)将ESXi 6.7的最新升级包ESXi670-202210001.zip上传到ESXi主机datastore1的根目录下。执行如下命令。
esxcli software sources profile list -d="/vmfs/volumes/datastore1/ESXi670-202210001.zip"
如图11所示。
图11 列出配置文件
(2)升级包中包括常规映像配置文件和重要映像配置文件,执行以下命令一一安装。
esxcli software profile update -d="/vmfs/volumes/datastore1/ESXi670-202210001.zip" -p ESXi-6.7.0-20221004001-standard
esxcli software profile update -d="/vmfs/volumes/datastore1/ESXi670-202210001.zip" -p ESXi-6.7.0-20221001001s-standard
(3)升级完成后重新启动。再次进入系统后,可以看到ESXi的版本号为6.7.0 Update 3 (Build 20497097),如图12所示。
图12 升级完成
4.3 ESXi 6.5升级出错原因和解决办法
对于ESXi 6.5的升级,可以直接安装升级文件,命令格式如下。
esxcli software vib update --depot=/path_to_vib_ZIP/ZIP_file_name.zip
ESXi 6.5 的升级方式与ESXi 6.7、7.0相同。但是,在通过 esxcli 将 ESXi 6.5.U2 或更早版本升级到 ESXi 6.5 U3或ESXi 7.0 及更高版本时,会看到以下错误:
Could not find a trusted signer.
例如,执行如下命令升级ESXi 6.5.0 build-5969303到6.5 U3的版本时出现如下错误。
esxcli software vib install -d="/vmfs/volumes/datastore1/ESXi650-202210001.zip"
[InstallationError]
('VMware_bootbank_vsanhealth_6.5.0-3.195.20330361', 'Could not find a trusted signer.')
vibs = VMware_bootbank_vsanhealth_6.5.0-3.195.20330361
如图13所示。
图13 升级失败
对 ESXi 6.5.U2 或更早版本使用基于 VUM 的方式升级到 ESXi 7.0 及更高版本,会看到以下错误:
Cannot deploy host upgrade agent.
出现这种升级错误的版本如下:
起始版本:6.0 GA(内部版本:2494585)至 6.0 ESXi600-201807001 之前(内部版本:9239799)
或6.5 GA(内部版本:4564106)至 6.5 U2 之前(内部版本:8294253)
升级至:ESXi 6.5或ESXi 6.7
出现这种错误的原因是,VMware 在 2018 年 ESXi 引入了新证书,用于信任存储的 VIB 签名,自此开始对旧证书进行过渡(该证书在 2019 年 12 月 31 日到期)。运行在此过渡期前发布的版本的 ESXi 主机仅接受 VIB 签名验证的旧证书。由于此过渡期现已完成,新版本的 VIB 签名在运行过渡期前发布的 ESXi 版本的主机上不受信任,将会发生升级或安装失败。
在为此到期事件进行准备时,VMware建议所有客户将现有的 ESXi 主机至少升级到 2018 年 3 月之后发布的、在信任存储中具有新签名证书的内部版本(如下所示)。这样做可防止由于签名证书不受信任而导致未来的安装和升级失败。
- 6.0 ESXi600-201807001 (内部版本:9239799)或更高版本
- 6.5 U2 (内部版本:8294253)或更高版本
- 6.7 GA (内部版本:8169922)或更高版本。
针对本案例,可以先将ESXi 6.5.0-5969303升级到6.5 U2,重启之后,再升级到最新版本。
(1)上传ESXi 6.5 U2升级补丁到ESXi本地存储datastore1,本示例中升级文件名称为update-from-esxi6.5-6.5_update02.zip,执行如下命令升级(如图14所示)。
esxcli software vib install -d="/vmfs/volumes/datastore1/update-from-esxi6.5-6.5_update02.zip"
图14 升级到ESXi 6.5 U2
(2)升级完成后重启服务器,再次进入系统后,将ESXi升级到最新版本。
查看升级后的版本为,ESXi 6.5.0 Update 2 (Build 8294253),执行如下命令升级到最新版本。
esxcli software vib install -d="/vmfs/volumes/datastore1/ESXi650-202210001.zip"
如图15所示。升级完成后重新启动。
图15 升级到最新版本
(3)升级完成后查看ESXi的版本,当前为ESXi 6.5.0-20502893,如图16所示。
图16 升级到6.5 U3
【说明】本示例使用了install参数,也可以使用update参数。命令如下。
esxcli software vib update -d="/vmfs/volumes/datastore1/update-from-esxi6.5-6.5_update02.zip"
esxcli software vib update -d="/vmfs/volumes/datastore1/ESXi650-202210001.zip"
使用ESXi的zip升级包,也支持跨版本的升级,但要符合ESXi的升级路径。通常情况下,ESXi最多支持跨2个版本升级。例如可以从ESXi 6.5直接升级到7.0,支持将ESXi 6.7直接升级到8.0,但不支持将ESXi 6.5直接升级到8.0。要将ESXi 6.5升级到8.0,需要先升级到6.7或7.0,再升级到8.0。
如图17所示,这是从ESXi 6.5 U2升级到7.0 U3的截图。
图17 从ESXi 6.5 U2升级到7.0
【说明】要升级到ESXi 7.0或8.0,ESXi 7.0和8.0需要至少32GB的永久存储,ESXi主机至少要有8GB的物理内存。
这篇文章发表在《网络安全和信息化》2023年第5期,第151~153页。发表时有删减。
标签:OpenSLP,ESXi,7.0,升级,6.5,版本,VMware From: https://blog.51cto.com/wangchunhai/7528395