在 AIQUM 9.18 中检测到易受攻击的 undertow 版本,导致 CPU 使用率过高和 GUI 无响应
适用于
- 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:
- 从 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 - 停止 UM 服务。请参阅:如何正确重新启动在 Microsoft Windows 上运行的 ActiveIQ Unified Manager 服务。
- 备份原始 jar:
C:\Program Files\NetApp\essentials\jboss\modules\system\layers\base\io\undertow\core\main\undertow-core-2.3.0.Final.jar - 将步骤 1 中下载的
undertow-core-2.3.5.Final.jar复制到:C:\Program Files\NetApp\essentials\jboss\modules\system\layers\base\io\undertow\core\main\
确保新复制的 jar 的权限与原始 jar 的权限相同。 - 在以下位置编辑并将 jar 版本从 2.3.0 更改为 2.3.5:
C:\Program Files\NetApp\essentials\jboss\modules\system\layers\base\io\undertow\core\main\module.xml - 删除原始 jar:
C:\Program Files\NetApp\essentials\jboss\modules\system\layers\base\io\undertow\core\main\undertow-core-2.3.0.Final.jar - 启动 UM 服务。
Linux/vApp:
- 从 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 - 将
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/
- 访问 AIQUM 命令行。请参见:如何访问 Active IQ Unified Manager 虚拟机 OVA DIAG shell。
- 停止 UM 服务。请参见:如何在 RHEL/CentOS/OVA 中正确停止/启动 Unified Manager 服务。
- 备份原始 jar:
/opt/netapp/essentials/jboss/modules/system/layers/base/io/undertow/core/main/undertow-core-2.3.0.Final.jar - 将步骤 1 中下载的
undertow-core-2.3.5.Final.jar复制到/opt/netapp/essentials/jboss/modules/system/layers/base/io/undertow/core/main/,并确保新复制的 jar 的权限与原始 jar 相同。 - 在
/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"/> - 删除原始 jar:
/opt/netapp/essentials/jboss/modules/system/layers/base/io/undertow/core/main/undertow-core-2.3.0.Final.jar - 启动 UM 服务。
- 要确认正在使用
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 有关。请参阅:
- 在 AIQUM 9.13 和 9.14 中检测到易受攻击的 undertow 版本,导致高 CPU 和采集问题
- Active IQ Unified Manager 高 CPU 使用率 - 解决方案指南
- 漏洞扫描仪和 Active IQ Unified Manager 9.13 及更高版本
仅配置 Undertow 读/写超时并不能解决此问题,因为受影响的线程正在用户空间 SSL 代码中旋转,而不是等待套接字 I/O。
注意:即使在不使用漏洞扫描程序的环境中,类似的访问模式也可能导致此问题。因此,没有漏洞扫描程序并不意味着环境不受此问题的影响。
内部参考
AIQUM 9.18 undertow CVE-2023-1108 的实验性解决方法。
客户案例 2010765728 (DZ BANK AG)验证了从 undertow-core-2.3.5.Final 到 undertow-core-2.3.0.Final.jar 的类替换。完整的 jar 替换已记录为支持解决方法,等待工程资格认证。
相关缺陷:CAIQUM-9250(P2,Jaspal Singh)。
相关:CAIQUM-5933(AIQUM 9.13/9.14 中的相同 CVE,在 9.16 中修复)。