Security Lab

Переполнение буфера в setlocale в NetBSD

Дата публикации:20.09.2002
Всего просмотров:990
Опасность:
Наличие исправления:
Количество уязвимостей:1
CVE ID: Нет данных
Вектор эксплуатации:
Воздействие:
CWE ID: Нет данных
Наличие эксплоита: Нет данных
Уязвимые продукты:
Описание: Переполнение буфера обнаружено в суффиксе массива в функции setlocale() в libc. Функция setlocale, определенная в lib/libc/locale/setlocale.c, используется, чтобы изменить регион в категории. Функция setlocale() переключает регион категории, указанной первым параметром ко второму параметру. Специальная категория LC_ALL может использоваться для замены всех категорий. В этом случае, setlocale позволяет специальной форме второй строки параметра определять индивидуальные регионы для категорий.

В этой форме, каждый регион задается в отдельной строке, разделенной символом ('/'), например "A/B/C/D/E/F". Здесь, каждый элемент соответствует категориям LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME и LC_MESSAGES, соответственно. Функция setlocale() декомпозирует эти элементы в объект массива, называемый new_categories, и определенный в lib/libc/locale/setlocale.c. Однако в этом коде присутствует ошибка при проверки границ массива, что может привести к переполнению буфера в процессе декомпозиции, если преданна строка, имеющая более шести элементов. Уязвимы большинство программ, вызывающих setlocale() с первым параметром, полученным из данных пользователя. Большинство программ Xt, включая xterm, использует эту процедуру. Так как xterm установлен как setuid root, атакующий может получить root привилегии на удаленной системе.

Уязвимость обнаружена в NetBSD 1.4-1.5.2