什么版本的杰克逊使用弹簧靴?

时间:2017-12-07 18:56:48

标签: spring spring-boot jackson deserialization

我正在努力确保我以安全的方式使用弹簧靴和杰克逊。某些版本的Jackson存在反序列化错误(来源:https://github.com/FasterXML/jackson-databind/issues/1599)。

默认情况下,Spring Security不使用Jackson执行反序列化,因此这是用户的明确选择(来源:https://pivotal.io/security/cve-2017-4995)。

如果Jackson用于执行反序列化,则修补版本2.7,2.8,2.8.9和2.7.9.1以及2.9.0.pr3(源:请参阅4月13日评论的cowtowncoder,https://github.com/FasterXML/jackson-databind/issues/1599)并且不容易受到这个bug的影响。

是否安全,然后使用作为spring,spring-boot或Spring Security的一部分的Jackson版本执行反序列化?

1 个答案:

答案 0 :(得分:0)

每个版本的SpringBoot都使用Jackson API的易受攻击版本,因为实际上没有任何版本至少部分不能被攻击。如果您允许将不受信任的第三方数据反序列化为通用集合(Map<>,List<>等),则会发生这种情况。即使您在代码中向这些结构添加泛型,这些泛型也只是编译时间,并且不能强制在JVM运行时中键入。

如果您正在访问外部的restful api,那么您必须实现自己的输入。如果您使用的是RestTemplate,则必须在它使用的对象映射器上手动设置。

仅供参考:SpringBoot还使用易受攻击的版本的logback。只需在构建中明确包含它即可更新到最新版本。