「高危漏洞」起床!检查SpringBoot 版本
jackson-databind 又出现了反序列化漏洞(2020-08-27),漏洞编号为 CVE-2020-24616,影响到数据层面,判断为高危漏洞
br.com.anteros:Anteros-DBCP 中存在新的反序列化利用链,可以绕过 jackson-databind 黑名单限制,远程攻击者通过向使用该组件的 web 服务接口发送特制请求包,可以造成 远程代码执行。
影响版本
Jackson-databind < 2.9.10.6
影响 Spring Boot 版本
Jackson 作为 Spring Boot 内置的 json 解析框架,只要引入了
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
自动引入 jackson 相关 jar , 笔者通过翻阅 spring-boot-dependencies 依赖发现低于 spring boot 2.1.10 版本都会有相关的问题。
如何修复
jackson 作为常用的 JSON 解析器,大多数框架中已经内置此模块,通过 exclusion 每个来处理及其不现实。
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
<exclusions>
<exclusion>
<artifactId>jackson-databindartifactId>
<groupId>com.fasterxml.jackson.coregroupId>
exclusion>
exclusions>
dependency>
<dependency>
<groupId>com.xkcoding.nacosgroupId>
<artifactId>nacos-configartifactId>
<version>1.1.4version>
<exclusions>
<exclusion>
<artifactId>jackson-databindartifactId>
<groupId>com.fasterxml.jackson.coregroupId>
exclusion>
exclusions>
dependency>
最简单的方式在 根 pom 的 dependencyManagement 节点增加一个版本指定,则所有引用包中引入的 jackson 版本都会统一成此版本
<dependencyManagement>
<dependencies>
<dependency>
<artifactId>jackson-databindartifactId>
<groupId>com.fasterxml.jackson.coregroupId>
<version>2.9.10.6version>
dependency>
dependencies>
dependencyManagement>
总结
不必惊慌,pig4cloud[1] 默认没开启动态类型,并且 spring cache[2] 没有使用 jackson 序列化。
如果你的 redis 采用的 jackson 序列化,并且是注入的全局的 ObjectMapper 请注意,请采用类似 mica-redis[3] 这样的 copy,来避免对全局的 ObjectMapper 污染导致不安全。
参考资料
pig4cloud: https://gitee.com/log4j/pig
[2]spring cache: https://gitee.com/log4j/pig/pulls/63
[3]mica-redis: https://gitee.com/596392912/mica