Apache Tomcat 安全漏洞(CVE-2020-13935)发现与分析(无POC)

一、初步确认

1. 了解受影响版本

Apache Tomcat

        10.0.0-M1版本至10.0.0-M6版本

        9.0.0.M1版本至9.0.36版本

        8.5.0版本至8.5.56版本

        7.0.27版本至7.0.104版本。

2. 确认版本后确认WebSocket 功能启用 

访问:

http://ip:8080/examples/websocket/echo.xhtml 

如果显示如下页面:

极大概率存在该漏洞

二、漏洞产生原因分析

1. 概括

CVE-2020-13935 是 Apache Tomcat 中的一个 WebSocket 实现漏洞,具体表现为当 WebSocket 消息的长度字段(Payload Length)的所有位都被设置为 1 时,Tomcat 会错误地处理该消息,导致 CPU 使用率飙升,甚至可能引发拒绝服务(DoS)

2. 具体原因

首先了解WebSocket 消息的长度字段 payload length(负载长度) 的规则

根据图可知道负载长度分成了一下情况:

1、 PL<126时 负载长度用7位表示

2、PL=>126时 负载长度用扩展负载长度来表示

 然后当PL==127(即 0b1111111)时则会使用扩展负载长度的8位表示,然而,Tomcat 在处理扩展长度字段时,没有对长度值进行严格的验证,导致当长度字段的所有位都被设置为 1(即 0xFFFFFFFFFFFFFFFF)时,Tomcat 会尝试分配一个巨大的缓冲区来存储消息体,且消息长度字段所表示的值远超实际消息的长度,就会导致内部逻辑进入异常状态。

因此复现该漏洞的主要手WebSocket 消息的长度字段 payload length 的所有位都设置为1

即(0xFFFFFFFFFFFFFFFF) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值