Optionsbleed 漏洞泄露 Apache Server 的内存信息

本周一安全研究员 Hanno Böck 发现,部分 Apache 服务器可能因 Optionsbleed 漏洞(CVE-2017-9798)泄漏服务器内存信息。实际上这个漏洞和 OpenSSL 的心脏滴血问题有相似的地方,攻击者都可以查询服务器并向Apache服务器骗取数据。目前该漏洞原因已经探明,评级为中危,影响的范围有限,运行 Apache Web 服务器的用户请升级至最新版本并安装补丁。【补丁见原文】

Böck 表示 Optionsbleed 在严重性上比不上 Heartbleed,因为Optionsbleed 仅仅会在 Apache web 服务器进程中泄露信息,而不是泄漏所有全部的数据内容。也就是说,泄漏的数据内容仅限于Apache正在处理的内容,一般只是 WWeb 页面的内容。尽管如此危险仍然存在,因为 Optionsbleed 依然可能泄漏原本只有认证用户才可获取的特定页面内容。

Optionsbleed 如何影响服务器

我们都知道Web服务器的工作原理,每当客户端(如Web浏览器)向服务器发出请求时,GET 或 POST 请求会发送到服务器端,服务器响应就会传送 Web 页面的内容或相应的文件到客户端。

而 Apache 服务器能够响应很多其他的请求(方法)——例如 PUT,PATCH,HEAD 以及其他方法。而这些请求是随着时间发展慢慢添加进来的,并非所有的 Apache 服务器都可以支持。因此,部分的服务器管理员可能会禁止部分方法。而为了避免发送给服务器的请求进入“黑洞”,Apache 服务器支持名为 OPTIONS 的方法。客户端可以通过 OPTIONS 方法请求查询服务器能够响应的HTTP方法,而服务器则会返还一串以逗号分隔的支持方法的名字。

Optionsbleed 漏洞发现过程

这次 Optionsbleed 的漏洞发现源于研究员 Böck 进行的一项测试,他扫描了 Alexa 排名前 100 万的网站,来看看哪些网站使用支持 OPTIONS 的 Apache 服务器。而测试结果显示,466 台主机响应了与下述内容相似的乱码回复。

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

可以看到,除了正常的的 Allow 响应之外,其中的这 466 台服务器还答复了一些随机数据,看起来像网页的源代码——这些就是所谓的泄漏内容了。 Böck 发现自己无法重现问题并找到关键所在,所以他立即向Apache安全团队汇报了自己的发现。

随后,Apache 开发人员 Jacob Champion 协助进行调查之后发现,Apache 源代码中存在 Optionbleed 漏洞,展开修补后立即提供了补丁文件。

Optionsbleed 漏洞只影响少量服务器

在进行深入调查 Optionsbleed 之后, Böck 和 Champion 发现 Optionsbleed 在危险性上远远不如此前OpenSSL导致的心脏滴血问题(Heartbleed)。问题出现的前提是——管理员在服务器配置的.htaccess 文件中应用了 “Limit” 选项。

< Limits PATCH PUT DELETE >
Deny from all
< /Limits >

一般,服务器管理员将 .htaccess 文件放在 Apache 服务器文件夹中,以便设置仅适用于该文件目录的规则。而服务器所有者使用 .htaccess 的 “Limit” 选项来控制服务器单独在该文件夹中应答的请求。

Böck 和 Champion则表示,如果.htaccess文件的规则与放置在上层目录或普通服务器配置中的.htaccess文件中的限制规则相矛盾时,Apache 就会陷入混淆,因此出现 Optionsbleed 漏洞。

从技术角度来看,这是一个 use-after-free 的漏洞,会在 Apache 服务器附近的内存区域泄漏出内容。

漏洞测试脚本

最简单的测试方法是在循环中使用 Curl 发送OPTIONS 请求: for i in {1..100}; do curl -sI -X OPTIONS https://www.google.com/|grep -i “allow:”; done

不同的服务器配置下,对于OPTION请求可能会有不同的响应。需要测试的用户可以尝试不同的路径,HTTP或者 HTTPS host,有 www 或没有 www开头的地址都可能导致不同的测试结果。python的POC脚本【阅读原文】

问题从 2014 年开始就存在

也有其他用户指出,这个问题此前在2014年时曾被 Old Dominion University 的研究员发现过并写在论文中。

但目前来看 Apache Web 服务器团队还没有发布新的二进制文件,目前可用的补丁文件适用于2.4.x和2.2.x版本。而对于运行在共享环境中的Apache服务器,由于多个用户在同一台机器上都不输了不同的.htaccess文件,最有可能受到 Optionsbleed 漏洞影响。建议所有服务器尽快安装补丁。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-09-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据架构师专家

zabbix3.4安装

自从zabbix2系列爆出漏洞后,大多数公司都在升级zabbix3系列,升级过程特别简单,在官网有详细的升级教程

2042
来自专栏北京马哥教育

10 个迅速提升你 Git 水平的提示

在这篇文章中,我们试图探索怎样有效的管理你的时间和充分的使用Git提供的功能。 注:本文中,一些命令包含了方括号中的部分内容(例如:git add -p [fi...

2844
来自专栏Laoqi's Linux运维专列

Apache与Nginx的优缺点比较

1374
来自专栏木头编程 - moTzxx

微信公众平台开发[4] —— ThinkPHP 框架下微信支付

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

3003
来自专栏猿天地

Spring Cloud如何提供API给客户端

现在越来越多的公司开始拥抱Spring Cloud了,很多Java方向的同学也开始积极的学习Spring Cloud,其实这边还有一个问题就是说:虽然大家学了E...

3737
来自专栏FreeBuf

30秒攻破任意密码保护的PC:深入了解5美元黑客神器PoisonTap

近日,著名硬件黑客Samy Kamkar利用5美元设备打造的黑客工具PoisonTap,只需30秒,就可以攻破设置有任意密码的电脑系统,并实现长期后门安装。Po...

24110
来自专栏温安适的blog

保证MQ消息传递的一致性

5746
来自专栏颇忒脱的技术博客

事务 - Saga模式

1987年普林斯顿大学的Hector Garcia-Molina和Kenneth Salem发表了一篇Paper Sagas,讲述的是如何处理long live...

3693
来自专栏嵌入式程序猿

有图有真相

自从上次简单讲解了飞思卡尔MQX RTOS系统后,不断有猿友留言,要求在讲讲启动流程,在一步步学习MQX系统的文章已经提到过,通过一步步跟踪可以清...

3726
来自专栏aoho求索

几种分布式调用链监控组件的实践与比较(一)实践

引言:最近在调研与选型分布式调用链监控组件。选了主要的三种APM组件进行了实践与比较。本来打算一篇文章写完的,篇幅太长,所以分了两篇。本文主要讲下链路trace...

5908

扫码关注云+社区

领取腾讯云代金券