冤冤相报何时了,得饶人处且饶人。本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈、MyBatis、JVM、中间件等小而美的专栏供以免费学习。关注公众号【BAT的乌托邦】逐个击破,深入掌握,拒绝浅尝辄止。

✍前言

你好,我是YourBatman。

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

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

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

附:FasterXML/jackson-databind是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。Jackson是美国FasterXML公司的一款适用于Java的数据处理工具。jackson-databind是其中的一个具有数据绑定功能的组件。

✍正文

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

关于本次漏洞

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

漏洞详情

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

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

漏洞评级

评定方式 等级
威胁等级 高危
影响面 有限
漏洞评分 75

对此评级没有概念?那就来个参照物比一比嘛,我把Fastjson上次(2020-05)的安全漏洞评级给你做对比:

评定方式 等级
威胁等级 高危
影响面 广泛
漏洞评分 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官方上报了这个安全漏洞:



当天,官方回复预计会在8-15左右发布bug修复版本修复次问题(waht?知道问题了还得10后修复?):



可结果是10天都不止。直到8.25这天,Jackson发布2.9.10.6版本修复了此问题,并向外界发公告公布此漏洞:

从8.5号Jackson官方知晓此漏洞,到8.25号最终发版解决此问题,整整20天,为何需要这么久?我想真像只有一个:此漏洞影响真的不大,或者说影响范围较窄。回忆下上次Fastjson出现的那个安全漏洞,24h内就给与了修复版本,并不是因为我们反映迅速,而是因为影响重大等不了...

修复建议

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

从官方对此次漏洞做出的反射弧时间来看,本次漏洞影响是相对较小的,因此我总结了下修复建议,倘若你同时满足如下三个条件,那么需要立马修复,否则可暂不理会:

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

条件3的理论支撑是我对比2.9.10.6版本release改动源码 + 我和我司安全组人员的讨论结果。修复方案也仅仅是在黑名单里新增了这4个类,截图如下:

✍总结

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

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

推荐阅读:

再爆安全漏洞,这次轮到Jackson了,竟由阿里云上报的更多相关文章

  1. 以太坊再爆高危漏洞!黑客增发ATN 1100万枚token事件始末

    事情发生在5月中旬,ATN技术人员发现Token合约由于存在漏洞受到攻击.不过ATN基金会随后透露,将销毁1100万个ATN,并恢复ATN总量,同时将在主链上线映射时对黑客地址内的资产予以剔除,确保原 ...

  2. openssl 再爆惊天漏洞及紧急修复指南

    openssl 又摊上大事了,2014年6月5日,SSL/TLS Man-in-the-Middle Vulnerability 该漏洞使得攻击者能够拦截恶意中间节点加密和解密数据.同一时候强迫使用弱 ...

  3. WebLogic Server再曝高风险远程命令执行0day漏洞,阿里云WAF支持免费应急服务

    6月11日,阿里云安全团队发现WebLogic CVE-2019-2725补丁绕过的0day漏洞,并第一时间上报Oracle官方, 6月12日获得Oracle官方确认.由于Oracle尚未发布官方补丁 ...

  4. 云原生生态周报 Vol. 7 | Docker 再爆 CVE

    业界要闻 Docker 基础镜像 Alpine 爆出提权漏洞(CVE-2019-5021):该CVE影响自 Alpine Linux 3.3 版本开始的所有 Docker 镜像.该漏洞的机制在于 Al ...

  5. 思迈特软件Smartbi发展再提速,完成B+轮过亿战略融资

    2021年4月,思迈特软件(Smartbi)宣布完成亿级B+轮战略融资,本轮投资方为领先的全球企业级数据分析和组织智能服务平台提供商--明略科技.此前,思迈特软件曾先后获得来自价值资本.方广资本的数千 ...

  6. 关于阿里云ECS Centos 5/6/7 Linux Glibc库严重安全漏洞修复方法

    日前Linux GNU glibc标准库的 gethostbyname函数爆出缓冲区溢出漏洞,漏洞编号为CVE-2015-0235.黑客可以通过gethostbyname系列函数实现远程代码执行,获取 ...

  7. 漏洞:阿里云盾phpMyAdmin <=4.8.1 后台checkPageValidity函数缺陷可导致GETSHELL

    阿里云盾提示phpMyAdmin <=4.8.1会出现漏洞有被SHELL风险,具体漏洞提醒: 标题 phpMyAdmin <=4.8.1 后台checkPageValidity函数缺陷可导 ...

  8. 预警| Confluence 高危漏洞被大规模利用,阿里云WAF接入即可防护,支持免费应急服务

    2019年4月4日,阿里云安全应急响应中心监测到Confluence 官方发布安全更新指出,Widget Connector 存在服务端模板注入漏洞,攻击者能利用此漏洞实现目录穿越遍历甚至远程命令执行 ...

  9. 阿里云提示Discuz uc.key泄露导致代码注入漏洞uc.php的解决方法

    适用所有用UC整合 阿里云提示漏洞: discuz中的/api/uc.php存在代码写入漏洞,导致黑客可写入恶意代码获取uckey,.......... 漏洞名称:Discuz uc.key泄露导致代 ...

随机推荐

  1. log4net用法实例

    内容转载自:https://www.cnblogs.com/youring2/archive/2011/04/27/2030424.html 1.引用log4net.dll 2.在AssemblyIn ...

  2. canvas小画板--(1)平滑曲线

    功能需求 项目需求:需要实现一个可以自由书写的小画板 简单实现 对于熟悉canvas的同学来说,这个需求很简单,短短几十行代码就能实现: <!doctype html> <html& ...

  3. 001_go语言中的hello world

    代码演示: package main import "fmt" func main() { fmt.Println("hello world") } 代码解读: ...

  4. Python 创建用户界面之 PyQt5 的使用

    之前给大伙介绍了下 tkinter,有朋友希望小帅b对其它的 Python  GUI 框架也说道说道,那么今天就来说说 PyQt5 如何创建用户界面.   很多人学习python,不知道从何学起.很多 ...

  5. 【av68676164(p25-p30)】同步和P-V操作

    4.5 同步和P-V操作 4.5.1 同步和互斥的概念 进程的互斥关系 例子 进程的互斥关系 多个进程由于共享了独占性资源,必须协调个进程对资源的存取顺序:确保没有两个或以上的进程同时进行存取操作. ...

  6. 常哥带你认识NoSQL和Redis的强大

    各位朋友,这篇文章是针对Redis快速了解的内容,为了学好Redis在这里首先跟大家聊聊NoSQL相关内容,有了概念和方向后,我们再学习Redis大家会感觉得心应手. [公众号dotNet工控上位机: ...

  7. 谈谈集成测试(integration testing)

    对于软件开发来说,软件测试是一个几乎贯穿所有阶段的活动,所以测试的重要性毋庸置疑.不同开发组织如何在不同的产品研发阶段进行测试,也在很大程度上反映了其研发能力和质量控制能力.软件测试有很多类型,包括单 ...

  8. 基于 Docker 搭建 Consul 多数据中心集群

    本文介绍了在 Windows 10 上基于 Docker 搭建 Consul 多数据中心集群的步骤,包括 Consul 镜像的拉取和容器的创建,每个数据中心对应服务端节点和客户节点的创建,节点之间相互 ...

  9. golang bool值

    目录 前言 1.基本介绍 2.类型转换 3.使用: 跳转 前言 不做文字的搬运工,多做灵感性记录 这是平时学习总结的地方,用做知识库 平时看到其他文章的相关知识,也会增加到这里 随着学习深入,会进行知 ...

  10. 掌握提高 Web 应用的性能的方法 之 优化 PHP 和 Laravel

    Laravel 有很多东西.但是快不是其中之一.让我们学习一些优化技巧,以加快运行速度! 自从 Laravel 诞生以来,没有一个 PHP 开发人员不受她的影响.他们是喜欢 Laravel 提供的快速 ...