2016年12月5日(当地时间),seclists.org网站发布了一条关于Apache网页服务器拒绝服务漏洞的消息,漏洞编号为CVE-2016-8740。官方尚未发布该漏洞的版本更新。绿盟科技发布安全威胁通告,原文见文末。
该漏洞存在于mod_http2模块中,这是从Apache HTTPD 2.4.17版本开始引入的关于HTTP/2协议的模块。然而该模块在默认情况下不被编译,且默认不启用,该漏洞只影响使用HTTP/2协议的用户。在使用HTTP/2协议的服务器上,攻击者可以通过发送精心构造的请求,导致服务器内存耗尽,造成拒绝服务。
Apache HTTPD DoS漏洞CVE-2016-8740
Apache has limits on the number and length of request header fields. which limits the amount of memory a client can allocate on the server for a request. Version 2.4.17 of the Apache HTTP Server introduced an experimental feature: mod_http2 for the HTTP/2 protocol (RFC7540, previous versions were known as Google SPDY). This module is NOT compiled in by default -and- is not enabled by default, although some distribution may have chosen to do so. It is generally needs to be enabled in the 'Protocols' line in httpd by adding 'h2' and/or 'h2c' to the 'http/1.1' only default. The default distributions of the Apache Software Foundation do not include this experimental feature.
- From version 2.4.17, upto and including version 2.4.23 the server failed to take the limitations on request memory use into account when providing access to a resource over HTTP/2. This issue has been fixed in version 2.4.23 (r1772576). As a result - with a request using the HTTP/2 protocol a specially crafted request can allocate memory on the server until it reaches its limit. This can lead to denial of service for all requests against the server.
Apache HTTPD拒绝服务漏洞安全威胁通告
2016年12月5日(当地时间),seclists.org网站发布了一条关于Apache网页服务器拒绝服务漏洞的消息,漏洞编号为CNNVD-201612-069。该漏洞存在于mod_http2模块中,这是从Apache HTTPD 2.4.17版本开始引入的关于HTTP/2协议的模块。然而该模块在默认情况下不被编译,且默认不启用,该漏洞只影响使用HTTP/2协议的用户。在使用HTTP/2协议的服务器上,攻击者可以通过发送精心构造的请求,导致服务器内存耗尽,造成拒绝服务。
相关链接地址如下:
漏洞危害
成功利用漏洞后,耗尽服务器内存,导致拒绝服务攻击。
什么是HTTP/2
HTTP/2(超文本传输协议第2版,最初命名为HTTP 2.0),是HTTP协议的的第二个主要版本,使用于万维网。HTTP/2是HTTP协议自1999年HTTP 1.1发布后的首个更新,主要基于SPDY协议。它由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小组进行开发。HTTP/2的目标包括异步连接复用,头压缩和请求反馈管线化并保留与HTTP 1.1的完全语义兼容。(引用自《维基百科》)
Apache HTTPD DoS 漏洞影响范围
受影响的版本
- Apache HTTPD version 2.4.17
- Apache HTTPD version 2.4.18
- Apache HTTPD version 2.4.20
- Apache HTTPD version 2.4.23
不受影响的版本
无
代码修复
github上已经对该漏洞进行了源代码修复,部分修复情况如下所示。
修复代码中增加了对h2_stream_add_header函数返回值重置状态的判断。
图1 代码修复截图(1)
修复代码中修改了对已添加头部的检查,并且在条件不成立时,返回的状态为“重置连接”。
图2 代码修复截图(2)
源代码修复地址如下:
https://github.com/apache/httpd/commit/29c63b786ae028d82405421585e91283c8fa0da3
规避方案
- Apache官方尚未发布版本更新,然而github上已经对该漏洞进行了源代码修复,建议用户下载最新的源码编译安装。github链接地址如下:
- 作为临时的缓解策略,已经启用HTTP/2的用户也可以从配置文件的“Protocols”行中删除“h2”和“h2c”从而禁用HTTP/2 。
绿盟科技声明
本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。
Apache HTTPD漏洞的相关文章请参看
看完CNCERT周报再来看CNVD周报 报告提示Flash及Http2.0漏洞值得关注
原文发布时间:2017年3月24日
本文由:绿盟科技 发布,版权归属于原作者
原文链接:http://toutiao.secjia.com/apache-httpd-dos-cve-2016-8740
本文来自云栖社区合作伙伴安全加,了解相关信息可以关注安全加网站