Oracle WebLogic CVE-2022-21350 漏洞分析
字数 1346 2025-08-29 08:31:35

Oracle WebLogic CVE-2022-21350 漏洞分析教学文档

漏洞概述

CVE-2022-21350 是 Oracle WebLogic Server 中的一个反序列化漏洞,属于一条新的 gadget 链。该漏洞在低版本 JDK 中可能造成远程代码执行(RCE)风险。

影响版本

  • 测试环境:WebLogic 14c 版本
  • JDK 版本:1.8(特别在低于 1.8.0_191 的版本中存在 RCE 风险)

漏洞利用条件

  1. 可利用协议:IIOP 协议(根据提交者说明,实际只能在 IIOP 协议中利用,尽管官方文档提到 T3 协议)
  2. JDK 版本低于 1.8.0_191 时可实现 RCE
  3. JDK 版本高于等于 1.8.0_191 时风险降低为 SSRF 类型漏洞

漏洞利用链分析

完整的 gadget 调用链如下:

  1. BadAttributeValueExpException.readObject 方法
  2. SessionData.toString 方法
  3. SessionData.isDebuggingSession 方法
  4. SessionData.getAttribute 方法
  5. SessionData.getAttributeInternal 方法
  6. AttributeWrapperUtils.unwrapObject 方法
  7. AttributeWrapperUtils.unwrapEJBObjects 方法
  8. BusinessHandleImpl.getBusinessObject 方法
  9. HomeHandleImpl.getEJBHome 方法
  10. 最终调用 ctx.lookup 方法实现 JNDI 注入

漏洞评分与修复历史

  • CVSS 评分:6.5 分(非最初认为的 9.8 分)
  • 评分降低原因:
    • Oracle 在 2021 年 7 月补丁中强制要求 JDK 最低版本为 1.8.0_191
    • 低于此版本的 JDK 会收到警告提示(修复 CVE-2021-2382 的措施)
    • JDK 1.8.0_191 及以上版本中 JNDI 注入只能造成 SSRF 风险而非 RCE

防御措施

  1. ABBREV_CLASSES 白名单:Oracle 已发布包含此白名单的补丁
  2. JDK 版本要求:强制使用 1.8.0_191 或更高版本 JDK

修复建议

  1. 及时更新补丁,参考 Oracle 官方发布的补丁:
    • https://www.oracle.com/security-alerts/cpujan2022.html
  2. 升级 JDK 至 1.8.0_191 或更高版本
  3. 限制 IIOP 协议访问(如果业务不需要)

补充说明

  1. 该漏洞最初于 2021 年 8 月 25 日提交给 Oracle
  2. 官方文档中提到的 T3 协议利用可能是描述错误,实际只能在 IIOP 协议中利用
  3. 在 JDK 高版本中,该漏洞的风险从 RCE 降级为 SSRF 类型攻击

参考资源

  1. Oracle 官方安全公告:https://www.oracle.com/security-alerts/cpujan2022.html
  2. JDK 1.8.0_191 及以上版本对 JNDI 注入的限制
Oracle WebLogic CVE-2022-21350 漏洞分析教学文档 漏洞概述 CVE-2022-21350 是 Oracle WebLogic Server 中的一个反序列化漏洞,属于一条新的 gadget 链。该漏洞在低版本 JDK 中可能造成远程代码执行(RCE)风险。 影响版本 测试环境:WebLogic 14c 版本 JDK 版本:1.8(特别在低于 1.8.0_ 191 的版本中存在 RCE 风险) 漏洞利用条件 可利用协议:IIOP 协议(根据提交者说明,实际只能在 IIOP 协议中利用,尽管官方文档提到 T3 协议) JDK 版本低于 1.8.0_ 191 时可实现 RCE JDK 版本高于等于 1.8.0_ 191 时风险降低为 SSRF 类型漏洞 漏洞利用链分析 完整的 gadget 调用链如下: BadAttributeValueExpException.readObject 方法 SessionData.toString 方法 SessionData.isDebuggingSession 方法 SessionData.getAttribute 方法 SessionData.getAttributeInternal 方法 AttributeWrapperUtils.unwrapObject 方法 AttributeWrapperUtils.unwrapEJBObjects 方法 BusinessHandleImpl.getBusinessObject 方法 HomeHandleImpl.getEJBHome 方法 最终调用 ctx.lookup 方法实现 JNDI 注入 漏洞评分与修复历史 CVSS 评分:6.5 分(非最初认为的 9.8 分) 评分降低原因: Oracle 在 2021 年 7 月补丁中强制要求 JDK 最低版本为 1.8.0_ 191 低于此版本的 JDK 会收到警告提示(修复 CVE-2021-2382 的措施) JDK 1.8.0_ 191 及以上版本中 JNDI 注入只能造成 SSRF 风险而非 RCE 防御措施 ABBREV_ CLASSES 白名单 :Oracle 已发布包含此白名单的补丁 JDK 版本要求 :强制使用 1.8.0_ 191 或更高版本 JDK 修复建议 及时更新补丁,参考 Oracle 官方发布的补丁: https://www.oracle.com/security-alerts/cpujan2022.html 升级 JDK 至 1.8.0_ 191 或更高版本 限制 IIOP 协议访问(如果业务不需要) 补充说明 该漏洞最初于 2021 年 8 月 25 日提交给 Oracle 官方文档中提到的 T3 协议利用可能是描述错误,实际只能在 IIOP 协议中利用 在 JDK 高版本中,该漏洞的风险从 RCE 降级为 SSRF 类型攻击 参考资源 Oracle 官方安全公告:https://www.oracle.com/security-alerts/cpujan2022.html JDK 1.8.0_ 191 及以上版本对 JNDI 注入的限制