CVE-2024-38807

伪造签名
影响
Spring Boot
>=2.7.0, <=2.7.21 >=3.0.0, <=3.0.16 >=3.1.0, <=3.1.12 >=3.2.0, <=3.2.8 >=3.3.0, <=3.3.2
春季
未找到项目。
感叹号圆圈图标
补丁可用
HeroDevs 提供的 Never-Ending Support (NES) 版本已修复此漏洞。

概述

Spring Boot 提供了一个随时可用的 Spring 平台预配置,使用户能够快速开发 Java 应用程序。 通过利用Spring Framework,Spring Boot 可简化网络应用程序的开发,同时提供各种工具来管理应用程序配置、数据访问和安全性。

在 Spring Boot 中发现了签名伪造漏洞路径遍历漏洞(CVE-2024-38807)。利用此漏洞,黑客可使看似由一个用户签名的内容实际上由另一个用户签名。 这会影响使用 spring-boot-loader 或 spring-boot-loader-classic 并使用自定义代码对嵌套的 jar 进行签名验证的应用程序。

This issue affects Spring Boot versions >=2.7.0 through <=2.7.21, >=3.0.0 through <=3.0.16, >=3.1.0 through <=3.1.12, >=3.2.0 through <=3.2.8, and >=3.3.0 through<=3.3.2.

详细信息

模块信息

  • 产品Spring Boot
  • 受影响的软件包和版本: 一些文字
    • spring-boot-loader – versions >=2.7.0 through <=2.7.21
    • spring-boot-loader-classic – versions: >=3.0.0 through <=3.0.16, >=3.1.0 through <=3.1.12, >=3.2.0 through <=3.2.8, and >=3.3.0 through<=3.3.2
  • GitHub 存储库: https://github.com/spring-projects/spring-boot 
  • 软件包管理器Maven

漏洞信息

在上述突出显示版本中的 Spring Boot 的 spring-boot-loader spring-boot-loader-classic 软件包中发现了此中严重性漏洞。

利用自定义代码验证嵌套在其他 Jar 中的签名 Jar 的 Spring Boot 驱动的应用程序中存在此漏洞,这些应用程序可能会错误地归属于较早加载的 Jar 的签名。

造成该漏洞的原因是嵌套的 Jar 和证书在运行时的加载和处理方式存在漏洞。其结果是,在执行动态代码前依赖加密签名的应用程序可以将未签名、不匹配或无效的 Jar 验证为已签名。 

复制步骤

可以通过以下步骤重现无效签名丢失或无效签名的加载:

  1. 创建或选择一个罐子,并使用 jarsign工具进行签名。
  2. 在 Jar(即invalid . jar)中添加一个单独编译的类文件(即Foo .class)。
  3. 验证 jar 是否无效:jarsigner -verify invalid.jar
  4. 将无效 jar 嵌套到另一个 jar(即parent.jar)中
  5. 配置应用程序以确保加载parent.jar invalid. jar
  6. 请注意,加载这两个罐子时没有任何警告。 

请注意,执行自定义签名验证的应用程序也可能受到影响。重现此漏洞的步骤在很大程度上取决于应用程序,因此我们的团队将根据情况更新重现问题的步骤。如果您觉得您的项目可能会受到这种影响,请联系 HeroDevs团队,讨论您的具体项目情况。

缓解

  • Spring Boot 3.2 和 3.3 用户应更新到解决此问题的最新社区支持源版本(分别至少为 3.29 和 3.3.3)。  
  • 包括 2.7 在内的其他 Spring Boot 版本不再受社区支持。社区支持版本不会收到任何解决此问题的更新。有关详细信息,请参阅此处
  • 2.6.x 及以下版本的 Spring Boot 用户不受此漏洞的直接影响,因为签名验证是在 2.7.0 中引入的,但在这些版本中,带有无效签名的 Jars 仍有可能无错加载。因此,我们建议将所有项目更新到受支持的 Spring Boot 版本。 
  • 确保所有 jar 都经过适当签名并有效,以限制风险并防止运行时出错。

对于需要时间进行迁移的用户来说,他们可以利用HeroDevs这样的商业支持合作伙伴来提供 EOL 后的安全支持。

学分

参考资料

漏洞详情
身份证
CVE-2024-38807
受影响的项目
Spring Boot
受影响的版本
>=2.7.0, <=2.7.21 >=3.0.0, <=3.0.16 >=3.1.0, <=3.1.12 >=3.2.0, <=3.2.8 >=3.3.0, <=3.3.2
出版日期
2024 年 8 月 23 日
≈ 固定日期
2024 年 9 月 25 日
固定在
严重性
中型
类别
伪造签名