首页/安全/渗透测试与安全评估速查/Fastjson 版本与 autoType 配置自查
常见漏洞验证121 条

Fastjson 版本与 autoType 配置自查

Fastjson 历史问题集中在 autoType 机制:核查依赖版本与 autoType 配置状态,升级到安全版本并优先启用安全模式。

Fastjson 自查查什么

Fastjson 的历史问题集中在 autoType 机制:反序列化时会根据输入中的类型信息加载类,配置不当会让攻击者构造的类型被实例化。自查三件事:依赖的实际版本、autoType 的当前状态(是否开启、是否有白名单)、以及是否已启用安全模式。这些属于配置与依赖层面的核查,可以在不改动业务的前提下完成。

基本信息

适用平台Java 应用(Spring Boot、Dubbo、消息消费端均常见)
核查项依赖版本、autoType 开关、白名单配置、安全模式
配置位置代码中的解析入口、JVM 启动参数、依赖管理文件
处置原则升级到维护中的安全版本,并按业务评估启用安全模式

典型使用场景

  • Java 应用组件风险盘点中的反序列化项核查
  • 排查历史版本依赖是否仍在生产环境运行
  • 新老系统共用同一依赖时的版本收敛评估
  • 消息中间件消费端反序列化配置的安全性检查
  • 为升级改造提供依赖清单与影响面说明

依赖与配置清点

依赖与配置清点
mvn dependency:tree | grep -i fastjson          # Maven 项目依赖树(Windows 下可改用 findstr)
find /opt -name 'fastjson*.jar' 2>/dev/null      # 部署目录中实际存在的 jar,包含未声明的传递依赖
grep -rIn 'fastjson.parser.safeMode\|autoTypeSupport' /opt/apps 2>/dev/null | head   # 查找安全模式与 autoType 相关配置
# 记录:应用名、依赖版本、配置状态、是否可通过升级或配置收敛

检查项与处置

检查项风险状态处置方向
依赖版本停留在停止维护的分支升级到维护中的版本并对齐依赖管理
autoType 状态默认放行或白名单过宽关闭不必要的能力,收紧白名单
安全模式未启用且业务不依赖 autoType按评估结果启用并观察兼容性
解析入口对外接口直接解析用户输入限制可解析类型与请求来源
传递依赖多个组件各自引入不同版本统一版本,避免低版本被优先加载
升级前先评估反序列化行为变化对业务的影响:部分业务依赖特定版本的兼容行为,建议在测试环境用真实报文回归后再上线。
自查以配置与依赖清单为主,不需要构造利用载荷:能在不触碰业务数据的前提下给出风险状态,才是这类核查的正确做法。

易错点

  • 只升级依赖不核查 autoType 配置状态,风险在配置层面依然存在
  • 忽略传递依赖带来的低版本覆盖,实际加载的版本与声明版本不一致
  • 忽略业务对特定版本行为的依赖,升级后出现报文解析失败
  • 只核查主应用,漏掉消息消费端与批处理任务这些同样使用反序列化的入口
  • 把“存在风险组件”直接写成“可被利用”,缺少可利用条件的说明

数据来源与参考

  • Fastjson 官方安全公告(autoType 相关)
  • CWE-502
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌