跳转到主内容

在 AIQUM 9.18 中检测到易受攻击的 undertow 版本,导致 CPU 使用率过高和 GUI 无响应

Views:
1
Visibility:
Public
Votes:
0
Category:
not set
Specialty:
not set
Last Updated:

适用于

  • Active IQ Unified Manager (AIQUM) 9.18
  • RHEL/OVA/Windows
  • CVE-2023-1108

问题

升级到 AIQUM 9.18P2 后,可能会出现以下症状:

  • AIQUM Java/JBoss 进程上的 CPU 使用率过高
  • 单个 Undertow 工作线程(例如 default I/O-2)持续消耗约 100% 的一个 CPU 核心
  • AIQUM Web GUI 速度较慢或部分无响应
  • 该情况不会自行解决,可能需要重新启动服务才能恢复
  • 该问题可能在升级到 AIQUM 9.18P2D2 后出现
  • 该问题可能在 HTTPS/TLS 连接异常终止时触发(例如握手期间发生 TCP 重置),这可能在监控、负载均衡器运行状况检查或安全扫描活动期间发生

在 Linux 上,可以通过以下方式确认高 CPU:

top -H -p <jboss_pid>

示例输出:

default I/O-2 R 99.7 ...

线程转储可能显示类似于以下内容的堆栈:

sun.security.ssl.SSLEngineImpl.wrap at io.undertow.protocols.ssl.SslConduit.wrapAndFlip(SslConduit.java:1009) at io.undertow.protocols.ssl.SslConduit.doWrap(SslConduit.java:940) at io.undertow.protocols.ssl.SslConduit.doHandshake(SslConduit.java:673) at io.undertow.protocols.ssl.SslConduit$5$1.run(SslConduit.java:1153)

配置 Undertow 读取、写入或请求解析超时无法解决此问题,因为线程正在用户空间 SSL 代码中主动轮询,而不是等待套接字 I/O。

原因

在 Active IQ Unified Manager 9.18 中,使用了旧版本的 Undertow,该版本易受 CVE-2023-1108 攻击。

  • 受影响的 JAR:undertow-core-2.3.0.Final.jar(与 WildFly 27.0.1.Final 捆绑)
  • 机制:SslConduit.wrapAndFlip 当 TLS 入站端意外关闭时,可能进入无限循环,导致持续的 CPU 消耗(拒绝服务)。
  • 修复于:undertow-core-2.3.5.Final.jar (UNDERTOW-2239)

此问题与之前记录的 AIQUM 9.13 和 9.14 的 undertow 问题相关,但影响的是 AIQUM 9.18 附带的 2.3.x undertow 版本线。

此问题不会直接生成任何可识别的日志消息;但是,线程转储和 CPU 分析通常显示受影响的线程在 io.undertow.protocols.ssl.SslConduit.wrapAndFlip 中持续运行。

解决方案

请按照以下步骤解决此问题。

警告

  • 在开始此过程之前,请拍摄 VM 计算机的冷快照。
  • 在 NetApp 技术支持的监督下执行以下步骤。

重要提示——实验程序

  • 此解决方法是实验性的,且未经 NetApp 正式认证,适用于 AIQUM 9.18。
  • 它已在至少一个客户环境中经过验证,但 尚未完成完整的产品回归测试。
  • NetApp 不保证超出特定 CVE 修复范围的第三方 jar 替换的兼容性。
  • 在任何 AIQUM 升级或替换 undertow jar 的补丁之后,请重新应用。
  • 如果发生意外行为,请恢复到已备份的原始 jar 并重新启动服务。

Windows:

  1. 从 Maven 存储库下载 undertow-core-2.3.5.Final.jar
    https://repo1.maven.org/maven2/io/undertow/undertow-core/2.3.5.Final/undertow-core-2.3.5.Final.jar
    验证文件校验和是否匹配:
    https://repo1.maven.org/maven2/io/undertow/undertow-core/2.3.5.Final/undertow-core-2.3.5.Final.jar.sha1
  2. 停止 UM 服务。请参阅:如何正确重新启动在 Microsoft Windows 上运行的 ActiveIQ Unified Manager 服务
  3. 备份原始 jar:
    C:\Program Files\NetApp\essentials\jboss\modules\system\layers\base\io\undertow\core\main\undertow-core-2.3.0.Final.jar
  4. 将步骤 1 中下载的 undertow-core-2.3.5.Final.jar 复制到:
    C:\Program Files\NetApp\essentials\jboss\modules\system\layers\base\io\undertow\core\main\
    确保新复制的 jar 的权限与原始 jar 的权限相同。
  5. 在以下位置编辑并将 jar 版本从 2.3.0 更改为 2.3.5
    C:\Program Files\NetApp\essentials\jboss\modules\system\layers\base\io\undertow\core\main\module.xml
  6. 删除原始 jar:
    C:\Program Files\NetApp\essentials\jboss\modules\system\layers\base\io\undertow\core\main\undertow-core-2.3.0.Final.jar
  7. 启动 UM 服务。

Linux/vApp:

  1. 从 Maven 存储库下载 undertow-core-2.3.5.Final.jar
    https://repo1.maven.org/maven2/io/undertow/undertow-core/2.3.5.Final/undertow-core-2.3.5.Final.jar
    验证文件校验和是否匹配:
    https://repo1.maven.org/maven2/io/undertow/undertow-core/2.3.5.Final/undertow-core-2.3.5.Final.jar.sha1
  2. undertow-core-2.3.5.Final.jar 复制到 AIQUM 主机上的 /jail/upload
    OVA 版本将需要使用 SCP 或 WinSCP 等应用程序:
    scp undertow-core-2.3.5.Final.jar <AIQUM_username>@<AIQUM_IP>:/jail/upload/
  3. 访问 AIQUM 命令行。请参见:如何访问 Active IQ Unified Manager 虚拟机 OVA DIAG shell
  4. 停止 UM 服务。请参见:如何在 RHEL/CentOS/OVA 中正确停止/启动 Unified Manager 服务
  5. 备份原始 jar:
    /opt/netapp/essentials/jboss/modules/system/layers/base/io/undertow/core/main/undertow-core-2.3.0.Final.jar
  6. 将步骤 1 中下载的 undertow-core-2.3.5.Final.jar 复制到 /opt/netapp/essentials/jboss/modules/system/layers/base/io/undertow/core/main/,并确保新复制的 jar 的权限与原始 jar 相同。
  7. /opt/netapp/essentials/jboss/modules/system/layers/base/io/undertow/core/main/module.xml 中编辑并将 jar 版本从 2.3.0 更改为 2.3.5
    修改前:
    <resource-root path="undertow-core-2.3.0.Final.jar"/>
    修改后:
    <resource-root path="undertow-core-2.3.5.Final.jar"/>
  8. 删除原始 jar:
    /opt/netapp/essentials/jboss/modules/system/layers/base/io/undertow/core/main/undertow-core-2.3.0.Final.jar
  9. 启动 UM 服务。
  10. 要确认正在使用 undertow-core-2.3.5.Final.jar,请运行:
    grep Undertow /var/log/ocie/server.log
    预期输出类似于:
    WFLYUT0003: Undertow 2.3.5.Final starting

合作伙伴备注

合作伙伴备注文本

追加信息

此问题是由 Undertow 上的漏洞引起的,已通过其更新版本修复。

此问题与 AIQUM 9.13 和 9.14 记录的 undertow CVE 有关。请参阅:

仅配置 Undertow 读/写超时并不能解决此问题,因为受影响的线程正在用户空间 SSL 代码中旋转,而不是等待套接字 I/O。

注意:即使在不使用漏洞扫描程序的环境中,类似的访问模式也可能导致此问题。因此,没有漏洞扫描程序并不意味着环境不受此问题的影响。

内部参考

AIQUM 9.18 undertow CVE-2023-1108 的实验性解决方法。

客户案例 2010765728 (DZ BANK AG)验证了从 undertow-core-2.3.5.Finalundertow-core-2.3.0.Final.jar 的类替换。完整的 jar 替换已记录为支持解决方法,等待工程资格认证。

相关缺陷:CAIQUM-9250(P2,Jaspal Singh)。

相关:CAIQUM-5933(AIQUM 9.13/9.14 中的相同 CVE,在 9.16 中修复)。

Sign in to view the entire content of this KB article.

New to NetApp?

Learn more about our award-winning Support

NetApp provides no representations or warranties regarding the accuracy or reliability or serviceability of any information or recommendations provided in this publication or with respect to any results that may be obtained by the use of the information or observance of any recommendations provided herein. The information in this document is distributed AS IS and the use of this information or the implementation of any recommendations or techniques herein is a customer's responsibility and depends on the customer's ability to evaluate and integrate them into the customer's operational environment. This document and the information contained herein may be used solely in connection with the NetApp products discussed in this document.
  • 这篇文章对您有帮助吗?