Spring Security和Spring框架中曝出两个高危漏洞(CVE-2025-41248和CVE-2025-41249),攻击者可利用这些漏洞绕过企业应用中的授权控制机制。
当Spring Security的@EnableMethodSecurity特性与方法级注解(如@PreAuthorize和@PostAuthorize)结合使用时,若服务接口或抽象基类采用无界泛型,注解检测机制将无法定位重写方法上的安全注解,导致受保护端点可能被未授权访问。
**核心要点**
1. Spring Security 6.4.x/6.5.x会忽略方法级注解,导致授权绕过
2. Spring Framework 5.3.x/6.1.x/6.2.x存在注解检测失效问题
3. 建议升级至修复版本或在具体类中重新声明注解
漏洞技术细节
授权绕过漏洞(CVE-2025-41248)
该漏洞影响Spring Security 6.4.0-6.4.9和6.5.0-6.5.3版本。当参数化超类定义了安全方法签名,而子类未重新声明相关注解时,框架的元数据解析器无法正确遍历泛型类型层次结构。攻击者可利用这一逻辑缺陷,通过调用仅在泛型接口上定义的安全操作,绕过依赖@PreAuthorize("hasRole('ADMIN')")等SpEL表达式的授权检查。该漏洞CVSS 3.1基础评分为6.5(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)。
注解检测漏洞(CVE-2025-41249)
该漏洞影响Spring Framework核心模块5.3.0-5.3.44、6.1.0-6.1.22和6.2.0-6.2.10版本。当授权或审计相关的方法注解定义在泛型基类上时,注解检测缺陷会导致系统无法识别这些注解。由于缺少注解元数据,Spring Security无法强制执行方法级安全约束。
CVE编号 | 漏洞名称 | CVSS 3.1评分 | 严重等级 |
---|---|---|---|
CVE-2025-41248 | 参数化类型方法安全注解的Spring Security授权绕过漏洞 | 6.5 | 中危 |
CVE-2025-41249 | 泛型超类上的Spring Framework注解检测漏洞 | 6.5 | 中危 |
修复方案
Spring维护团队已为所有受影响模块发布修复版本:
- Spring Security应升级至6.4.10或6.5.4
- Spring Framework建议升级至5.3.45、6.1.23或6.2.11
无法立即升级的用户可采用临时解决方案:在具体类中直接声明所有安全方法,而非依赖从泛型超类继承的注解。确保在每个实现类上一致使用@PreAuthorize、@PostAuthorize等方法安全注解可有效防止绕过。
开发团队应检查服务接口中@EnableMethodSecurity与泛型的结合使用情况,更新静态分析工具和自定义注解扫描脚本以确保正确检测跨类型层次结构的注解方法。安全团队需在CI/CD管道中优先处理这些升级,避免受保护API意外暴露。持续验证方法级安全性,结合针对泛型服务模式的代码审查,将有效加强授权执行并防范类似缺陷。
参考来源:
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)