Fastjson 1.2.83 远程代码执行漏洞
Fastjson 1.x 在 1.2.68 至 1.2.83 版本范围内存在远程代码执行风险(CVE-2026-16723),官方 1.x 安全更新尚未发布,建议评估业务兼容性后迁移至 Fastjson 2.x,或通过 setSafeMode、JVM 参数 -Dfastjson.parser.safeMode=true 及 fastjson.properties 启用安全模式作为临时缓解。
1、概述
Fastjson是阿里巴巴的开源JSON解析库。它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以将JSON字符串反序列化为Java Bean;它具有执行效率高、应用范围广的特点。
2、影响范围
受影响版本
1.2.68 <= Fastjson1.x <= 1.2.83
注意: 官方 Fastjson 1.2.68 及更高版本添加了 SafeMode 功能,可以完全禁用自动类型输入。
未受影响的版本
Fastjson = 2.x
3、检测 人工检查
相关用户可以使用以下命令来检测当前使用的 Fastjson 版本:
lsof | grep fastjson 或者查找项目目录中是否存在 fastjson-[版本].jar 文件。
使用 Maven 打包的项目可以通过 pom.xml 查看当前使用的 fastjson 版本:
如果当前版本在受影响的范围内且未启用安全模式,则存在安全风险。
4、修复方案:
官方升级
目前,Fastjson1.x 的官方安全更新尚未发布。建议受影响的用户在评估业务兼容性后迁移到 Fastjson2.x。下载链接:https://github.com/alibaba/fastjson2/releases
其他防护措施
如果相关用户暂时无法执行升级操作,也可以采取以下措施作为临时补救措施:
Fastjson 在 1.2.68 及更高版本中引入了 safeMode 安全模式。配置 safeMode 后,无论是否使用白名单或黑名单,autoType 都将失效,从而可以防止反序列化漏洞攻击;启用 safeMode 的方法有三种:
在代码中进行配置:ParserConfig.getGlobalInstance().setSafeMode(true);
添加 JVM 启动参数: -Dfastjson.parser.safeMode=true 如果存在多个软件包名称前缀,可以用逗号分隔。
通过 fastjson.properties 文件进行配置: 通过类路径下的 fastjson.properties 文件进行配置,配置方法如下:
fastjson.parser.safeMode=true
请参阅官方文档:https://github.com/alibaba/fastjson/wiki/fastjson_safemode
当使用 WAF 等安全设备拦截请求正文中包含 @type 字段的键的 JSON 数据时,需要同时覆盖 URL 参数和请求正文,并注意编码绕过。