You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java JDK 21中启用对象反序列化(Log4J漏洞演示场景)

解决JDK 21中JNDI对象反序列化被禁止的问题

问题根源是JDK 9及后续版本(含JDK21)为了安全加固,默认禁用了JNDI LDAP的对象反序列化,同时限制了远程代码库的加载。要在漏洞演示场景下恢复JDK8的行为,需要调整以下JVM参数:

  • 启用对象反序列化
    添加JVM启动参数:

    -Djdk.naming.object.deserialization=allow
    

    该参数默认值为deny,设置为allow将允许JNDI反序列化对象。

  • 允许加载远程代码库
    添加JVM启动参数:

    -Dcom.sun.jndi.ldap.object.trustURLCodebase=true
    

    JDK 11+默认关闭了LDAP上下文加载远程URL代码库的功能,开启这个参数才能让恶意类被加载执行,完成Log4J漏洞的演示流程。

在Spring Boot中应用参数的方式

  • IDE运行:在Run Configuration的VM Options中添加上述两个参数。
  • jar包运行:执行以下命令启动应用:
    java -Djdk.naming.object.deserialization=allow -Dcom.sun.jndi.ldap.object.trustURLCodebase=true -jar your-springboot-app.jar
    

注意:这些参数会完全关闭JDK针对JNDI的安全防护,仅适合漏洞演示场景,绝对不能在生产环境使用。

内容的提问来源于stack exchange,提问作者Hittt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:13:26