Дата публикации: | 08.10.2003 |
Всего просмотров: | 1839 |
Опасность: | Высокая |
Наличие исправления: | |
Количество уязвимостей: | 1 |
CVE ID: | Нет данных |
Вектор эксплуатации: | |
Воздействие: | |
CWE ID: | Нет данных |
Наличие эксплоита: | Нет данных |
Уязвимые продукты: | |
Уязвимые версии: mod_gzip 1.3.x debug mode
Описание: Множественные уязвимости обнаружены в режиме отладки mod_gzip. Удаленный атакующий может выполнить произвольный код на уязвимой системе. Локальный пользователь может получить root привилегии на системе. 1. Удаленный пользователь может запросить чрезмерное длинное имя файла, чтобы вызвать переполнение буфера в механизме регистрации. Уязвимость может использоваться для выполнения произвольного кода с привилегиями Web сервера. 2. Удаленный пользователь может представить специально обработанный HTTP GET запрос, чтобы вызвать уязвимость форматной строки в механизме регистрации Apache Web сервера. Атакующий может выполнить произвольный код. 3. Третья уязвимость связанна с небезопасным созданием временных файлов. Локальный пользователь может создать символьную ссылку с временного файла к произвольному критическому файлу на системе. Когда mod_gzip будет запущен, критический файл будет перезаписан. mod_gzip регистрирует некоторые события отладки с root привилегиями, т.е. уязвимость позволяет локальному пользователю получить root привилегии на системе. Пример/Эксплоит: URL производителя:http://sourceforge.net/projects/mod-gzip/ Решение: Установите следующее исправление (patch < mod_gzip.diff): --- mod_gzip_debug.c 2003-10-06 18:10:47.000000000 +0200 +++ mod_gzip_debug.patch 2003-10-06 18:13:53.000000000 +0200 @@ -94,6 +94,7 @@ #include "httpd.h" #include "http_config.h" #include "http_log.h" +#include <stdlib.h> #include "mod_gzip.h" #include "mod_gzip_debug.h" @@ -125,7 +126,7 @@ void mod_gzip_printf( const char *fmt, . va_start( ap, fmt ); - l = vsprintf( log_line, fmt, ap ); + l = vsnprintf( log_line, sizeof(log_line), "%s", fmt, ap ); va_end(ap); @@ -138,6 +139,8 @@ void mod_gzip_printf( const char *fmt, . void mod_gzip_printf( const char *fmt, ... ) { + long rndNum; + time_t seed = time(NULL); int l; char *p1; FILE *log; @@ -153,6 +156,11 @@ void mod_gzip_printf( const char *fmt, . long pid = (long) getpid(); #endif + srand(seed); + + rndNum = 1+ (int)(1000.0*rand()/(RAND_MAX+1.0)); + rndNum *= pid; + #ifdef WIN32 sprintf( logname, "c:\\temp\\t%ld.log",(long)pid); #else @@ -168,7 +176,7 @@ void mod_gzip_printf( const char *fmt, . va_start( ap, fmt ); - l = vsprintf(log_line, fmt, ap); + l = vsnprintf(log_line, sizeof(log_line), "%s",fmt, ap); p1=log_line; while((*p1!=0)&&(*p1!=13)&&(*p1!=10)) p1++; |
|
Ссылки: | ZH2003-3SP (security patch): multiple vulnerabilities in mod_gzip 1.3.x debug mode |