TLSstorm漏洞-可远程控制APC UPS电源设备

TLSstorm漏洞-可远程控制APC UPS电源设备

在 APC Smart-UPS 设备中发现的三个严重漏洞可让攻击者远程操纵数百万企业设备的电源。

Armis 在 APC Smart-UPS 设备中发现了一组三个严重漏洞,这些漏洞可让远程攻击者接管 Smart-UPS 设备并对物理设备和 IT 资产进行极端攻击。不间断电源 (UPS) 设备为关键任务资产提供应急备用电源,可在数据中心、工业设施、医院等场所找到。

APC 是施耐德电气的子公司,是 UPS 设备的领先供应商之一,在全球销售了超过 2000 万台设备。如果被利用,这些被称为 TLStorm 的漏洞允许完全远程接管 Smart-UPS 设备并能够进行极端的网络物理攻击。根据 Armis 的数据,近 10 家公司中有 8 家暴露于 TLSstorm 漏洞。这篇博客文章提供了对这项研究及其影响的高级概述。

为什么这项研究很重要?

Armis 主动研究各种资产,以帮助安全领导者保护其组织免受新威胁,包括针对 IT 资产和网络物理系统 (CPS) 的威胁。作为这项研究的一部分,我们调查了 APC Smart-UPS 设备以及它们与各自的远程管理和监控服务进行通信的方式。

攻击者可以通过互联网远程接管设备。

最新的 APC Smart-UPS 型号通过云连接进行控制。Armis 研究人员发现,利用 TLStorm 漏洞的攻击者可以通过 Internet 远程接管设备,而无需任何用户交互或攻击迹象。因此,攻击者可以对设备执行远程代码执行 (RCE) 攻击,进而可以用来改变 UPS 的操作,从而对设备本身或与其连接的其他资产造成物理损坏。

最近的全球事件凸显了 TLSstorm 的关键性质。

过去曾发生过针对电网及其内部设备的攻击,其中最著名的是2015 年发生的乌克兰电网攻击——其中UPS 设备(以及许多其他类型的设备)、已被远程黑客入侵,导致大规模停电。近期的俄乌冲突事件引发了美国官员的担忧,即美国电网将成为俄罗斯通过网络攻击的目标。TLSStorm 漏洞的发现突显了企业环境中负责电源可靠性的设备的易变性,并强调需要采取行动并保护此类设备免受恶意攻击。

TLSstorm漏洞-可远程控制APC UPS电源设备

不间断电源 (UPS)

不间断电源 (UPS) 设备为关键任务资产提供紧急备用电源。在电力中断可能导致伤害、业务停机或数据丢失的情况下,UPS 设备有助于确保关键技术的高可用性:

  • 服务器机房
  • 医疗设施
  • OT/ICS 环境
  • 住宅
TLSstorm漏洞-可远程控制APC UPS电源设备

有哪些漏洞?

这组发现的漏洞包括云连接 Smart-UPS 设备使用的 TLS 实施中的两个严重漏洞,以及第三个严重漏洞,即设计缺陷,其中所有 Smart-UPS 设备的固件升级都没有正确签名和验证。

其中两个漏洞涉及 UPS 和施耐德电气云之间的 TLS 连接。支持 SmartConnect 功能的设备会在启动时或云连接暂时丢失时自动建立 TLS 连接。 

  • CVE-2022-22806 – TLS 身份验证绕过:TLS 握手中的状态混淆导致身份验证绕过,导致使用网络固件升级进行远程代码执行 (RCE)
  • CVE-2022-22805 – TLS 缓冲区溢出:数据包重组 (RCE) 中的内存损坏错误。

这些漏洞可以通过未经身份验证的网络数据包触发,无需任何用户交互(ZeroClick 攻击)。

第三个漏洞是设计缺陷,受影响设备上的固件更新未以安全方式进行加密签名。这意味着攻击者可以制作恶意固件并使用各种路径(包括 Internet、LAN 或 USB 拇指驱动器)进行安装。这可以让攻击者在此类 UPS 设备上建立持久的持久性,这些设备可以用作网络中的据点,可以从中进行额外的攻击。 

  • CVE-2022-0715 – 可通过网络更新的未签名固件升级 (RCE)。

滥用固件升级机制中的缺陷正在成为 APT 的标准做法,正如最近在对 Cyclops Blink 恶意软件的分析中所详述的那样,嵌入式设备固件的不当签名是各种嵌入式系统中反复出现的缺陷。Armis 之前在 Swisslog PTS 系统中发现的漏洞 ( PwnedPiper , CVE-2021-37160) 是类似漏洞的结果。

Armis 于 2021 年 10 月 31 日向施耐德电气披露了这些漏洞。此后,Armis 与施耐德电气合作创建并测试了一个补丁,该补丁现已普遍可用。

有哪些风险?

TLSstorm漏洞-可远程控制APC UPS电源设备

UPS 设备调节高压电源的事实,加上它们的互联网连接,使它们成为高价值的网络物理目标。在电视剧《机器人先生》中,不良演员使用 APC UPS 设备引发爆炸。然而,这不再是虚构的攻击。通过在实验室中利用这些漏洞,Armis 研究人员能够远程点燃 Smart-UPS 设备并使其真正化为乌有。

TLSstorm漏洞-可远程控制APC UPS电源设备

由于 TLS 攻击向量可以源自 Internet,因此这些漏洞可以充当企业内部网络的网关。不良行为者可以使用 TLS 状态混淆将自己标识为施耐德电气云,并收集有关公司防火墙后面的 UPS 的信息。然后,他们可以远程更新 UPS 固件,并将 UPS 用作勒索软件攻击或任何其他类型恶意操作的入口点。

TLSstorm漏洞-可远程控制APC UPS电源设备

针对网络物理系统的攻击呈上升趋势

网络物理系统 (CPS) 是计算机化系统,可操作具有真实世界交互的设备,例如自动门、PLC、MRI 机器和智能车辆。物联网和 CPS 设备的日益普及为不良行为者创造了大量新目标。 

基于网络的攻击对现实世界造成破坏的破坏性影响不再是理论上的。2014 年,一家德国钢铁厂遭到攻击,黑客侵入了该厂的网络并篡改了高炉停机机制。这次袭击导致了巨大的爆炸,幸运的是没有造成任何人员伤亡。

为了说明 TLStorm 攻击的网络物理效应,Armis 研究人员能够在没有用户交互的情况下通过网络破坏 Smart-UPS:

TLSStorm:3 个漏洞。数以百万计的设备处于危险之中。

受影响的设备

SmartConnect 系列

产品受影响的版本CVE
SMT系列SMT 系列 ID=1015:UPS 04.5 及之前版本CVE-2022-22805
CVE-2022-22806
CVE-2022-0715
SMC系列SMC 系列 ID=1018:UPS 04.2 及更早版本CVE-2022-22805
CVE-2022-22806
CVE-2022-0715
SMTL系列SMTL 系列 ID=1026:UPS 02.9 及之前版本CVE-2022-22805
CVE-2022-22806
CVE-2022-0715
SCL系列SCL 系列 ID=1029:UPS 02.5 及之前
SCL 系列 ID=1030:UPS 02.5 及之前
SCL 系列 ID=1036:UPS 02.5 及之前 
SCL 系列 ID=1037:UPS 03.1 及之前
CVE-2022-22805
CVE-2022-22806
CVE-2022-0715
SMX 系列SMX 系列 ID=1031:UPS 03.1 及更早版本CVE-2022-22805
CVE-2022-22806
CVE-2022-0715

Smart-UPS 系列

产品受影响的版本CVE
SMT系列SMT 系列 ID=18:UPS 09.8 和之前
SMT 系列 ID=1040:UPS 01.2 和之前
SMT 系列 ID=1031:UPS 03.1 和之前
CVE-2022-0715
SMC系列SMC 系列 ID=1005:UPS 14.1 和之前
SMC 系列 ID=1007:UPS 11.0 和之前
SMC 系列 ID=1041:UPS 01.1 和之前
CVE-2022-0715
SCL系列SCL 系列 ID=1030:UPS 02.5 和之前
SCL 系列 ID=1036:UPS 02.5 和之前
CVE-2022-0715
SMX 系列SMX 系列 ID=20:UPS 10.2 和之前
SMX 系列 ID=23:UPS 07.0 和之前
CVE-2022-0715
SRT系列SRT 系列 ID=1010/1019/1025:UPS 08.3 和之前
SRT 系列 ID=1024:UPS 01.0 和之前
SRT 系列 ID=1020:UPS 10.4 和之前
SRT 系列 ID=1021:UPS 12.2 和之前
SRT 系列 ID=1001/ 1013:UPS 05.1 和
更早版本 SRT 系列 ID=1002/1014:UPSa05.2 和更早版本
CVE-2022-0715

技术概述

如上所述,TLSStorm 是一组三个严重漏洞。一是几乎所有 APC Smart-UPS 设备的固件签名。另外两个与具有“SmartConnect”功能的 Smart-UPS 设备的 TLS 实施有关,该功能可自动将设备连接到施耐德电气管理云。

固件升级漏洞 (CVE-2022-0715)

通常的做法是对固件文件进行加密签名并在固件更新期间检查签名。APC Smart-UPS 固件使用对称加密进行加密,但未进行加密签名

TLSstorm漏洞-可远程控制APC UPS电源设备

我们的研究人员能够利用以下关键设计缺陷来制造被 Smart-UPS 接受为官方有效固件的恶意固件:

  • 相同型号的 Smart-UPS 设备的所有固件都使用相同的加密密钥。
  • 对称加密:加密和解密使用相同的密钥,可以从物理设备中提取密钥。
  • 不存在签名机制。

这些缺陷的结合使攻击者能够通过网络使用定制的恶意固件“升级”Smart-UPS 设备。

固件升级过程取决于 UPS 设备的具体型号:

  • 具有 SmartConnect 云连接功能的最新 Smart-UPS 设备可以通过 Internet 从云管理控制台进行升级。
  • 可以通过本地网络更新使用网络管理卡 (NMC) 的旧 Smart-UPS 设备。
  • 大多数 Smart-UPS 设备也可以使用 USB 驱动器进行升级。

TLS 漏洞(CVE-2022-22805 和 CVE-2022-22806)

由于软件开发人员无法每次编写新代码时都重新发明轮子,因此开发人员必须依赖第三方代码库进行软件开发。在 Log4j2 的情况下,几乎每个库用户都在不知不觉中继承了远程代码执行漏洞 ( Log4Shell )。

这两个 TLS 漏洞的根本原因是对来自 Smart-UPS 和施耐德电气云的 TLS 连接中的 TLS 错误的错误处理不当。APC 使用Mocana nanoSSL 作为负责 TLS 通信的库。图书馆手册明确指出图书馆用户在出现 TLS 错误时应关闭连接。但是,在此库的 APC 使用中,一些错误被忽略,使连接保持打开状态,但处于该库无法处理的状态。

TLSstorm漏洞-可远程控制APC UPS电源设备

智能连接

最新一代的 Smart-UPS 型号实现了一项称为 SmartConnect 的功能,这是一个专用以太网端口,设备将通过该端口连接到云服务并允许对设备进行远程管理。

TLS 身份验证绕过 (CVE-2022-22806)

忽略 nanoSSL 库错误会导致 UPS 将 TLS 密钥缓存在其未初始化状态。当攻击者使用 TLS 恢复功能时,从缓存中获取未初始化的密钥(全为零),攻击者可以与设备进行通信,就好像它是真正的施耐德电气服务器一样。作为看似经过验证的服务器,攻击者可以发出固件升级命令并通过 UPS 设备远程执行代码。攻击流程如下图所示。左侧是正常的 TLS 会话设置和恢复,右侧是仅由于错误处理不当而可能发生的利用握手:

TLSstorm漏洞-可远程控制APC UPS电源设备

TLS 重组缓冲区溢出 (CVE-2022-22805)

同样的根本原因——忽略 nanoSSL 库错误,会导致重新组装 TLS 数据包时出现内存漏洞。TLS 重组功能允许 TLS 记录分段。记录被逐块组装,直到收到完整的记录。攻击者可以利用被忽略的 nanoSSL 库错误并触发可导致远程代码执行的预身份验证堆溢出条件。

如何保护您的 UPS 设备?

您可以采取一些步骤来最大程度地降低攻击风险。Armis 建议使用所有三种缓解措施,而不仅仅是更新设备。

  1. 安装 Schneider Electric 网站上提供的修补程序。
  2. 如果您使用 NMC,请更改默认 NMC 密码(“apc”)并安装公开签名的 SSL 证书,这样您网络上的攻击者将无法截获新密码。要进一步限制 NMC 的攻击面,请参阅 Schneider Electric Security Handbook for NMC 2NMC 3
  3. 部署访问控制列表 (ACL),其中仅允许 UPS 设备通过加密通信与一小部分管理设备和施耐德电气云进行通信。

Armis 如何提供帮助?

Armis 客户可以利用 Armis 平台:

  1. 快速发现所有需要修补或保护免受攻击尝试的 Smart-UPS 设备,以计划和优先考虑缓解工作。Armis 不仅可以检测网络上这些设备的存在,还可以提供有关设备所有者和物理位置的宝贵数据,以加快缓解工作。
  2. 通过与您的 IT 和安全技术堆栈集成,实时检测利用尝试并协调响应。
  3. 继续跟踪“仍有待修补”资产的长尾,以及可能易受攻击的新资产。确保这些资产在任何时候都不会成为攻击尝试的目标,并且不会对您的网络构成威胁。

Armis 平台提供所需的可见性,以确保您的所有资产(包括传统安全解决方案未涵盖的网络物理资产)持续受到最新威胁的保护。

最后的笔记

与许多其他数字基础设施设备一样,UPS 设备经常被安装和遗忘。由于这些设备与核心业务系统连接到相同的内部网络,因此利用尝试可能会产生严重影响。 

对于安全专业人员来说,拥有所有资产的完​​整可见性以及监控其行为的能力以识别异常和/或利用尝试是很重要的。然而,传统的安全解决方案并不涵盖这些资产。因此,它们仍然“看不见”,从而使组织面临重大风险。

研究报告

Armis 专家将在以下虚拟和面对面活动中讨论 TLSstorm 研究:

from

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注