CVE-2025-41254CVE-2025-41254是Spring Framework中STOMP over WebSocket功能存在的一个安全绕过漏洞。该漏洞允许攻击者绕过Spring框架中配置的授权检查机制,向WebSocket端点发送未经授权的消息。
STOMP(Simple Text Oriented Messaging Protocol)是一种基于文本的简单消息协议,常用于WebSocket通信中实现消息的发布/订阅模式。Spring Framework通过spring-messaging模块为STOMP over WebSocket提供了完整的支持,包括消息路由、订阅管理和安全授权等功能。开发人员通常会使用@MessageMapping注解来定义消息处理方法,并结合Spring Security进行消息级别的权限控制。
该漏洞由安全研究员Jannis Kaiser负责任地披露,并已被VMware/Spring官方确认。漏洞的CVSS评分为4.3,属于中危级别。虽然评分不算特别高,但由于Spring Framework在Java企业级开发中的广泛使用,该漏洞可能影响大量基于Spring构建的实时通信应用,如在线聊天系统、实时通知平台、金融交易推送等场景。
该漏洞影响Spring Framework 6.2.x、6.1.x、6.0.x和5.3.x等多个主流版本线,涵盖了近年来绝大多数仍在使用的Spring版本。Spring官方已发布修复版本(6.2.12、6.1.24和5.3.46),建议相关用户尽快升级以修复此漏洞。
Spring Framework的STOMP over WebSocket功能通过spring-messaging模块实现消息的订阅和分发。在正常的安全配置下,开发者可以使用Spring Security的@PreAuthorize注解或自定义的ChannelInterceptor来对STOMP消息进行权限校验,确保只有经过授权的用户才能向特定目的地发送消息或订阅特定频道。
该漏洞的根本原因在于Spring框架在处理STOMP消息时存在授权检查的绕过路径。攻击者可以通过构造特殊的STOMP帧或利用消息处理流程中的逻辑缺陷,绕过正常的安全检查机制。具体而言,当WebSocket连接建立后,客户端可以发送SEND帧来向特定目的地发布消息,或者发送SUBSCRIBE帧来订阅消息。Spring框架在处理这些帧时,如果存在授权检查的不完善之处,攻击者就可能利用此缺陷发送未授权的消息。
利用该漏洞需要满足以下条件:首先,目标应用必须使用Spring的STOMP over WebSocket功能;其次,应用必须配置了基于消息级别的安全检查(如@PreAuthorize或自定义拦截器);最后,需要用户交互(如受害者点击恶意链接或访问恶意页面)来触发漏洞。
攻击者可以通过诱导用户访问恶意网页或通过跨站WebSocket劫持(CSWSH)的方式,利用已建立的WebSocket连接发送未授权的STOMP消息,从而执行未授权的操作,如向管理频道发送消息、篡改数据或执行其他恶意行为。