Fastjson 是一个Java 语言编写的高性能功能完善的 JSON 库。 它采用一种“假定有序快速匹配”的算法,把 JSON Parse 的性能提升到极致,是目前 Java 语言中最快的 JSON 库。 Fastjson 接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web 输出、Android 客户端等多种应用场景。
近日,白帽汇安全研究院监测到 fastjson 官方发布新版本,修补了一个反序列化远程代码执行漏洞。远程攻击者可利用该漏洞绕过 autoType 限制,进而可在目标服务器上执行任意命令。鉴于该漏洞影响较大,建议客户尽快自查修复。
漏洞描述
fastjson 采用黑白名单的方法来防御反序列化漏洞,导致当黑客不断发掘新的反序列化 Gadgets 类时,在autoType 关闭的情况下仍然可能可以绕过黑白名单防御机制,造成远程代码执行漏洞。
影响范围
- fastjson < 1.2.69
- fastjson sec 版本 < sec10
漏洞环境——Vulfocus
目前 Vulfocus 已经集成 fastjson 环境,可通过 docker pull vulfocus/fastjson-cnvd_2019_22238
、docker pull vulfocus/fastjson-cnvd_2017_02833:latest
进行拉取运行,也可通过 http://vulfocus.fofa.so/ 进行测试。
修复建议
升级至安全版本:
较低版本升级至最新版本 1.2.69 可能会出现兼容性问题,建议升级至特定版本的sec10 bugfix 版本,请参考以下链接尽快修复:
https://repo1.maven.org/maven2/com/alibaba/fastjson/
开启SafeMode:
若无法立即升级版本,可通过开启 SafeMode 来缓解此漏洞。fastjson 在 1.2.68 及之后的版本中引入了SafeMode,配置 SafeMode 后,无论白名单和黑名单,都不支持 autoType,可一定程度上缓解反序列化Gadgets 类变种攻击。以下为配置 SafeMode 的三种方式:
- 在代码中配置
ParserConfig.getGlobalInstance().setSafeMode(true);
2\. 加上JVM启动参数
-Dfastjson.parser.safeMode=true
如果有多个包名前缀,用逗号隔开
3\. 通过fastjson.properties文件配置
通过类路径的fastjson.properties文件来配置,配置方式如下:
fastjson.parser.safeMode=true
参考链接如下:
https://github.com/alibaba/fastjson/wiki/fastjson_safemode
参考
[1] https://mp.weixin.qq.com/s/V6wiLSFnhVY4zirSHHnxWg
[2] https://repo1.maven.org/maven2/com/alibaba/fastjson/
[3] https://github.com/alibaba/fastjson/wiki/fastjson_safemode
白帽汇从事信息安全,专注于安全大数据、企业威胁情报。
公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。
为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。