再爆安全漏洞,此次轮到Jackson了,竟由阿里云上报

再爆安全漏洞,此次轮到Jackson了,竟由阿里云上报

✍前言

你好,我是YourBatman。web

今天中午收到我司安所有发了一封邮件:Jackson存在安全漏洞。查了一下,这件事并不算很新鲜了(已通过了10天的样子),本文来聊聊吧。json

提及来还蛮戏剧化:阿里云向Jackson官方提交了一个Jackson序列化安全漏洞。众所周知,在国内关于JSON库使用有两大主要阵营:「国际著名的Jackson库」和「国内阿里巴巴出品的Fastjson」。安全

一样的功能定位,不存在竞争想一想也以为不可能嘛。因此当我看到这个漏洞竟是阿里云上报的,就以为这关系还蛮微妙呢,默默的腹黑了3秒钟,哈哈。微信

附:FasterXML/jackson-databind是一个简单基于Java应用库,Jackson能够轻松的将Java对象转换成json对象和xml文档,一样也能够将json、xml转换成Java对象。Jackson是美国FasterXML公司的一款适用于Java的数据处理工具。jackson-databind是其中的一个具备数据绑定功能的组件。
再爆安全漏洞,此次轮到Jackson了,竟由阿里云上报app

✍正文

熟悉A哥的小伙伴知道,自从Fastjson上次爆出重大安全漏洞以后,我完全的投入到了Jackson的阵营,工做中也慢慢去Fastjson化。这不还专门撰写了一篇文章来讲明此事:Fastjson到了说再见的时候了。为了顺利完成“迁移”,我还专门写了一个,也有多是全网惟一一个Jackson专栏,虽然很小众但就是干了~ide

关于本次漏洞

2020年8月25日,jackson-databind(官方)发布了Jackson-databind序列化漏洞的安全通告,漏洞编号为CVE-2020-24616。工具

漏洞详情

该漏洞源于不安全的反序列化。远程***者可经过精心构造的恶意载荷利用该漏洞在系统执行任意代码。学习

其实上它的底层原理是利用某些类的反序列化「利用链」,能够绕过 jackson-databind 「黑名单限制」,远程***者经过向「使用该组件」的web服务接口发送特制请求包(精心构造的JSON),能够形成远程代码执行影响。阿里云

漏洞评级

评定方式 等级
威胁等级 高危
影响面 「有限」
漏洞评分 75
对此评级没有概念?那就来个参照物比一比嘛,我把Fastjson上次(2020-05)的安全漏洞评级给你作对比:component

评定方式 等级
威胁等级 高危
影响面 「普遍」
漏洞评分 75
有限和普遍的的区别到底有多大,用文字不太好描述。打个比方,我以为可类比「艾滋病和新冠病毒」的区别,前者对社会生态影响并不大,然后者巴不得让全球都停摆了,即便它致死率还远没有前者那么高,这就是影响范围的“力量”。

影响版本

jackson-databind < 2.9.10.6

由于如今你们都基于Spring Boot开发,针对版本号我「扩展一下」,方便你对号入座哈:

Spring Boot版本 Jackson版本
1.5.22.RELEASE 2.8.x
2.0.9.RELEASE 2.9.x
「2.1.16.RELEASE」 2.9.10.5
2.2.9.RELEASE 2.10.x
2.3.3.RELEASE 2.11.x
Spring Boot2.1.x应该是现行主流使用版本,所以从版本号上来看,大几率都在这次漏洞的射程范围内。

安全版本

jackson-databind 2.9.10.6或者2.10.x及之后版本

故事时间轴
2020-08-05,「阿里云安全组」同窗向Jackson官方上报了这个安全漏洞:
再爆安全漏洞,此次轮到Jackson了,竟由阿里云上报
当天,官方回复预计会在8-15左右发布bug修复版本修复次问题(waht?知道问题了还得10后修复?):
再爆安全漏洞,此次轮到Jackson了,竟由阿里云上报
可结果是10天都不止。直到8.25这天,Jackson发布2.9.10.6版本修复了此问题,并向外界发公告公布此漏洞:
再爆安全漏洞,此次轮到Jackson了,竟由阿里云上报
从8.5号Jackson官方知晓此漏洞,到8.25号最终发版解决此问题,「整整20天」,为什么须要这么久?我想真像只有一个:此漏洞影响真的不大,或者说影响范围较窄。回忆下上次Fastjson出现的那个安全漏洞,24h内就给与了修复版本,并非由于咱们反映迅速,而是由于影响重大等不了...

修复建议

一股脑的所有升级到2.9.10.6或以上版本固然能规避此安全问题,可是你是否想过,你负责多少个服务?你团队、公司一共有多少个服务?你品,你细品,头大吗?

从官方对这次漏洞作出的反射弧时间来看,本次漏洞影响是相对较小的,所以我总结了下修复建议,假若你「同时知足」以下三个条件,那么须要立马修复,不然可暂不理会:

  1. 对公网提供API接口
  2. Jackson版本小于2.9.10.6
  3. 工程内「有」使用(或者引入)以下4个类任意一个:
    a,br.com.anteros.dbcp.AnterosDBCPDataSource
    b.com.pastdev.httpcomponents.configuration.JndiConfiguration
    c.com.nqadmin.rowset.JdbcRowSetImpl
    d.org.arrah.framework.rdbms.UpdatableJdbcRowsetImpl

条件3的理论支撑是我对比2.9.10.6版本release改动源码 + 我和我司安全组人员的讨论结果。修复方案也仅仅是在黑名单里新增了这4个类,截图以下:
再爆安全漏洞,此次轮到Jackson了,竟由阿里云上报

✍总结

外行看热闹,内行看门道。千万不能说Fastjson出了个漏洞,Jackson也来一个就得出结论说打平手了,那会稍显外行。正所谓假设能够大胆,但当心求证,下结论须要谨慎。

总的来讲,这次漏洞影响甚小,不用大惊小怪,我就继续个人Jackson之旅啦。

✔推荐阅读:

  • Fastjson到了说再见的时候了
    1. 初识Jackson -- 世界上最好的JSON库
    1. 妈呀,Jackson原来是这样写JSON的
    1. 懂了这些,方敢在简历上说会用Jackson写JSON
    1. JSON字符串是如何被解析的?JsonParser了解一下
    1. JsonFactory工厂而已,还蛮有料,这是我没想到的
    1. 二十不惑,ObjectMapper使用也再也不迷惑
    1. Jackson用树模型处理JSON是必备技能,不信你看

再爆安全漏洞,此次轮到Jackson了,竟由阿里云上报

关注A哥,开启专栏式学习
再爆安全漏洞,此次轮到Jackson了,竟由阿里云上报再爆安全漏洞,此次轮到Jackson了,竟由阿里云上报

扫码关注后,回复“专栏”进入更多Spring专栏学习
右侧为私人微信(加好友备注:Java入群)
我的站点(本文已收录):https://www.yourbatman.cn

相关文章
相关标签/搜索