【安全通报】fastjson 远程代码执行漏洞

0nise  1390天前

1.png

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_22238docker pull vulfocus/fastjson-cnvd_2017_02833:latest 进行拉取运行,也可通过 http://vulfocus.fofa.so/ 进行测试。

4.png

修复建议

升级至安全版本:

较低版本升级至最新版本 1.2.69 可能会出现兼容性问题,建议升级至特定版本的sec10 bugfix 版本,请参考以下链接尽快修复:

https://repo1.maven.org/maven2/com/alibaba/fastjson/

开启SafeMode:

若无法立即升级版本,可通过开启 SafeMode 来缓解此漏洞。fastjson 在 1.2.68 及之后的版本中引入了SafeMode,配置 SafeMode 后,无论白名单和黑名单,都不支持 autoType,可一定程度上缓解反序列化Gadgets 类变种攻击。以下为配置 SafeMode 的三种方式:

  1. 在代码中配置

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-安全讯息平台。

为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。

最新评论

昵称
邮箱
提交评论