Он позволяет удаленному юзеру исполнять команды, а так же некоторые другие мелочи... buffer overflow возникает при копировании QUERY_STRING (HTTP_REFERER, HTTP_USER_AGENT) в динамический буфер фиксированного размера. Для большей наглядности приведу пример патча для данного скрипта:
void wrapit(char *envvar,int esize)
{
char *tmp,*tmp2; tmp=malloc(esize+1);
if(tmp==NULL) { Debug2("Can't allocate wrapper memory buffer.",0,0);
exit(1);
}
strncpy(tmp,(tmp2=getenv(envvar))?tmp2:"",esize-1);
tmp[esize]='\0'; setenv(envvar,tmp,1);
}
#avoid any buffer overflow problem by cutting some env variables
wrapit("QUERY_STRING",600); wrapit("HTTP_REFERER",600); wrapit("HTTP_USER_AGENT",600);
На самом деле врядли это тот щотчик, да же если и тот, то баг был в очень старом щотчике
Он позволяет удаленному юзеру исполнять команды, а так же некоторые другие мелочи... buffer overflow возникает при копировании QUERY_STRING (HTTP_REFERER, HTTP_USER_AGENT) в динамический буфер фиксированного размера. Для большей наглядности приведу пример патча для данного скрипта:
void wrapit(char *envvar,int esize)
{
char *tmp,*tmp2; tmp=malloc(esize+1);
if(tmp==NULL) { Debug2("Can't allocate wrapper memory buffer.",0,0);
exit(1);
}
strncpy(tmp,(tmp2=getenv(envvar))?tmp2:"",esize-1);
tmp[esize]='\0'; setenv(envvar,tmp,1);
}
#avoid any buffer overflow problem by cutting some env variables
wrapit("QUERY_STRING",600); wrapit("HTTP_REFERER",600); wrapit("HTTP_USER_AGENT",600);
На самом деле врядли это тот щотчик, да же если и тот, то баг был в очень старом щотчике