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

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

最近阿里巴巴的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

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

本文主题:

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

关于作者
一个低调而闷骚的男人。
相关文章
为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比
网站如何设置404页面、500等错误页面,有什么漏洞?怎预防?
技术选型为什么批处理我们却选择了Flink
JSON什么?它能带来什么?它和XML比较?
为什么很多第三方接口,都改成了基于http,直接传递json数据的方式来代替webservice?
阿里云系统漏洞修复合集——高危漏洞提醒【云盾-安骑士】
dns污染怎解决?为什么会出现这种情况?
Java API接口返回不是JSON的解决方案,SpringMVC返回JSON配置。
为什么undefined、NaN和Infinity可以被赋值,而null不可以?
whois查询是什么?它有哪些作用?
最新文章
文件上传漏洞与防御 1548
前端构建工具选型指南:Webpack、Vite、Rollup、esbuild 深度对比 494
物联网时代2026年时序数据库选型指南 507
SaaS行业面临AI挑战:从“无限复用”到“灵活适应” 683
神经网络:从构造到模型训练全链路解析 554
一文吃透 Redis 核心存储结构:ziplist、listpack 与哈希表扩容 / 并发查询 982
Linux sudo提权完整指南:从基础用法到生产级安全配置 281
XSS 和 CSRF 的本质区别及开发防御全解析 390
JVM垃圾回收(GC)全维度解析:从原理到调优实战 420
Linux动静态库与ELF加载全解析:从实操制作到底层原理 539
最热文章
免费天气API,天气JSON API,不限次数获取十五天的天气预报 771514
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 708851
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 679457
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 562378
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 512346
Elasticsearch教程(四) elasticsearch head 插件安装和使用 484468
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 301586
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 247158
Elasticsearch教程(一),全程直播(小白级别) 232831
谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情 228099
支付扫码

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

查看我的收藏

正在加载... ...