栏目导航
联系我们
服务热线
0839-3366106
邮箱:admin@kaitin.cn
地址: 广元市利州区雪峰创业园A区201室
当前位置:主页 > 新闻与事件 > 漏洞预警 >
Http Options出血漏洞CVE-2017-9798 可导致内存泄漏 PoC已公开

周一,研究员Hanno Böck发现HTTP Options存在出血漏洞CVE-2017-9798,如果网站管理员尝试对无效的 HTTP 方法实施 "Limit" 指令, 则会导致出现漏洞利用的可能,攻击得手后将导致服务器敏感内存泄漏。目前Apache的开发商确认了这个漏洞,尚不清楚其它Web服务软件是否存在这个问题。

如果您使用的是 HTTP 协议在日常的互联网使用, 你通常只使用它的两种方法: Get和Post。但是, HTTP 有许多其他方法, 所以我想您需要知道如何处理它们, 以及是否存在任何漏洞。

一个 HTTP 方法称为Options。它只允许询问服务器,它能支持的其他 HTTP 方法。服务器用 "Allow" 头来应答, 并给我们一个列表,列表项目用逗号来分隔。

Http Options出血漏洞CVE-2017-9798

对 Alexa 前100万的网站进行了扫描,发现了一些奇怪的事情,大量的服务器发送了一个 "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

这看起来很有趣, 而且很危险。它看起来就像是一个 "出血" 式的漏洞,而且已经成为这个漏洞的 http Options出血漏洞,该漏洞将导致内存泄漏 给潜在的攻击者。然而, 这些是随机的服务器在互联网上, 所以起初我不知道是什么软件造成的。

有时 HTTP 服务器发送一个 "Server" 报头告诉软件。然而, 你需要知道, "server" 头部是可以说谎的。这在HTTP 服务代理中很常见。所以,我得到了各种不同的 "Server" 标题, 但我很怀疑这些都是来自同一个 漏洞。

Options出血漏洞

Options出血是在 Apache http 中释放错误后使用的, 这会导致在响应 HTTP 选项请求时构造一个损坏的Allow标头。这可能会泄漏可能包含机密的服务器进程中的任意内存片断。在多个请求之后, 内存块会发生变化, 因此对于易受攻击的主机, 可以泄漏任意数量的内存块。

如果网站管理员对无效的 HTTP 方法实施 "Limit" 指令, 则会出现此问题。

Example .htaccess:

<Limit abcxyz> 
</Limit>

影响范围待评估 但Alexa排名前100万的网站中有466台受影响

在Alexa排名前100万网站中,显示了466台主机存在损坏的Allow头部,这些网站的影响面和用户群都非常庞大。理论上, 其他服务器软件可能有类似的错误。另一方面, 此漏洞是非确定性的, 因此并非所有易受攻击的主机都可能被捕捉。

因此, 如果你设置一个非常不寻常的配置选项,就会发生这个问题吗?

在共享的托管环境中存在额外的风险。损坏不限于单个虚拟主机。共享宿主提供程序的一个客户可能会故意创建一个. htaccess 文件, 从而导致这方面的问题, 而且能够从同一系统上的其他主机提取机密数据。

Apache给出了回应

我试图联系受影响的服务器运营人员, 但对方非常不愿意告诉我任何关于他的设置, 所以也没法进行确认。但是, 我找到一个办法,一些损坏的报头中包含了 Apache 清晰的配置选项字符串。这些字符串似乎不太可能出现在其他服务器软件的内存中。但我无法在自己的 Apache 服务器上重现任何类似的东西。我还尝试阅读哪些放在一起Allow头部的代码,看看是否能找到任何线索, 但没有成功。所以不知道任何细节,没办法了,我联系了 Apache 安全小组。

幸运的是Apache开发商Jacob Champion发现了这个问题, 并想通了什么是怎么回事:

apache 支持配置指令Limit,允许限制对特定用户的某些 HTTP 方法的访问。如果在. htaccess 文件中为未在服务器上全局注册的 HTTP 方法,设置了限制指令, 则会发生损坏。

ok,知道这个问题之后, 我可以自己重新这个漏洞了。在. htaccess 文件中为任何无效的 HTTP 方法设置Limit指令后, 在Allow报头的构造中就出现了问题, 同时还可以被Address Sanitizer检测到。(但是, 由于 APR 执行的内存分配抽象, ASAN的工作不可靠。

Copyright @ 2016 Kaitin Tech.(蜀ICP备17002778号)
电话:0839-3366106QQ:670016邮箱:admin@kaitin.cn
地址:广元市利州区雪峰创业园A区201室
技术支持:开天创想科技有限公司