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

20.09.2002 | 15:26
В NetBSD 1.4-1.5.2 обнаружена уязвимость переполнения буфера. Проблема найдена в функции setlocale() в libc.

Функция setlocale, определенная в lib/libc/locale/setlocale.c, используется, чтобы изменить регион в категории. Она переключает регион категории, указанной первым параметром, ко второму параметру. Специальная категория 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 привилегии на удаленной системе.
безопасность, информация, защита информации, статьи, библиотека, аудит, администрирование, реагирование на инциденты, криптография, уязвимость
По материалам http://www.securitylab.ru
Лента новостей: FacebookLiveJournalЯндекс

Комментарии (0)
Оставьте комментарий:CaptchaОбновить проверочный код