Apache Mod_Security Module堆破坏漏洞发布时间:2003-10-28 更新时间:2003-10-28 严重程度:中 威胁程度:普通用户访问权限 错误类型:边界检查错误 利用方式:服务器模式 BUGTRAQ ID:8919 受影响系统 mod_security mod_security 1.7未影响系统 mod_security mod_security 1.7.2详细描述 Apache的mod_security存在基于堆的缓冲区溢出,问题存在于apache2/mod_security.c的sec_filter_out()函数中: <snip> if (ctx->bufused + len > ctx->buflen) { char *newbuffer; // todo: implement a smarter extension policy unsigned long int newsize = ctx->buflen * 2; sec_debug_log(r, 3, "sec_filter_out: expanding buffer to %i", newsize); // allocate a larger buffer newbuffer = apr_palloc(f->r->pool, newsize + 1); memcpy(newbuffer, ctx->buffer, ctx->bufused); // free(ctx->buffer); ctx->buffer = newbuffer; ctx->buflen = newsize; ctx->input_ptr = ctx->buffer + ctx->bufused; } memcpy(ctx->input_ptr, data, len); ctx->input_ptr += len; ctx->bufused += len; </snip> 由于ctx->buffer缓冲区定义太小,如果提交的数据大小大于8KB就可以导致缓冲区溢出,虽然作者做了限制,入站的数据不能超过8KB,但是,如果数据由服务器端脚本生成,就不会又次限制,因此如果服务器端脚本生成大量输出,就可能导致缓冲区溢出。 测试代码 尚无 解决方案 升级程序: mod_security mod_security 1.7: mod_security Upgrade mod_security-1.7.2.tar.gz http://www.modsecurity.org/download/mod_security-1.7.2.tar.gz mod_security mod_security 1.7.1: mod_security Upgrade mod_security-1.7.2.tar.gz http://www.modsecurity.org/download/mod_security-1.7.2.tar.gz 相关信息 Adam Dyga <adeon@o2.pl>. 参考:http://www.securityfocus.com/archive/1/342767 相关主页:http://www.modsecurity.org/ |