Fastjson 1.2.24远程代码执行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl)
字数 2004 2025-08-15 21:32:43
Fastjson 1.2.24远程代码执行漏洞分析与防御指南
1. 漏洞概述
1.1 漏洞基本信息
- 漏洞名称: Fastjson 1.2.24远程代码执行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl)
- 漏洞类型: 远程代码执行
- 危害等级: 高危
- 影响版本: Fastjson < 1.2.25
1.2 组件介绍
Fastjson是一个高性能的Java JSON库,特点包括:
- 采用"假定有序快速匹配"算法,性能优异
- 接口简单易用
- 广泛应用于缓存序列化、协议交互、Web输出、Android客户端等场景
1.3 漏洞原理
漏洞利用fastjson autotype在处理json对象时,未对@type字段进行充分的安全性验证,攻击者可传入危险类,服务器执行其中恶意代码。
2. 漏洞利用条件与影响
2.1 利用条件
- 无特殊条件要求
- 只要使用受影响版本的Fastjson并解析外部输入的JSON数据即可
2.2 漏洞影响
攻击者可实现:
- 远程代码执行
- 服务器敏感信息泄露
- 对服务器数据进行增删改操作
- 完全控制受影响服务器
3. 技术背景
3.1 JavaBean规范
JavaBean是特殊的Java类,需满足:
- 提供默认无参构造函数
- 实现Serializable接口
- 有一系列可读写属性
- 有规范的getter/setter方法
示例:
public class StudentsBean implements java.io.Serializable {
private String firstName = null;
private String lastName = null;
private int age = 0;
public StudentsBean() {}
public String getFirstName(){ return firstName; }
public void setFirstName(String firstName){ this.firstName = firstName; }
// 其他getter/setter...
}
4. 漏洞详细分析
4.1 漏洞触发流程
-
JSON解析入口
- 调用
parseObject方法解析传入的JSON数据 - 使用
DefaultJSONParser进行解析 - 获取
ParserConfig中的初始配置和黑名单
- 调用
-
@type字段处理
- 解析到
@type字段时,获取其值 - 调用
TypeUtils.loadClass加载指定类 - 先在mappings中查找,找不到则使用
contextClassLoader.loadClass加载
- 解析到
-
反序列化器获取
- 调用
getDeserializer获取反序列化器 - 检查黑名单
- 检查
META-INF/services/下的服务 - 最终调用
createJavaBeanDeserializer生成JavaBean反序列化器
- 调用
-
JavaBean构建
- 通过反射获取类所有属性和方法
- 选择无参构造函数作为默认构造器
- 筛选符合规范的setter/getter方法
- 构建
JavaBeanInfo对象
-
恶意代码执行
- 解析
_outputProperties参数时 - 通过反射调用
getOutputProperties方法 - 实例化从bytecode传入的恶意class文件
- 实现攻击
- 解析
4.2 关键攻击点
- 利用
TemplatesImpl类的特性 - 通过
_bytecodes属性传入恶意字节码 - 触发
getOutputProperties方法执行恶意代码
5. 补丁分析(Fastjson 1.2.25)
-
新增
checkAutoType方法- 设置autotype开关
- 对@type字段进行严格限制
- 关闭autotype后无法通过@type传入类进行攻击
-
扩展黑名单
- 增加更多危险类到黑名单
- 拦截已知的fastjson gadget链
6. 防御方案
6.1 通用修复方案
- 升级Fastjson: 升级到1.2.25或更高版本
- 禁用autotype: 设置
ParserConfig.getGlobalInstance().setAutoTypeSupport(false); - 使用安全模式: 配置
Feature.SafeMode
6.2 深信服产品防护方案
-
下一代防火墙
- 更新至最新安全防护规则
- 可轻松防御此漏洞
-
云盾
- 已自动更新防护规则
- 用户无需操作即可防御
-
安全感知平台
- 检测利用该漏洞的攻击
- 实时告警
- 可联动防火墙封堵攻击IP
-
安全运营服务
- 7*24小时持续安全运营
- 自动检查并更新防护策略
7. 参考链接
- JavaBean教程: https://www.runoob.com/jsp/jsp-javabean.html
- Fastjson RCE分析: http://xxlegend.com/2018/10/23/基于JdbcRowSetImpl的Fastjson RCE PoC构造与分析/
- Fastjson 1.2.24到1.2.25的变更: https://github.com/alibaba/fastjson/compare/1.2.24...1.2.25
8. 总结
Fastjson 1.2.24及之前版本存在严重的远程代码执行漏洞,攻击者可通过精心构造的JSON数据在目标服务器上执行任意代码。建议所有使用Fastjson的用户立即升级到1.2.25或更高版本,并按照本文提供的防御方案进行防护。