Apache mod_proxy远程缓冲区溢出漏洞

mod_proxy是一个可在Apache使用的代理模块。
 
mod_proxy在处理负的Content-Length值时存在问题,远程攻击者可以利用这个漏洞进行缓冲区溢出攻击,可能以Apache进程权限在系统上执行任意指令。
 
连接远程服务器使其返回非法(负值)的Content-Length,可使Mod_proxy触发基于整数的溢出,会导致Apache子进程崩溃。问题存在于proxy_util.c中:
 
n = ap_bread(f, buf, MIN((int)buf_size,
(int)(len - total_bytes_rcvd)));
 
这里len可为负值。
                          
在旧的OpenBSD/FreeBSD系统中可利用memcpy的反向拷贝实现来执行任意指令。新的BSD系统中由于攻击者可以控制3个任意字节也能用于执行任意指令。如果define AP_ENABLE_EXCEPTION_HOOK启用的情况下,可能在任何平台都可被利用。
解决方法请使用Apache 1.3.32以上的最新版本。
 
临时解决方法:
 
如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:
 
* Georgi Guninski提供如下第三方补丁:
 
-------------------------------------
diff -u apache_1.3.31/src/modules/proxy/proxy_util.c apache_1.3.31my/src/modules/proxy/proxy_util.c
--- apache_1.3.31/src/modules/proxy/proxy_util.c        Tue Feb 17 23:52:22 2004
+++ apache_1.3.31my/src/modules/proxy/proxy_util.c      Tue Jun  8 11:24:15 2004
@@ -545,8 +545,8 @@
                 n = ap_bread(f, buf, buf_size);
             }
             else {
-                n = ap_bread(f, buf, MIN((int)buf_size,
-                                         (int)(len - total_bytes_rcvd)));
+                n = ap_bread(f, buf, MIN((size_t)buf_size,
+                                         (size_t)(len - total_bytes_rcvd)));
             }
         }
-------------------------------------
 
或者NSFOCUS建议您不要打开mod_proxy模块。
 
厂商补丁:
 
Apache Software Foundation
--------------------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
 
http://httpd.apache.org/
posted @ 2019-05-20 09:32  mrhonest  阅读(736)  评论(0)    收藏  举报