Fastjson 1.2.x无需gadget远程代码执行漏洞通告
内容提要
绿盟科技通告,Fastjson 1.2.68至1.2.83存在反序列化漏洞,攻击者可绕过autoType防护,无需gadget即可远程执行代码,CVSS评分9.8,PoC已公开且在野利用。建议升级至Fastjson 2.x,或开启SafeMode,并用WAF拦截含@type的JSON请求。
延伸解读
漏洞核心:绕过autoType且无需gadget
该漏洞源于Fastjson反序列化内部类型解析逻辑缺陷,攻击者构造恶意JSON即可绕过autoType黑白名单,且无需目标classpath存在任何第三方gadget类,即可实现远程代码执行。这意味着利用门槛显著降低,传统依赖gadget链的防护思路可能失效,安全团队需重新评估现有检测规则的有效性。
影响范围与版本确认
受影响版本为Fastjson 1.x的1.2.68至1.2.83,Fastjson 2.x不受影响。用户可通过lsof命令或检查项目依赖中的fastjson-[version].jar文件确认版本,Maven项目可查看pom.xml。若版本在范围内且未开启SafeMode,则存在风险。建议优先排查对外服务中是否使用受影响版本。
临时缓解:SafeMode与WAF拦截
若无法立即升级,可开启SafeMode完全禁用autoType,支持代码配置、JVM参数或fastjson.properties文件三种方式。同时可使用WAF拦截请求体中key包含@type的JSON数据,但需覆盖URL参数和请求体,并注意编码绕过。这些措施可降低风险,但并非根治,长期仍建议迁移至Fastjson 2.x。
修复建议与风险提示
官方暂未发布Fastjson 1.x安全更新,建议评估业务兼容性后迁移至Fastjson 2.x。目前漏洞细节与PoC已公开,且发现在野利用,CVSS评分9.8,风险极高。绿盟WAF历史规则27004897支持防护,攻防演练模板默认开启。用户应尽快行动,避免因延迟修复导致入侵。
Q&A
Fastjson 1.2.x 无需 gadget 远程代码执行漏洞影响哪些版本?
受影响版本为 Fastjson 1.2.68 至 1.2.83(即 2.68 <= Fastjson1.x <= 1.2.83)。Fastjson 2.x 不受影响。
这个 Fastjson 漏洞为什么不需要 gadget 就能实现远程代码执行?
因为 Fastjson 反序列化内部类型解析逻辑存在缺陷,攻击者可构造特制恶意 JSON 数据绕过传统 autoType 黑白名单防护机制,无需目标服务 classpath 存在任何第三方 gadget 利用类即可实现远程代码执行。
如何检测当前系统使用的 Fastjson 版本是否受此漏洞影响?
可使用命令 lsof | grep fastjson 检测,或查找项目目录中是否存在 fastjson-[version].jar 文件;使用 Maven 打包的项目可通过 pom.xml 查看当前使用的 Fastjson 版本。若版本在受影响范围内且未开启 SafeMode,则存在安全风险。
Fastjson 1.2.x 漏洞的官方修复建议是什么?
官方暂未发布针对 Fastjson 1.x 的安全更新,建议受影响用户在评估业务兼容性后迁移至 Fastjson 2.x,下载链接:https://github.com/alibaba/fastjson2/releases。
如果暂时无法升级 Fastjson,有哪些临时缓解措施?
可开启 SafeMode 安全模式,配置后无论白名单和黑名单都不支持 autoType,能杜绝反序列化漏洞攻击。三种开启方式:1) 代码中配置 ParserConfig.getGlobalInstance().setSafeMode(true); 2) JVM 启动参数 -Dfastjson.parser.safeMode=true;3) 通过类路径的 fastjson.properties 文件配置 fastjson.parser.safeMode=true。此外,可使用 WAF 等安全设备拦截请求体中 key 包含 @type 字段的 JSON 数据,需同时覆盖 URL 参数和请求体并注意编码绕过。
绿盟科技 WAF 是否支持防护这个 Fastjson 漏洞?
支持。绿盟科技 WEB 应用防护系统(WAF)的历史规则支持此漏洞防护(攻防演练模板默认开启),规则 ID 为 27004897,规则名称为 fastjson_remote_code_exec_strict。