lau*_*key 3 spring jackson deserialization spring-boot
我试图确保我以安全的方式使用 spring-boot 和 Jackson。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 进行修补(来源:参见owtowncoder于 4 月 13 日评论,https: //github.com/FasterXML /jackson-databind/issues/1599)并且不容易受到该错误的影响。
那么使用属于 spring、spring-boot 或 Spring Security 的 Jackson 版本执行反序列化是否安全?
SpringBoot 的每个版本都使用 Jackson API 的易受攻击版本,因为实际上没有任何版本不至少部分容易受到攻击。如果您允许将不受信任的第三方数据反序列化为通用集合(Map<>、List<>等),则可能会发生这种情况。即使您在代码中向这些结构添加泛型,这些泛型也只是编译时的,并且不能强制在 JVM 运行时进行键入。
如果您正在访问外部 Restful api,那么您将必须实现自己的类型。如果您使用 RestTemplate,则必须在它使用的对象映射器上手动设置。
仅供参考:SpringBoot 还使用了有漏洞的 logback 版本。只需将其显式包含在您的构建中即可更新到最新版本。
| 归档时间: |
|
| 查看次数: |
6750 次 |
| 最近记录: |