ToB企服应用市场:ToB评测及商务社交产业平台
标题: 紧张信息:关于 Oracle RAC 环境下 Apache Tomcat 漏洞(CVE-2024-21733) [打印本页]
作者: 王國慶 时间: 2024-9-7 14:07
标题: 紧张信息:关于 Oracle RAC 环境下 Apache Tomcat 漏洞(CVE-2024-21733)
作者 | 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/h9bjqdd0odj6lhs2o96qgowcc6hb0cfz
复制代码
CVE-2024-21733
[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 或更高版本
复制代码
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 刚好是受影响的版本。
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 Feb 9 2019 annotations-api.jar
- -rw-r--r-- 1 grid oinstall 35060 Feb 9 2019 bootstrap.jar
- -rw-r--r-- 1 grid oinstall 1653771 Feb 9 2019 catalina.jar
- -rw-r--r-- 1 grid oinstall 26898 Feb 9 2019 jaspic-api.jar
- -rw-r--r-- 1 grid oinstall 242873 Feb 9 2019 servlet-api.jar
- -rw-r--r-- 1 grid oinstall 10657 Feb 9 2019 tomcat-api.jar
- -rw-r--r-- 1 grid oinstall 822219 Feb 9 2019 tomcat-coyote.jar
- -rw-r--r-- 1 grid oinstall 34742 Feb 9 2019 tomcat-jni.jar
- -rw-r--r-- 1 grid oinstall 49333 Feb 9 2019 tomcat-juli.jar
- -rw-r--r-- 1 grid oinstall 210920 Feb 9 2019 tomcat-util-scan.jar
- -rw-r--r-- 1 grid oinstall 145748 Feb 9 2019 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.37
复制代码
办理方案
如果你的数据库 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 ONLINE ONLINE 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) 功能:
获取内存资源信息后,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之路】,一起学习新知识!
分享几个数据库备份脚本
- [/code] [size=5][b]我的 Oracle ACE 心路历程[/b][/size]
- [size=5][b]MOP 系列|MOP 三种主流数据库索引简介[/b][/size]
- [code]Oracle 主流版本不同架构下的静默安装指南
复制代码- [/code] [size=5][b]关机重启导致 ASM 磁盘丢失数据库无法启动[/b][/size]
- [code]Oracle SQL 性能分析(SPA)原理与实战演练
复制代码- [/code] [size=5][b]Oracle 11g 升级到 19c 需要关注的几个问题[/b][/size]
- [size=5][b]Windows 10 环境下 MySQL 8.0.33 安装指南
- [/b][/size]
- [size=5][b]SQL 大全(四)|数据库迁移升级时常用 SQL 语句[/b][/size]
- [size=5][b]OGG|使用 OGG19c 迁移 Oracle11g 到 19C(第二版)[/b][/size]
- [code]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
——————————————————————————
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) |
Powered by Discuz! X3.4 |