Spring Framework通过spring-messageing模块和STOMP代理对象通讯。根据漏洞描述可以知漏洞出现在spring-message模块 或者是 stomp-websockets模板块,下面逐一分析:
在引入且使用spring-messaging组件时,攻击者可通过WebSocket向服务器端发送携带有恶意代码的STOMP消息,从而导致远程代码执行攻击。
安全漏洞公告 2018年4月5日,Pivotal发布了Spring Framework存在多个安全漏洞的公告: (1)spring-messaging模块远程代码执行漏洞 对应CVE编号:CVE-2018 *版本以及不再支持的旧版本,通过spring-messaging和spring-websocket模块提供的基于WebSocket的STOMP,存在被攻击者建立WebSocket连接并发送恶意攻击代码的可能 漏洞影响范围 Spring spring-messaging远程代码执行漏洞(CVE-2018-1270)、(CVE-2018-1271)、(CVE-2018-1272)等影响版本如下: (1)Spring
方法一(spring-messaging为例) 在docker中获取Spring漏洞环境源码(默认已有docker环境) docker漏洞环境靶场(http://vulhub.org/#/environments 查看Spring漏洞信息: docker漏洞环境(https://hub.docker.com/u/vulhub/) 查看你要拉取镜像与方法(或docker中使用搜索 docker search spring-messaging 拉取镜像: docker pull vulhub/spring-messaging:5.0.4。 ? 查看拉取的镜像。 ? 运行镜像(容器)。 ?
自Spring4.1以后,提供了与spring-messaging模块的集成。 spring-tx 模块:事务模块,支持用于实现特殊接口和所有POJO(普通Java对象)类的编程和声明式事务管理。 消息(Messaging) 即 spring-messaging 模块。 spring-messaging 是从 Spring4 开始新加入的一个模块, 该模块提供了对消息传递体系结构和协议的支持。
Spring Messaging 埋点实现原理 spring-messaging 模块为集成 messaging api 和消息协议提供支持。 这里我们先看一个 pipes-and-filters 架构模型: spring-messaging 的 support 模块中提供了各种不同的 MessageChannel 实现和 channel interceptor 支持,因此在对 spring-messaging 进行埋点时我们自然就会想到去使用 channel interceptor。 // SOFATracer 实现的基于 spring-messaging 消息拦截器 public class SofaTracerChannelInterceptor implements ChannelInterceptor 参考 SOFATracer spring源码分析之spring-messaging模块详解
spring-jms 模块(Java Messaging Service)能够发送和接受信息,自 Spring Framework 4.1 以后,他还提供了对 spring-messaging 模块的支撑 1.5 报文发送:即 spring-messaging 模块。 spring-messaging 是从 Spring4 开始新加入的一个模块,主要职责是为 Spring 框架集成一些基 础的报文传送应用。
2.同时增加了 messaging 模块(spring-messaging),提供了对 STOMP 的支持,以及用于路由和处理来自 WebSocket 客户端的 STOMP 消息的注解编程模型。 spring-messaging 模块中还 包含了 Spring Integration 项目中的核心抽象类,如 Message、MessageChannel、MessageHandler。
spring-jms 模块(Java Messaging Service)能够发送和接收信息,自 Spring Framework 4.1 以 后,他还提供了对 spring-messaging 模块的支撑 通信报文 即 spring-messaging 模块,是从 Spring4 开始新加入的一个模块,主要职责是为 Spring 框架集 成一些基础的报文传送应用。 集成兼容 即 spring-framework-bom 模块,Bill of Materials.解决 Spring 的不同模块依赖版本不同问题 通信报文 即 spring-messaging 模块,
spring-jms模块能够发送和接收信息,自Spring 4.1开始,它还提供了对spring-messaging模块的支撑。 5 通信报文 通信报文即spring-messaging模块,它是Spring 4新加入的一个模块,主要职责是为Spring 框架集成一些基础的报文传送应用。
portlet的mvc实现; spring-websocket:提供websocket功能; test&messaging spring-test:spring测试,提供junit与mock测试功能; spring-messaging
漏洞安全公告 2018年5月9日,Pivotal发布了Spring Framework存在多个安全漏洞的公告: (1)通过spring-messaging模块提供的基于WebSocket的STOMP代理存在拒绝服务漏洞 *版本以及不再支持的旧版本,通过spring-messaging和spring-websocket模块提供的基于WebSocket的STOMP,存在被攻击者建立WebSocket连接并发送恶意攻击代码的可能
Spring-Expression:使用表达式语言在运行时查询和操作对象 (2)AOP Spring-AOP:基于代理的AOP支持 Spring-ASpects:基于AspectJ的AOP支持 (3) 消息Messaging Spring-Messaging
三、消息 Spring4.0以后新增了消息(Spring-messaging)模块,该模块提供了对消息传递体系结构和协议的支持。 自Spring4.1以后,提供了与Spring-messaging模块的集成。 Spring-tx模块(事务模块):支持用于实现特殊接口和所有POJO(普通Java对象)类的编程和声明式事务管理。
AOP Spring-AOP:基于代理的AOP支持; Spring-Aspect:基于AspectJ的AOP支持; 消息(Messaging) Spring-Messaging:对消息架构和协议的支持
spring-jms模块能够发送和接收信息,自Spring 4.1开始,它还提供了对spring-messaging模块的支撑。 5 通信报文 通信报文即spring-messaging模块,它是Spring 4新加入的一个模块,主要职责是为Spring 框架集成一些基础的报文传送应用。
spring-jms模块能够发送和接收信息,自Spring 4.1开始,它还提供了对spring-messaging模块的支撑。 4.5 通信报文 通信报文即spring-messaging模块,它是Spring 4新加入的一个模块,主要职责是为Spring 框架集成一些基础的报文传送应用。
--Spring信息包--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-messaging
--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-messaging
Object> headers, @Nullable MessagePostProcessor postProcessor) throws MessagingException; } spring-messaging RocketMQClientTemplate继承了AbstractMessageSendingTemplate,其doSend方法调用的是syncSendGrpcMessage;该方法主要是调用父类的doConvert转换为spring-messaging rocketmq5的RocketMQClientTemplate继承了org.springframework.messaging.core.AbstractMessageSendingTemplate,实现了spring-messaging