导语:Apache服务器被爆出服务器内存信息被泄露。经调查是Apache服务器的HTTP请求方法OPTIONS出现了漏洞,该漏洞被命名为出血漏洞(OptionsBleed),漏洞编号为CVE-2017-9798。
近日,Apache服务器被爆出服务器内存信息被泄露。经调查是Apache服务器的HTTP请求方法OPTIONS出现了漏洞,该漏洞被命名为出血漏洞(OptionsBleed),漏洞编号为CVE-2017-9798。根据目前掌握的信息该漏洞与OpenSSL心脏出血漏洞存在着许多的相似之处。
出血漏洞介绍
如果网站管理员尝试对无效的HTTP方法实施 "Limit" 指令, 则会导致该漏洞被利用,如果漏洞被利用,则会导致服务器敏感内存的泄漏。
目前Apache的开发商确认了这个漏洞,并将这个漏洞的危害性评为中危。漏洞利用条件和方式属于远程利用,漏洞影响范围是Apache httpd 2.2.34/2.4.27之前的版本,建议普通的运行Apache Web服务器的用户升级至最新版本并安装补丁。
出血漏洞的运行原理
Optionsbleed在危险性上远远不如此前OpenSSL导致的心脏出血漏洞。当管理员在服务器配置的.htaccess文件中应用“Limit”选项时。如果.htaccess文件的规则与放置在上层目录或普通服务器配置中的.htaccess文件中的限制规则不符时,Apache运行就会出现混乱。此时,当攻击者向脆弱的Apache服务器发送无身份验证的HTTP请求时,服务器会根据请求泄露内存数据。以上就是出现出血漏洞的全过程,其实,从技术角度来看,这是一个use-after-free的漏洞,数据泄露就好像是堆溢出。
下面显示了攻击者是如何对脆弱的Apache HTTP服务器的OPTIONS请求进行响应,注意看内存部分的信息泄露。
目前许多网站的服务器都支持Apache服务器的OPTIONS请求,经过测试许多主机响应的内容都极其相似,都是以 "Allow" 开头的乱码:
Allow: ,GET,,,POST,OPTIONS,HEAD,, Allow: POST,OPTIONS,,HEAD,:09:44 GMT Allow: GET,HEAD,OPTIONS,,HEAD,,HEAD,,HEAD,, HEAD,,HEAD,,HEAD,,HEAD,POST,,HEAD,, HEAD,!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" Allow: GET,HEAD,OPTIONS,=write HTTP/1.0,HEAD,,HEAD,POST,,HEAD,TRACE
经过进行进一步测试,研究人员注意到不需要使用OPTIONS方法就能触发该漏洞,任何迫使服务器发送响应以 "Allow" 开头的HTTP请求都可以用来触发该漏洞。
其中一个常见的例子是HTTP 501 错误(HTTP 501-未执行),它没有使用未知的HTTP方法来响应请求。如下图所示,当一个非脆弱的Apache HTTP服务器接收到一个带有未知的HTTP请求时,它的HTTP响应状态代码就是501,此时该响应将出现以 "Allow" 开头的包含服务器支持的HTTP方法列表。
此时,如果服务器配置的.htaccess文件发生错我,再加上攻击者向脆弱的Apache服务器发送无身份验证的HTTP请求时,以 "Allow" 开头的响应就会从进程内存泄漏部分数据,如下所示。
怎样发现该漏洞
最简单的测试方法是在循环中使用Curl发送OPTIONS请求:
for i in {1..100}; do curl -sI -X OPTIONS https://www.google.com/|grep -i "allow:"; done
需要注意的是,由于服务器配置不同,对于OPTION请求的响应也就不同,点此查看用Python编写的PoC。
影响范围
经HannoBöck测试,在Alexa排名前100万网站中,有466台主机的响应都是以"Allow" 开头,这些网站的分散在世界各地。目前Apache的开发商确认了这个漏洞,不过负责人表示目前该漏洞只存在于2.2.34/2.4.27之前版本,所以影响的范围有限。
不过我不这么认为,由于各种原因,目前很多人并不会及时对自己的系统进行升级。另一方面,在共享的托管环境中,此漏洞不仅仅限于单个虚拟主机,每个共享宿主提供程序的客户都可能会故意创建一个.htaccess 文件, 从而导致漏洞发生,进而从同一系统上的其他主机提取敏感数据。
高级用户的防御方法
除了开头所讲的升级到最新版本的方法外,资深安全用户可以使用下面的DPI规则在其环境中配置Allow HTTP方法,并通过使用未知HTTP方法的请求限制数据泄漏。
1002593—Allow HTTP(包括WebDAV)方法
系统管理员应该升级他们安装的Apache HTTP服务器版本,并禁用使用.htaccess文件。如果可能的话,网站的管理者最好不要直接访问这些使用OPTION请求的网站并且建议他们的互联网服务提供商提供升级服务。
目前TTippingPoint已经发布了一个Customer Shield Writer (CSW)文件,以供客户在TMC上下载。适用的规则如下:
C1000002:HTTP:Apache服务器选项信息公开漏洞