不是"核弹"。Log4j issue 4255 的FAQ
原创 微步情报局 2026-08-27 14:02 北京

立即查看详情 →
结论
结论:技术链真实,但不是新的 Log4Shell,多数生产环境不受影响。
风险只存在于「用 Java 序列化接收远程日志」的少数接收端,不是「装了 log4j 就会被打」。建议按「有无序列化日志接收端」排查,而不是全公司升级 log4j。
是否为Log4j-core的漏洞仍存在争议,根据官方Security文档来看可能属于被拒接的那一类。
微步威胁感知平台TDP对此issue相关的利用链支持检测。
issue 4255是什么
2026 年 8 月 24 日,Apache Log4j2 公开 issue 4255。随后出现公开 PoC 和媒体表述「Log4j 又一次 RCE」。
本质是:Log4j 提供的反序列化白名单工具 FilteredObjectInputStream(FOIS)里放行了 java.rmi.MarshalledObject。Log4j 自己的 LogEvent 序列化格式会在还原时调用 MarshalledObject.get(),用一条没有白名单的流再解一次。于是外层白名单被绕过。
公开 PoC 在「自建接收端 + Commons Collections 等 gadget」条件下可以打成命令执行。链是成立的。
和Log4Shell的区别
Log4Shell(CVE-2021-44228) | issue 4255 | |
|---|---|---|
触发 | 应用把用户输入打进日志即可 | 必须有人在接收并反序列化 LogEvent |
默认受影响 | 大量默认/常见部署中招 | 默认不影响 |
官方定性 | 产品漏洞,出 CVE、紧急修复 | 目前不是正式漏洞 |
影响面 | 「用了 log4j-core 打日志就受影响」 | 「用 Java 序列化在网络上收日志的接收进程」 |
结论:不是「日志里出现恶意字符串就 RCE」,而是「有一个收 Java 序列化日志的服务,且对端不可信」。
实际风险有多大
要同时满足才可能被利用:
存在接收端:对 TCP/HTTP/消息队列做 Java
readObject(),对象是 LogEvent(接收日志,而不是往外发日志)。对端不可信:公网或内网任意主机能连这个口(无来源限制、无 mTLS)。
要打成 RCE:接收端 classpath 上还要有反序列化 gadget(如 Commons Collections 3.2.1)。没有 gadget 最多是拒绝服务或伪造日志。
多数业务不受影响,包括:只写文件/控制台、JSON/HTTP/Syslog 收日志、仅配置了 SocketAppender 往外发、普通 logger.info(用户输入)。
存在什么争议
Log4j 维护者 Piotr P. Karwasz(ppkarwasz)自己在早 2026-07-01写的加固备忘:https://github.com/apache/logging-log4j2/discussions/4168
其中的 Finding 1 就是 issue 4255,而且当时已经定性为 hardening。
而且官方Security文档也明确对 Log4j 的安全边界进行了定义。issue 4255 描述的是官方 FAQ 已经预判并拒绝的那一类报告。
https://logging.apache.org/security/faq.html#deserialization
Log4cxx, Log4j, and Log4net donot deserialize data fromany source as part of their normal operation.
The hardening utilities we ship are partial andnot exhaustive; bypasses are treated as opportunities for further hardening, notas vulnerabilities inthe project.
The application performing the deserialization is responsible for ensuring that thebyte stream originates froma trusted source.值得一提的是:
Log4j2-core 里曾带 TcpSocketServer.createSerializedSocketServer。
(参考CVE-2017-5645),大约 2.15 起已从生产库移除。当前 log4j-core不再监听端口、不再从网络反序列化。目前受影响场景主要是:
仍跑 ≤2.14.x 并显式启动了
TcpSocketServer的老部署;拷了官方 samples 或自研了「FOIS / ObjectInputStream 收 LogEvent」的网关。
互联网公开的POC(含 HTTP POST /log 打 RCE)都是专门搭的接收端,不是「凡用 log4j 2.x 的系统」都受影响。
排查建议
不建议按 Log4Shell 模式把「log4j-core 2.11–2.26」当全量应急任务。
要做: 找出有没有「序列化 LogEvent 接收端」。
源代码排查:搜
SerializedLayout、TcpSocketServer、ObjectInputStreamLogEventBridge。注意:FilteredObjectInputStream几乎每个 log4j-api 都有,单独命中不算。运行中 JVM:
jps/jcmd GC.class_histogram看是否加载了接收端类;ss看 Java 是否对外 listen,再对白名单和安全组。
部分决策建议:
没有接收端:不受影响
只有发送端:去排查接收端是否受影响
加载了接收端且对非信任网络开放:能关则关,这属于是误用 Java 序列化传日志的部署风险。
微步产品支撑
微步威胁感知平台TDP已于20260827支持检测,检测ID:S3100182062,模型/规则高于:20260827000000
