Java JSON 组件选型之 FastJson 为什么总有漏洞?
最近阿里巴巴的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
、SYSTEM
、FILE:
等关键词,就可以读取出来您服务器的内容。本站也中招过。
漏洞到底是个怎产生的
1. 漏洞描述
fastjson采用黑白名单的方法来防御反序列化漏洞,导致当黑客不断发掘新的反序列化Gadgets类时,在autoType关闭的情况下仍然可能可以绕过黑白名单防御机制,造成远程命令执行漏洞。经研究,该漏洞利用门槛较低,可绕过autoType限制,风险影响较大。阿里云应急响应中心提醒fastjson用户尽快采取安全措施阻止漏洞攻击。
2. 影响版本
- fastjson <=1.2.68
- fastjson sec版本 <= sec9
- android版本不受此漏洞影响
3. 升级方案
升级到最新版本1.2.69或者更新的1.2.70版本。
- 1.2.69 https://github.com/alibaba/fastjson/releases/tag/1.2.69
- 1.2.70 https://github.com/alibaba/fastjson/releases/tag/1.2.70
如果遇到兼容问题,原地升级sec10版本。
- 1.1.15~1.1.31 -> 1.1.31.sec10
- 1.1.32~1.1.33 -> 1.1.33.sec10
- 1.1.34 -> 1.1.34.sec10
- 1.1.35~1.1.46 -> 1.1.46.sec10
- 1.2.0~1.2.2 -> 1.2.2.sec10 因为1.2.3之后的版本Map是没有排序输出的,如果不关注这个兼容问题,升级到1.2.70
- 1.2.3~1.2.7 -> 1.2.7.sec10 因为1.2.7使用最多特别提供,也可以直接使用1.2.8.sec10
- 1.2.8 -> 1.2.8.sec10
- 1.2.9~1.2.29 -> 1.2.29.sec10
- 1.2.30~1.2.48 -> 1.2.48.sec10
- 1.2.49~1.2.68 -> 1.2.69或1.2.70 中间有很多sec10小版本,建议直接升级到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
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。