CVE-2024-38810: 使用 @AuthorizeReturnObject 时缺少授权

| 2024年8月19日 | CVE-2024-38810

描述

使用 @AuthorizeReturnObject 或 Spring Security 生成的 AuthorizationAdvisorProxyFactory @Bean 来包装对象的应用程序可能未完全应用所有安全建议。

当未应用方法安全建议时,这意味着像 @PreFilter@PreAuthorize 这样的注解可能对这些包装对象无效。

请注意,这影响任何使用 Spring Security 方法安全建议的 @Bean

要使此问题影响应用程序,以下所有条件都必须为真:

  • AnnotationAwareAspectJAutoProxyCreator 必须是用于创建代理的自动代理创建器;这可以通过您的应用程序声明性地完成,或通过 @EnableAspectJAutoProxy 启用,或通过 Spring Boot 借助于使用 spring-aspects 或使用 spring-aspects 的启动器来启用
  • 应用程序上下文中必须至少存在一个 FactoryBean
  • 应用程序必须使用 @EnableMethodSecurity 启用方法安全
  • 应用程序必须使用 @AuthorizeReturnObject 注解或 Spring Security 生成的 AuthorizationAdvisorProxyFactory @Bean 来包装对象
  • 应用程序必须在这些包装对象上使用 @PreFilter, @PostFilter, @PreAuthorize, 或 @PostAuthorize

如果所有这些都为真,那么一些方法安全建议可能不会应用于由 @AuthorizeReturnObjectAuthorizationAdvisorProxyFactory 包装的对象。

以下任何情况为真的应用程序不受影响:

  • 应用程序未在任何包装对象上使用 @PreFilter, @PostFilter, @PreAuthorize, 或 @PostAuthorize
  • 应用程序未通过 @EnableMethodSecurity 启用方法安全
  • 应用程序未使用 @AuthorizeReturnObject 或 Spring Security 生成的 AuthorizationAdvisorProxyFactory @Bean
  • 应用程序没有任何 FactoryBean
  • 应用程序未将 AnnotationAwareAspectJAutoProxyCreator 用于自动代理创建

受影响的 Spring 产品和版本

这影响以下 Spring Security 版本

  • 6.3.0 和 6.3.1

缓解措施

受影响版本的用户应升级到相应的修复版本。

受影响版本 修复版本 可用性
6.3.x 6.3.2 OSS

无需其他缓解措施。

致谢

此问题由 Josh Cummings 负责任地报告。

参考资料

历史

  • 2024-08-19 - 初步报告发布

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有