
Хакер #311. Сетевые протоколы под микроскопом
Nn - популярная UNIX утилита командной строки, которая может использоваться для доступа к NNTP серверу. Уязвимость обнаружена в клиенте, который не фильтрует ответ сервера, чтобы напечатать сообщение об ошибке на терминале клиента. Злонамеренный сервер может создать форматную строку, которая может переполнить буфер в программе с возможностью выполнения произвольного кода. Пример:
При ответе сервера 100 AAAABBBB%10\$x%11\$x, nn клиент отобразит следующее сообщение: 100 AAAABBBB4141414142424242
Проблема находится в функции nn_exitmsg(1, line) в файле nntp.c:
void nn_exitmsg(int n, char *fmt,...)
{
va_list ap;
va_start(ap, fmt);
vprintf(fmt, ap);
putchar(NL);
va_end(ap);
nn_exit(n);
/*NOTREACHED*/
}
Уязвимость обнаружена в nn 6.6.3.