Java JSON 组件选型之 FastJson 为什么总有漏洞?

JSON 2020-06-10 11:35:34 136198

最近阿里巴巴的FastJSON 又被曝出漏洞。引用一下降维安全实验室的原述文字:

< p > 据降维安全实验室(http://johnwick.io)报道,Fastjson version 1.2.68 全版本存在反序列化漏洞,利用该漏洞,黑客可远程在服务器上执行任意代码直接获取服务器权限。

近日,阿里云应急响应中心监测到fastjson爆发新的反序列化远程代码执行漏洞,黑客利用漏洞,可绕过autoType限制,直接远程执行任意命令攻击服务器,风险极大。


此漏洞异常危险,降维安全实验室建议使用了该java库的相关交易所及企业及时将Fastjson升级至1.2.68版本、打开SafeMode、并持续关注fastjson官网等待1.2.69版本的更新并立即升级以防止被攻击。更多详细细节和缓解措施请联系降维安全实验室。

大白话叙述下漏洞

可能对这个漏洞看不懂,这个漏洞其实就是  XSS  ,比如提交的内容有  XSS  内容,而您反序列化对象的时候,用了  Fastjson  ,那就会出现直接执行  XSS  命令,利用相关命令可以把您服务器对应的文件列表,对应的文件内容,都可以读取出来。

XML Dom4j 也有这个问题。比如用 !ENTITY 、SYSTEMFILE: 等关键词,就可以读取出来您服务器的内容。本站也中招过。


漏洞到底是个怎产生的

1. 漏洞描述

fastjson采用黑白名单的方法来防御反序列化漏洞,导致当黑客不断发掘新的反序列化Gadgets类时,在autoType关闭的情况下仍然可能可以绕过黑白名单防御机制,造成远程命令执行漏洞。经研究,该漏洞利用门槛较低,可绕过autoType限制,风险影响较大。阿里云应急响应中心提醒fastjson用户尽快采取安全措施阻止漏洞攻击。

2. 影响版本

  • fastjson <=1.2.68
  • fastjson sec版本 <= sec9
  • android版本不受此漏洞影响

3. 升级方案

升级到最新版本1.2.69或者更新的1.2.70版本。

如果遇到兼容问题,原地升级sec10版本。

如果还遇到其他兼容问题,这里有更多的sec10版本 https://repo1.maven.org/maven2/com/alibaba/fastjson/

4. safeMode加固

fastjson在1.2.68及之后的版本中引入了safeMode,配置safeMode后,无论白名单和黑名单,都不支持autoType,可一定程度上缓解反序列化Gadgets类变种攻击(关闭autoType注意评估对业务的影响)

4.1 开启方法

参考 https://github.com/alibaba/fastjson/wiki/fastjson_safemode

4.2 使用1.2.69之后的版本是否需要使用safeMode

1.2.69修复了此次发现的高危漏洞,开启safeMode是完全关闭autoType功能,避免类似问题再次发生,这可能会有兼容问题,大家打开时需要做充分测试

以上内容来自阿里巴巴 GitHub说明:https://github.com/alibaba/fastjson/wiki/security_update_20200601 

怎么预防漏洞被利用

1.首先用到 1.2.68 版本的,先升级。

    另外我还是建议使用  Gson  或者使用  Jackson  ,优先推荐  Jackson  ,毕竟一直陪跑  Spring  系列,安全上还是有保证一点。毕竟我们追求快(都说fastjson快,其实我没觉得)的时候,最主要的就是安全。

2.安全意识问题。

    首先项目启动用非root用户,权限收缩到最小,即使出现漏洞问题,造成的影响也不会太大。


版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/374.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
网站如何设置404页面、500等错误页面,有什么漏洞?怎预防?
为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比
技术选型为什么批处理我们却选择了Flink
JSON什么?它能带来什么?它和XML比较?
为什么很多第三方接口,都改成了基于http,直接传递json数据的方式来代替webservice?
阿里云系统漏洞修复合集——高危漏洞提醒【云盾-安骑士】
dns污染怎解决?为什么会出现这种情况?
为什么undefined、NaN和Infinity可以被赋值,而null不可以?
java json字符串转json对象
Java API接口返回不是JSON的解决方案,SpringMVC返回JSON配置。
最新文章
SOJSON V6 JavaScript 解密技巧与分析 24
微信客服人工电话95068:如何快速解封微信账号(2025最新指南) 311
Java Http请求,HttpURLConnection HTTP请求丢失头信息,Head信息丢失解决方案 3725
实用API合集分享:教你轻松获取IP地址的API合集 5471
Linux I/O重定向 6170
Ruby 循环 - while、for、until、break、redo 和 retry 3608
Node.js:全局对象 3270
如何使用终端检查Linux上的内存使用情况 3383
JavaScript对象详细剖析 2882
Python print() 函数 2995
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 695750
免费天气API,天气JSON API,不限次数获取十五天的天气预报 688812
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 677021
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 560666
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 511143
Elasticsearch教程(四) elasticsearch head 插件安装和使用 483000
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 284349
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 245672
Elasticsearch教程(一),全程直播(小白级别) 230937
谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情 226616
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...