CVE:CVE-2003-1054
CNNVD:CNNVD-200304-113
Apache Mod_Access_Referer模块可实现基于"Referer" HTTP头字段的访问控制。
Mod_Access_Referer模块解析非法HTTP Referer头字段时存在问题，远程攻击者可以利用这个漏洞对Apache进行拒绝服务攻击。
在find_allowdeny()函数中，uri_components结构的"uptr"由Apache ap_parse_uri_components函数初始化，这个结构"hostname"指针回提供给is_ip()函数用于判断由referer字段的值是否为IP地址或主机名。相关代码如下：
        --- -snip snip- ---
         ap_parse_uri_components (r->pool，
                                       ap_table_get
                                       (r->headers_in，
                                       "Referer")，
                                        &uptr);
         if (!is_ip (uptr.hostname)) {
         --- -snip snip- ---
static int
is_ip (const char *host)
{
        /* this just tests if it matches [\d.]* */
        /* XX is a better test needed? */
        while ((*host == '.') || ap_isdigit (*host))
                host++;
        return (*host == '\0');
}
         --- -snip snip- ---
当服务器接收到不正确的referer头字段，ap_parse_uri_components会不初始化uptr.hostname指针，这就导致is_ip()会读取NULL指针而发生段错误，产生服务崩溃。
solution:Upgrade mod_access_referer mod_access_referer to a higher version than 1.0.2,and avoid the version 1.0.2