Security Lab

Удаленное переполнение буфера в Washington University FTP daemon (Wu-FTPd)

Дата публикации:27.10.2003
Всего просмотров:2093
Опасность:
Высокая
Наличие исправления:
Количество уязвимостей:1
CVE ID: Нет данных
Вектор эксплуатации:
Воздействие:
CWE ID: Нет данных
Наличие эксплоита: Нет данных
Уязвимые продукты:
Уязвимые версии: Wu-FTPd version 2.6.2 (с поддержкой SKEY)

Описание: Переполнение буфера обнаружено в 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);
  }
 %
Ссылки: [UNIX] Wu-FTPd SKEY Stack Overflow Vulnerability