一、漏洞描述:
近日,Fastjson Develop Team发布安全公告,修复了一个存在于Fastjson1.2.80及之前版本中的反序列化漏洞。
Fastjson已使用黑白名单用于防御反序列化漏洞,该利用在特定条件下可绕过默认autoType关闭限制,攻击远程服务器,风险影响较大。在默认配置下,当应用或系统使用Fastjson对由用户可控的JSON字符串进行解析时,将可能导致远程代码执行的危害 。建议Fastjson用户尽快采取安全措施保障系统安全。
Fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
二、受影响的版本
特定依赖存在下影响 ≤1.2.80
受影响的TDH组件有:inceptor/slipstream/tbak/manager
三、Inceptor/Slipstream组件修复方案
方案一:打开SafeMode加固功能
在1.2.68之后的版本,在1.2.68版本中,fastjson增加了safeMode的支持。safeMode打开后,完全禁用autoType。所有的安全修复版本sec10也支持SafeMode配置。
有三种方式配置SafeMode,参考 https://github.com/alibaba/fastjson/wiki/fastjson_safemode
1. 在代码中配置
ParserConfig.getGlobalInstance().setSafeMode(true);
注意,如果使用new ParserConfig的方式,需要注意单例处理,否则会导致低性能full gc。
2. 加上JVM启动参数
-Dfastjson.parser.safeMode=true
3. 通过fastjson.properties文件配置。
通过类路径的fastjson.properties文件来配置,配置方式如下:
fastjson.parser.safeMode=true
这里,我们针对inceptor或者slipstream组件,可以参考方式2,通过修改参数的方式来实现:
- 修改
EXTRA_DRIVER_OPTS
和EXTRA_EXECUTOR_OPTS
这两个参数,添加-Dfastjson.parser.safeMode=true
(多个参数之间通过空格拼接) - 右上角,配置服务
- 重启inceptor/slipstream
方案二:更换inceptor/inceptor 镜像中的jar包,升级到最新版本1.2.83
如果检查发现inceptor/inceptor 镜像中的fastjson jar包 版本< 1.2.68,此时 <方案一> 就行不通了,需要通过换包的方式进行修复。
步骤如下:
- 删除镜像内
/usr/lib/inceptor/lib/fastjson-1.2.XX.jar
- 替换上附件的1.2.83版本的
fastjson-1.2.83.jar
该步骤需要对 inceptor 和 slipstream 镜像做持久化(如果 inceptor 和 slipstream 并非使用一个镜像,则需要每个单独重做镜像),具体步骤可以参考这个KB http://intkb.transwarp.cn/posts/2568
四、Tbak组件修复方案
受影响的TBAK版本:TBAK3.0.1之前 1.2.47
修复方式:
- 替换 TBAK安装路径/unzip/WEB-INF/lib/ 目录下的fastjson相关jar包(使用 fastjson-1.2.83.jar 替换 fastjson-1.2.47.jar)
- 替换完成后重启TBAK。
参考内部链接: TBAK Fastjson 反序列化漏洞修复方式
五、Manager组件修复方案
transwarp-8.1.2-final(build c9f84fa4)
8.1.2使用的fastjson版本是1.2.79,此版本存在安全漏洞,可以升级至.1.2.83
修复方案:
进入/lib/transwarp-manager/common/lib,找到fastjson-1.2.79.jar,将其移走到临时目标暂存
下载fastjson-1.2.83.jar,并将其放入上述目录
重启manager即可
manager-7.0.2007a-final build 6e4012cb
虽然引入了fastjson的jar包,但实际没有使用,可以直接将jar包删除。
manager-6.0.2006a-final build ed2a229c
虽然引入了fastjson的jar包,但实际没有使用,可以直接将jar包删除。
manager-6.0.1812a-final build 8222a749
虽然引入了fastjson的jar包,但实际没有使用,可以直接将jar包删除。
transwarp-5.2.2-final build a37e539f
虽然引入了fastjson的jar包,但实际没有使用,可以直接将jar包删除。
FAQ:
fastjson jar包:下载地址:https://github.com/alibaba/fastjson/releases/tag/1.2.83