王國慶 发表于 2024-9-7 14:07:06

紧张信息:关于 Oracle RAC 环境下 Apache Tomcat 漏洞(CVE-2024-21733)

https://img-blog.csdnimg.cn/img_convert/4eedd30b2ab796d61e1bdfa48b434fe0.gif
作者 | JiekeXu

来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)

如需转载请接洽授权 | (个人微信 ID:JiekeXu_DBA)
   大家好,我是 JiekeXu,江湖人称“强哥”,荣获 Oracle ACE Pro 称呼,墨天轮 MVP,墨天轮年度“墨力之星”,拥有 Oracle 11g OCP/OCM 认证,MySQL 5.7/8.0 OCP 认证以及 PCA、PCTA、OBCA、OGCA、KCP 等众多国产数据库认证证书,今天和大家一起来看看关于 Oracle RAC 环境下 Apache Tomcat 漏洞(CVE-2024-21733)的办理方案,欢迎点击最上方蓝字“JiekeXu DBA之路”关注我的微信公众号,然后点击右上方三个点“设为星标”顶,更多干货文章才能第一时间推送,谢谢!
    前  言

Apache Tomcat® 软件是一个开源实现 Jakarta Servlet、Jakarta Pages、Jakarta Expression Language、Jakarta WebSocket、Jakarta Annotations 和 Jakarta Authentication 规范。这些规格是 Jakarta EE 平台的一部分。
Jakarta EE 平台是 Java EE 平台的演进。Tomcat 10 及以后的版本实现了作为 Jakarta EE 一部分开发的规范。Tomcat 9 和更早版本的实现规范是作为 Java EE 的一部分开发的。现在,Apache Tomcat 项目自豪地宣布发布版本 10.1.28,此版本属于 Jakarta EE 10 平台。

--download
https://tomcat.apache.org/index.html


--官方文档:
https://tomcat.apache.org/security-9.html
https://tomcat.apache.org/security-8.html
--漏洞报告:
https://hackerone.com/reports/2327341
https://lists.apache.org/thread/h9bjqdd0odj6lhs2o96qgowcc6hb0cfzhttps://img-blog.csdnimg.cn/img_convert/9ee245a90d1081bd84b0d84bd188c286.png
CVE-2024-21733

漏洞 Apache Tomcat - 信息泄露于 2024 年 1 月 19 日发布。

漏洞形貌

当 Web 服务器未能正确处理 POST 请求的内容长度时,大概会导致客户端-服务器差别步(CSD)漏洞。攻击者可以利用这一漏洞强制受害者的浏览器与网站的毗连失去同步,进而导致敏感数据在服务器和/或客户端毗连中被偷取。可以通过构造特定请求,在异常页面中输出其他请求的 body 数据,修复版本中通过增加 finally 代码块,保证默认会重设缓冲区 position 和 limit 到一致的状态,从而造成信息泄露。

受影响的版本

Apache Tomcat 9.0.0-M11 到 9.0.43
Apache Tomcat 8.5.7 到 8.5.63
形貌:未完成的 POST 请求触发了大概包罗的错误响应,来自另一个用户的先前请求的数据。

缓解:受影响版本的用户应应用以下方法之一

缓解措施:

升级到 Apache Tomcat 9.0.44 或更高版本
升级到 Apache Tomcat 8.5.64 或更高版本https://img-blog.csdnimg.cn/img_convert/8dfe8350362af374a6d5a7d1a57017c1.png

Oracle RAC 中遇到的 Tomcat 漏洞问题
在 Oracle RAC 12c R2 及以上的版本中,GI home 目次下使用了 Tomcat(grid 用户:$ORACLE_HOME/tomcat),RAC 自带的这个 tomcat 会碰到和标准的 tomcat 一样的漏洞。不过根据 GIRU 补丁自带的 tomcat RU 的版本,如果应用了 19.13 GIRU 以及更高 GIRU 自带的 TOMCAT RU 则就不受此问题影响了。因为  19.13 GIRU 的 Tomcat 版本是 8.5.69,不受影响。
JiekeXu1:/u01/app/19.0.0/grid/tomcat(+ASM1)$ tree -L 2
.
|-- conf
|   |-- catalina.policy
|   |-- catalina.properties
|   |-- context.xml
|   |-- logging.properties
|   |-- server.xml
|   `-- web.xml
`-- lib
 |-- annotations-api.jar
 |-- bootstrap.jar
 |-- catalina.jar
 |-- jaspic-api.jar
 |-- memoryTrojan-agent-attach.jar
 |-- memoryTrojan-agent-core.jar
 |-- servlet-api.jar
 |-- tomcat-api.jar
 |-- tomcat-coyote.jar
 |-- tomcat-jni.jar
 |-- tomcat-juli.jar
 |-- tomcat-util-scan.jar
 `-- tomcat-util.jar

2 directories, 19 files那么怎么查看 RAC GI Home 下的 Tomcat 的版本呢?
在 $ORACLE_HOME/tomcat 的 lib 目次下有个 catalina.jar,我们将这个文件下载到当地,使用解压工具打开,里面有个 MANIFEST.MF,打开之后  Implementation-Version: 8.5.37 这个就是版本号。如下图所示,这个 8.5.37 刚好是受影响的版本。

https://img-blog.csdnimg.cn/img_convert/25e4d471745b938614bb87980ed89e68.png
8.5.37 这个版本的 Tomcat 位于 grid 的 $ORACLE_HOME/ 的一个隐藏目次(.patch_storage)下 .patch_storage/33911149_Mar_1_2022_10_00_57/files/tomcat/lib。这个是在打补丁过程中主动备份的文件,可直接删除。

JiekeXu1:/u01/app/19.0.0/grid/.patch_storage/33911149_Mar_1_2022_10_00_57/files/tomcat/lib(+ASM1)$ ll
total 3192
-rw-r--r-- 1 grid oinstall   12349 Feb92019 annotations-api.jar
-rw-r--r-- 1 grid oinstall   35060 Feb92019 bootstrap.jar
-rw-r--r-- 1 grid oinstall 1653771 Feb92019 catalina.jar
-rw-r--r-- 1 grid oinstall   26898 Feb92019 jaspic-api.jar
-rw-r--r-- 1 grid oinstall242873 Feb92019 servlet-api.jar
-rw-r--r-- 1 grid oinstall   10657 Feb92019 tomcat-api.jar
-rw-r--r-- 1 grid oinstall822219 Feb92019 tomcat-coyote.jar
-rw-r--r-- 1 grid oinstall   34742 Feb92019 tomcat-jni.jar
-rw-r--r-- 1 grid oinstall   49333 Feb92019 tomcat-juli.jar
-rw-r--r-- 1 grid oinstall210920 Feb92019 tomcat-util-scan.jar
-rw-r--r-- 1 grid oinstall145748 Feb92019 tomcat-util.jar


--解决办法
cd /u01/app/19.0.0/grid/.patch_storage/33911149_Mar_1_2022_10_00_57/files/tomcat/lib
rm -rf *


--或者直接删除 rm -rf .patch_storage 均可GIRU 与 TOMCAT 版本对应关系

根据 Oracle 原厂 SR 的回复,在 Oracle 19.13 的 GIRU 版本中已经包罗了 8.5.69 版本的 Tomcat,修复了 CVE-2024-21733 干系的漏洞,如果你的 RAC 数据库版本低于 19.13,则需要打 RU 补丁到 19.13 或更高版本的 RU补丁,注意单机 db 不受影响,只有低于 19.12 的 Grid 环境才会受影响。

19.24GIRU -TOMCAT 9.0.87
19.22GIRU -TOMCAT 8.5.96
19.21GIRU -TOMCAT 8.5.89
19.20GIRU -TOMCAT 8.5.89
19.19GIRU -TOMCAT 8.5.84
19.17GIRU -TOMCAT 8.5.82
19.16GIRU -TOMCAT 8.5.79
19.15GIRU -TOMCAT 8.5.75
19.14GIRU -TOMCAT 8.5.69
19.13GIRU -TOMCAT 8.5.69  <=== 在 19.13 这里以及更高版本修复了 CVE-2024-21733
19.12GIRU -TOMCAT 8.5.63
19.11GIRU -TOMCAT 8.5.60
19.10GIRU -TOMCAT 8.5.59
19.9GIRU-TOMCAT 8.5.57
19.8GIRU-TOMCAT 8.5.51
19.7GIRU-TOMCAT 8.5.50
19.6GIRU-TOMCAT 8.5.42
19.5GIRU-TOMCAT 8.5.37
19.4GIRU-TOMCAT 8.5.37
19.3GIRU-TOMCAT 8.5.37https://img-blog.csdnimg.cn/img_convert/bd9b72a2c7b10ea497b7f5cae9dd282a.png
办理方案

如果你的数据库 GI 版本等于大于 19.13,那么只需要删除 Grid 家目次下的隐藏文件夹 .patch_storage 下的 Tomcat 干系 jar 包,不影响 RAC 服务。
cd /u01/app/19.0.0/grid/.patch_storage/33911149_Mar_1_2022_10_00_57/files/tomcat/lib
rm -rf *如果你的数据库 GI 版本小于 19.13 则需要打 GIRU 补丁,建议打最新或次新的 19.24/19.23 补丁以办理此问题,注意 RAC 打补丁需要和谐停机窗口,滚动升级补丁。

打补丁教程可看这篇:Oracle 19c RAC RU15 补丁更新详细步调

----# 表示 root 用户,$ 表示 Oracle 用户提示符,(ASM1)$ 表示 grid 用户
----# 打补丁简要步骤如下:
# cd /u01/app/19.0.0/grid/
# mv OPatch OPatch.bak19
(ASM1)$ unzip p6880880_122010_Linux-x86-64.zip
# cp -r OPatch /u01/app/19.0.0/grid/
# chown grid:oinstall -R /u01/app/19.0.0/grid/OPatch


$ opatch version
OPatch Version: 12.2.0.1.30
# /u01/app/19.0.0/grid/OPatch/opatchauto apply /u01/backup/33859214/33803476如果你的数据库 GI 版本低于 19.13 且临时无法打补丁,那么可临时关闭 ora.qosmserver 服务。

--查看 qosmserver 状态
JiekeXu1:/home/grid(+ASM1)$ crsctl status res -t | grep -A2 qos
ora.qosmserver
      1      ONLINEONLINE       JiekeXu1             STABLE
ora.scan1.vip


JiekeXu1:/home/grid(+ASM1)$ srvctl status qosmserver
QoS Management Server is enabled.
QoS Management Server is running on node JiekeXu1


-- 使用如下命令关闭 qosmserver
srvctl stop qosmserver
srvctl disable qosmserver


-- 再次査看 qosmserver 状态
srvctl status qosmserver
crsctl stat res -t


----======================
### 回退方案:
-- 启动 gosmserver
--grid 用户


srvctl enable gosmserver
srvctl start gosmserver
srvctl status qosmserver
Crsctl stat res -t附:GI HOME 中的 Tomcat 的功能

GI Home 中的 Tomcat 用于摆设以下网格基础架构 (GI) 功能:


[*]Oracle 服务质量(QoS)管理 - GI 中的一项功能,旨在管理特定群集上的数据库工作负载。https://docs.oracle.com/en/database/oracle/oracle-database/19/atnms/oracle-database-qos-management.html#GUID-B1DF82C1-9B62-42A8-96F1-A5AC8C7DC44D
[*]Oracle Fleet Patching and Provisioning (FPP) - GI 中的一项功能,用于实现 Oracle 软件配置修补和升级的标准化和主动化。该功能的前身是 Rapid Home Provisioning (RHP)。https://docs.oracle.com/en/database/oracle/oracle-database/19/sprhp/toc.htm
[*]Oracle Memory Guard - Memory Guard 可自主收集 Oracle Real Application Clusters (Oracle RAC) 环境中每个节点的内存使用指标。
Memory Guard 主动监控集群节点,防止节点因内存不足而产生压力。Memory Guard 主动收集 Oracle RAC 环境中每个节点的内存使用指标。内存掩护从群集运行状况监控器获取信息。如果 Memory Guard 检测到某个节点内存不足,则 Memory Guard 会执行以下操纵:
防止在受影响的节点上创建新的数据库会话,在节点上以事件方式制止全部 crs 管理的服务,答应现有工作负载在节点上运行。
Memory Guard 作为一个守卫进程实现,作为 MBean 运行在由集群停当服务(CRS)管理的 J2EE 容器中。
Memory Guard 托管在 qosmserver 资源上,该资源在任何集群节点上运行,以实现高可用性。
下图为 Memory Guard 体系结构

https://img-blog.csdnimg.cn/img_convert/2c0b47de9e1f0171282ec6e1058f2a90.jpeg
集群运行状况监控器 CHM 向 Memory Guard 发送一个度量流,该流提供有关集群节点内存资源的及时信息。这些信息包括以下内容:



[*]

[*]

[*]可用内存量
[*]当前使用的内存量


获取内存资源信息后,memory Guard 会从 Oracle Clusterware 收集集群拓扑信息。Memory Guard 使用集群拓扑和内存指标来识别具有内存压力的数据库节点。当空闲内存低于某个阈值时,就认为内存有压力。

然后 Memory Guard 会以事件方式制止压力节点上由 Oracle Clusterware 管理的数据库服务。Memory Guard 在不影响已经运行的会话及其干系事件的环境下减轻了内存压力。完成后,这些进程使用的内存开始释放,并添加到节点上的可用内存池中。当 Memory Guard 检测到可用内存量超过阈值时,会重启受影响节点上的服务。

当服务在压力节点上制止时,侦听器将该服务的新毗连重定向到为非单例数据库实例提供雷同服务的其他节点。但是,对于计谋管理的数据库,不会制止服务的最后一个实例以确保可用性。

   注意:Memory Guard 可以启动或制止 Open 状态下的数据库服务。Memory Guard 不管理默认数据库服务,也不会在升级或降级数据库时采取行动。

   

[*]Oracle TFA 跟踪文件分析器 - Oracle 跟踪文件分析器收集器和 Oracle 跟踪文件分析器可简化诊断数据的收集和问题的办理。
QoS 应用步调摆设在 Tomcat 中,由 MBeans、REST 服务和 Servlet 组成。鉴于 QoS 是一个安全应用步调,随 GI 提供的 Tomcat 发行版经过了定制,定制的不是 Tomcat 代码自己,而是 Tomcat 在使用 Tomcat 功能方面的特性。这改进了容器的使用,使其更加可靠和安全。

    以下是使用 GI 摆设的 Tomcat 的加强功能列表:


[*]为了尽量减少内存占用,我们只在 Tomcat 网络容器中使用以下 JAR 文件
annotations-api.jar
bootstrap.jar
catalina.jar
jaspic-api.jar
servlet-api.jar
tomcat-api.jar
tomcat-coyote.jar
tomcat-jni.jar
tomcat-juli.jar
tomcat-util.jar
tomcat-util-scan.jar
[*]监听器是通过配置附加到 TOMCAT 的,这些监听器可以例如,限定使用 JVM 属性:制止使用 JVM 附带的 RMI 毗连器。强制使用甲骨文登录模块(Oracle Login Modules),如许我们就可以在OCR和甲骨文钱包(Oracle Wallets)中存储凭证。加载 ORACLE 分发的 TLS 证书启动我们制作的 JMXConnector,以便在启用 TLS 的环境下使用 ORACLE 证书举行 RMI 通信如果启用 TLS,使用 ORACLE 证书启动 HTTP 毗连器。仅使用两个通信端口,一个用于 RMI,另一个用于 HTTP。
[*]使用安全管理器限定对 Node 中 MBeans 和资源的访问,以制止安全漏洞。
[*]使用 ora.qosmserver 资源(使用 Tomcat)的应用步调有两个:QoS 和 MPA。
[*]QoS 使用端口 8888(RMI)和 8895(HTTP)。
Tomcat 显然有更多的功能,但我们并没有使用这些功能,因为它们必须经过定制才能使用 Oracle 基础架构,而且由于 QoS 和 FPP 的性质,有些功能并不是必需的。我们没有在 GI 中使用 Tomcat Distribution:
The JMX connector.
The AJP connector.
The Managment console.
ANT scripting
The shutdown service due it is very insecure.
Shell Scripts to start and shutdown the container.
Realms and Access Controls
JSPs
Clustering
APR native
Virtual Hosting
JNDI Resources

IMPORTANT:  Patching of Tomcat within the GI home is handled via the Quarterly Grid Infrastructure Release Updates.  Patching outside of GI Release Updates is NOT supported. 紧张:在 GI home 内对 Tomcat 举行的修补是通过每季度的 Grid Infrastructure Release Updates 举行的。不支持在 GI 发布更新之外打补丁。言外之意就是这个 Tomcat 的补丁只会在每个季度的 RU 补丁包里更新,不会单独发布 oneoff 补丁修复,不能单独直接修改 Tomcat 。
参考文档

Tomcat in the Grid Infrastructure Home (Doc ID 2655066.1)
Apache Tomcat 8.5.x - Vulnerability EOL/Obsolete Software (Doc ID 3039452.1)
https://lists.apache.org/thread/h9bjqdd0odj6lhs2o96qgowcc6hb0cfz
https://hackerone.com/hacktivity/cve_discovery?id=CVE-2024-21733
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/atnms/enabling-memory-guard-in-oracle-rac-environment.html#GUID-880E1DF8-8514-41AD-9AE7-0B84B8D5EFB1全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

❤️ 欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
https://img-blog.csdnimg.cn/img_convert/c5837d28fd959e1c0cbb5e2008813931.gif


分享几个数据库备份脚本

一文搞懂 Oracle 统计信息我的 Oracle ACE 心路历程

MOP 系列|MOP 三种主流数据库索引简介

Oracle 主流版本不同架构下的静默安装指南关机重启导致 ASM 磁盘丢失数据库无法启动

Oracle SQL 性能分析(SPA)原理与实战演练Oracle 11g 升级到 19c 需要关注的几个问题

Windows 10 环境下 MySQL 8.0.33 安装指南


SQL 大全(四)|数据库迁移升级时常用 SQL 语句

OGG|使用 OGG19c 迁移 Oracle11g 到 19C(第二版)

Oracle 大数据量导出工具——sqluldr2 的安装与使用从国产数据库调研报告中你都能相识哪些信息及我的总结建议


使用数据泵利用 rowid 分片导出导入 lob 大表及最佳实践

在归档模式下直接 rm dbf 数据文件并重启数据库还有救吗?欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
——————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
ITPUB:https://blog.itpub.net/69968215
腾讯云:https://cloud.tencent.com/developer/user/5645107
——————————————————————————
https://img-blog.csdnimg.cn/img_convert/76a147f983f2909c515cd559169a0c69.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 紧张信息:关于 Oracle RAC 环境下 Apache Tomcat 漏洞(CVE-2024-21733)