动态代码评估:不安全的反序列化(Spring Boot 2) - 如何避免与执行器相关的强化问题,还是误报?
Posted
技术标签:
【中文标题】动态代码评估:不安全的反序列化(Spring Boot 2) - 如何避免与执行器相关的强化问题,还是误报?【英文标题】:Dynamic Code Evaluation: Unsafe Deserialization (Spring Boot 2) - how to avoid actuator related fortify issue, or is it a false positive? 【发布时间】:2019-03-27 11:41:57 【问题描述】:我正在使用以下执行器依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
使用弹簧靴 2,
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
任何与 fortify 相关的漏洞的 cmets,或者我们是否有任何理由获得关于 fortify 问题的误报。
【问题讨论】:
强化检查工件是否不包含任何 CVE。如您所见,Spring-boot 2.0.5(spring.io/blog/2018/09/12/spring-boot-2-0-5) 在该版本中宣布了一个安全更新。所以对于 Fortify 来说,知道你使用哪个版本的 spring-boot 来帮助它考虑是否是 FP 似乎很重要 我正在使用 Spring boot 2.1.2,并且从依赖项文件夹中我看到它使用的是 Jackson 2.9.8 版本,即使这样我也看到 Fortify 报告了与<artifactId>spring-boot-starter-actuator</artifactId>
行相同的问题所以看起来这不是因为杰克逊。 Fortify 也将其视为关键问题。
@VC2019 这里也一样。你找到解决方案了吗?在此处使用 Spring Boot 2.1.9。
我可以通过查看这篇帖子***.com/questions/61141809/…来解决这个问题
【参考方案1】:
我怀疑 Fortify 提出的问题不是因为 spring-boot-starter-actuator
本身,而是因为它对包含 deserialization of untrusted data vulnerability 的 Jackson 的传递依赖。但是,对于易受攻击的应用程序,非默认且可能非常不寻常的一组情况必须是真实的。您可以通过 Jackson 的作者this blog post 了解有关这些情况的更多信息。 Spring Boot 的 Actuator 不启用多态类型处理,因此,如果 Fortify 警告是由于 Jackson 引起的,则为误报。
Jackson 2.9.7 中的漏洞是 fixed,通过阻止某些类进行多态反序列化。 Spring Boot 2.0.6 和 2.1.0 默认使用 Jackson 2.9.7。
【讨论】:
弹簧执行器通过 JMX 和 HTTP/JSON 公开。由于java.io.ObjectInputStream#readObject
在类未扩展预期的类时抛出类转换异常之前实例化接收到的类的名称,JVM 存在 Java 反序列化漏洞。 JRE 的java.security
现在包含过滤器选项,但我怀疑部署是否会处理这些问题。同时,禁用 Spring JMX 端点是否可以解决根本原因? docs.spring.io/spring-boot/docs/current/reference/html/…
acunetix.com/blog/web-security-zone/old-java-libraries以上是关于动态代码评估:不安全的反序列化(Spring Boot 2) - 如何避免与执行器相关的强化问题,还是误报?的主要内容,如果未能解决你的问题,请参考以下文章
Java Jackson json 到对象反序列化。如何处理 OWASP 不安全的反序列化?