Spring Boot 的用户要注意 Jackson 反序列化漏洞!

在2019年7月29日,发布了影响com.fasterxml.jackson.core:jackson-databind直至2.9.9.2的所有版本的严重程度高的反信任数据反序列化(CVE-2019-14379,CVE-2019-14439)。

对于使用Spring Boot的用户,请注意,当前版本(2.1.7)取决于较旧的易受攻击的jackson-databind 2.9.9软件包。

关于漏洞

这不是第一次让jackson-databind程序包受到“反信任的数据反序列化”漏洞的攻击。实际上,自2018年以来,已知和披露了十多个此类漏洞,更不用说几乎所有这些漏洞都被认为是严重漏洞。

该库的主要目标是将Java对象序列化为JSON,反之亦然。问题在于将JSON反序列化为Java对象。当编写不良的Java应用程序能够反序列化来自不受信任来源的JSON字符串时,黑客可以使用它来启动远程代码执行。

如果为Jackson激活了多态类型,则攻击者可以在控制JSON输入时使用小工具发起攻击。小工具是在易受攻击的进程中已经具有现有可执行代码的类或函数。可以将这些现有的可执行代码重新用于恶意目的。

对于此特定漏洞,当启用默认输入Jackson时,可能会滥用Ehcache的小工具。jackson-databind的维护者通过将特定的小工具添加到已经存在的黑名单中,很快解决了这一问题。2.9.9.3版已发布,不再包含此漏洞。

Spring Boot在撰写此博客时,Spring Boot的最新发行版是2.1.7。 此版本依赖于较早的jackson-databind 2.9.9软件包。

这意味着,如果您使用Sping Boot Initialzr构建新的Spring-Boot应用程序,则肯定会包含一个易受攻击的jackson-databind版本。

虽然尚未发布新版本的Spring Boot或spring-boot-starter-data-rest,但我们可以切换出jackson-databind版本。一种方法是排除单个软件包,如下面的Maven示例所示:


   
       org.springframework.boot
       spring-boot-starter-data-rest
       
           
               com.fasterxml.jackson.core
               jackson-databind
           
       
   
   
       com.fasterxml.jackson.core
       jackson-databind
       2.9.9.3
   

更好的解决方案是将Maven属性设置为适当的版本。这样,Spring Boot导入了可处理所有Jackson依赖关系的固定Jackson物料清单。在Gradle项目中,可以在gradle.properties文件中设置类似的内容。有关Maven BOM的详细信息以及这对于Spring Boot为何重要,请阅读博客:“ 什么是BOM表文件 ”


    2.9.9.20190807

像jackson-databind这样的库在许多情况下都是间接依赖,它将成为更大框架的一部分。因此,明智的是扫描您的应用程序以了解已知漏洞,尤其是这些间接依赖性。通过定期执行此操作,您知道自己很脆弱,并且可能能够相应地解决这些问题。

from: https://dev.to//brianverm/jackson-deserialization-vulnerability-3bpe

你可能感兴趣的:(spring,安全,java)