文章总结: 文章深度分析Log4j2Issue#4255反序列化白名单绕过问题,指出MarshalledObject白名单缺陷可致二次反序列化绕过,但利用条件苛刻(需序列化日志接收端暴露且classpath存在gadget库),与Log4Shell有本质区别,不应过度应急。提供排查命令和三种加固方案:关闭接收端、JVMserialFilter、网络隔离,建议针对性排查而非盲目升级。 综合评分: 78 文章分类: 漏洞分析,漏洞预警,解决方案,安全意识
Log4j2 Issue #4255 深度解析:技术真相与风险评估
奇安信 CERT
2026年8月27日 16:01 北京
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
📌 核心观点
本文要点: Log4j2 Issue #4255是一个技术上真实存在的安全问题,但与2021年的Log4Shell有本质区别,实际影响范围极其有限,不应引发过度恐慌。
一、问题概述
1.1 事件背景
2026年8月24日,Apache Log4j2项目公开了Issue #4255,涉及FilteredObjectInputStream反序列化白名单绕过问题。随后多个安全研究团队发布了概念验证代码(PoC),部分媒体将其解读为”Log4j再次出现严重远程代码执行漏洞”。
然而,经过技术分析和影响范围评估,该问题与2021年震惊业界的Log4Shell漏洞(CVE-2021-44228)存在本质差异。
1.2 问题定性
技术层面: 该问题确实存在,攻击链路在特定条件下可被成功利用。
影响范围: 仅影响极少数特殊配置场景的Log4j2应用。
官方态度: Apache官方未分配CVE编号,未发布安全公告,根据其Security FAQ定义,该问题可能被归类为”应用层配置问题”而非”产品漏洞”。
二、常见认知误区
误区一:使用Log4j2就必须紧急升级
误区表现: 发现系统使用Log4j2,立即启动全面升级计划
正确认知:
- • Issue #4255在所有版本(包括最新版)都存在
- • Apache官方未发布修复补丁
- • 盲目升级不能解决问题
- • 应先评估是否真实受影响
建议做法: 先进行针对性排查,确认存在风险再采取措施
误区二:这是第二个Log4Shell,应全面应急
误区表现: 按照Log4Shell的应急等级启动全公司响应
正确认知:
- • Log4Shell影响80%+应用,Issue #4255影响极小
- • Log4Shell默认触发,Issue #4255需要特定配置
- • 两者严重程度完全不在同一量级
建议做法: 理性评估,避免过度反应和资源浪费
三、技术原理解析
3.1 问题成因
Log4j2提供了FilteredObjectInputStream(FOIS)作为反序列化安全工具,通过白名单机制限制可反序列化的类。问题的根源在于:
- 1. 白名单配置缺陷:FOIS的白名单中包含了
java.rmi.MarshalledObject类 - 2. 二次反序列化问题:
MarshalledObject.get()方法会创建新的、不带过滤器的ObjectInputStream - 3. 白名单绕过:恶意payload隐藏在MarshalledObject内部,成功绕过外层白名单检查
3.2 攻击链路
1. 攻击者构造恶意的LogEvent对象
2. 将Message包装在MarshalledObject中
3. 通过网络发送到目标的日志接收端
4. FilteredObjectInputStream检查:MarshalledObject在白名单 → 放行
5. LogEventProxy调用MarshalledObject.get()
6. 内部创建无过滤的ObjectInputStream
7. 反序列化恶意gadget(如Commons Collections)
8. 触发代码执行
3.3 与Log4Shell的本质差异
| 对比维度 | Log4Shell (CVE-2021-44228) | Issue #4255 | | — | — | — | | 触发条件 | 应用记录包含特定字符串的日志 | 必须存在网络日志接收服务 | | 默认影响 | 几乎所有使用log4j-core的应用 | 默认配置不受影响 | | 攻击难度 | 极低(构造字符串即可) | 中等(需要特定配置) | | 影响范围 | 约80%的Log4j2应用 | 极少数的应用 | | 官方响应 | 立即修复,分配CVE | 未承认为产品漏洞 |
关键区别: Log4Shell是”被动触发型”漏洞,Issue #4255是”主动暴露型”风险。
四、影响范围分析
4.1 利用条件
该问题的成功利用需要同时满足以下所有条件:
条件一:存在序列化日志接收端
应用必须主动监听网络端口,通过Java ObjectInputStream接收并反序列化LogEvent对象。
受影响场景:
- • 运行TcpSocketServer(Log4j 2.14.x及更早版本)
- • 自研的Java序列化日志收集网关
- • 使用SerializedLayout配置的网络日志接收端
条件二:接收端对不可信网络开放
日志接收端口必须能被潜在攻击者访问。
高风险配置:
- • 监听公网IP地址
- • 内网无访问控制策略
- • 缺少身份认证机制
条件三:存在可利用的gadget库(RCE必要)
要实现远程代码执行,Classpath上必须存在可被利用的反序列化gadget库。
可导致RCE:
- • Commons Collections 3.2.1及更早版本
- • 其他存在已知gadget的库
五、排查方法指南
5.1 代码与配置检查
关键配置项:
# 搜索可疑配置
find . -type f \( -name "*.xml" -o -name "*.properties" -o -name "*.yaml" \) \
-exec grep -l "SerializedLayout\|TcpSocketServer" {} \;
# 搜索Java代码
find . -name "*.java" -exec grep -l "ObjectInputStreamLogEventBridge" {} \;
判断标准:
- • 未发现上述配置 → 不受影响
- • 发现相关配置 → 需进一步确认
5.2 运行时检查
检查加载的类:
# 列出Java进程
jps -l
# 检查特定进程加载的类
jcmd <pid> GC.class_histogram | grep -E "TcpSocketServer|SerializedLayout"
检查监听端口:
# 查看Java进程监听的端口
ss -tlnp | grep java
netstat -tlnp | grep java
# 重点关注非标准端口(非8080、9090等常见端口)
5.3 依赖库检查
# Maven项目
mvn dependency:tree | grep commons-collections
# Gradle项目
gradle dependencies | grep commons-collections
# 直接查找jar包
find . -name "commons-collections-3.2.1.jar"
5.4 快速判断流程
步骤1:是否使用Log4j2?
├─ 否 → 不受影响 ✓
└─ 是 → 继续
步骤2:是否存在序列化日志接收端?
├─ 否 → 不受影响 ✓
├─ 不确定 → 执行技术检查
└─ 是 → 继续
步骤3:接收端是否对外开放?
├─ 仅localhost → 风险较低
├─ 内网+白名单 → 风险中等
└─ 公网/无限制 → 继续
步骤4:是否为必要功能?
├─ 否 → 建议关闭
└─ 是 → 立即加固
六、防护加固方案
6.1 方案一:关闭序列化日志接收端
适用场景: 该功能非业务必需
操作方法:
- • 删除相关配置
- • 停止相关服务进程
- • 从部署架构中移除该组件
效果评估: 完全消除风险
6.2 方案二:JVM序列化过滤器
适用场景: 必须保留序列化日志功能
配置方法:
# 添加JVM启动参数
-Djdk.serialFilter='!java.rmi.MarshalledObject'
# 更严格的策略(推荐)
-Djdk.serialFilter='!org.apache.commons.collections.*;!java.rmi.MarshalledObject'
实施位置:
- • 应用启动脚本
- • 系统服务配置文件
- • 容器环境变量
效果评估: 大幅降低风险,可能影响合法MarshalledObject使用
6.3 方案三:网络层隔离
适用场景: 所有保留接收端的情况
加固措施:
- • 修改监听地址为127.0.0.1或内网IP
- • 配置防火墙规则,限制访问来源
- • 部署网络隔离方案(VPN、专网)
- • 启用mTLS双向认证
效果评估: 显著降低攻击面
七、总结与建议
7.1 核心结论
- 1. 技术真实性:Issue #4255是一个真实存在的技术问题
- 2. 影响范围:实际影响范围极其有限
- 3. 严重程度:不应与Log4Shell相提并论
- 4. 应对策略:针对性排查,避免过度反应
7.2 关键要点
- • 不是所有Log4j2应用都受影响
- • 默认配置不存在风险
- • 排查可以快速完成
- • 加固措施简单有效
- • 不需要全面应急响应
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:奇安信 CERT 《Log4j2 Issue #4255 深度解析:技术真相与风险评估》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论