PDA

Просмотр полной версии : Удаленное переполнение буфера в Washington University FTP daemon (Wu-FTPd)


ShooTer
27.10.2003, 17:02
Переполнение буфера обнаружено в Washington University FTP daemon (Wu-FTPd). Удаленный атакующий может выполнить произвольный код на уязвимом сервере с root привилегии.

Переполнение стекового буфера обнаружено в коде, который обрабатывает SKEY идентификацию в Wu-FTPd сервере. Представляя специально обработанные опознавательные мандаты, удаленный атакующий может аварийно завершить работу демона или выполнить произвольный код с root привилегиями. Переполнение расположено в функции skey_challenge() в src/ftpd.c файле:

char *skey_challenge(char *name, struct passwd *pwd, int pwok)
$
{
$
static char buf[128];
...
if (pwd == NULL || skeychallenge(&skey, pwd->pw_name, sbuf))
$
sprintf(buf, "Password required for %s.", name);
else
sprintf(buf, "%s %s for %s.", sbuf,
pwok ? "allowed" : "required", name);
return (buf);
}

в коде не проверяются размеры параметра *name.

Уязвимы системы, поддерживающие SKEY идентификацию.

URL производителя:http://www.wuftpd.org/

Решение: Отключите поддержку SKEY или примените следующий патч:


% diff -u ftpd.c fixed-ftpd.c
--- ftpd.c 2001-11-29 17:56:11.000000000 +0100
+++ fixed-ftpd.c 2003-10-20 20:43:58.000000000 +0200
@@ -1662,9 +1662,9 @@
/* Display s/key challenge where appropriate. */

if (pwd == NULL || skeychallenge(&skey, pwd->pw_name, sbuf))
- sprintf(buf, "Password required for %s.", name);
+ snprintf(buf, 128-1, "Password required for %s.", name);
else
- sprintf(buf, "%s %s for %s.", sbuf,
+ snprintf(buf, 128-1, "%s %s for %s.", sbuf,
pwok ? "allowed" : "required", name);
return (buf);
}
%


www.securitylab.ru