Security Lab

Локальное переполнение буфера в GNU Screen

Дата публикации:01.12.2003
Дата изменения:17.10.2006
Всего просмотров:1270
Опасность:
Низкая
Наличие исправления: Нет
Количество уязвимостей:1
CVE ID: Нет данных
Вектор эксплуатации: Локальная
Воздействие: Повышение привилегий
CWE ID: Нет данных
Наличие эксплоита: Нет данных
Уязвимые продукты: GNU Screen 3.x
GNU Screen 4.x
Уязвимые версии: GNU Screen 4.0.1, 3.9.15 и более ранние версии

Описание: Уязвимость обнаружена в GNU Screen. Локальный пользователь может выполнить произвольный код, чтобы получить поднятые привилегии на целевой ситеме.

Локальный пользователь может послать от 2 до 3 гигабайт данных к экрану целевого пользователя, чтобы вызвать целочисленное переполнение в параметре 'w_NumArgs' в 'ansi.c' и выполнить произвольный код с set user id (setuid) root привилегиями или (setgid) utmp group привилегиями, в зависимости от инсталляции программы.

URL производителя: http://www.gnu.org/software/screen/screen.html

Решение: Установите следующее неофициальное исправление:

--- ansi.c.old  2003-11-15 18:04:12.000000000 +0200
+++ ansi.c      2003-11-15 18:04:51.000000000 +0200
@@ -559,7 +559,7 @@
            {
            case '0': case '1': case '2': case '3': case '4':
            case '5': case '6': case '7': case '8': case '9':
-             if (curr->w_NumArgs < MAXARGS)
+             if (curr->w_NumArgs >=3D 0 && curr->w_NumArgs < MAXARGS)
                {
                  if (curr->w_args[curr->w_NumArgs] < 100000000)
                    curr->w_args[curr->w_NumArgs] =3D
--- resize.c.old        2003-11-27 02:55:07.000000000 +0200
+++ resize.c    2003-11-27 02:58:33.000000000 +0200
@@ -682,6 +682,17 @@
   if (wi =3D=3D 0)
     he =3D hi =3D 0;
=20
+  if (wi > 1000)
+    {
+      Msg(0, "Window width too large, truncated");
+      wi =3D 1000;
+    }
+  if (he > 1000)
+    {
+      Msg(0, "Window height too large, truncated");
+      he =3D 1000;
+    }
 
   if (p->w_width =3D=3D wi && p->w_height =3D=3D he && p->w_histheight =3D=
=3D hi)
     {
       debug("ChangeWindowSize: No change.\n");
Ссылки: GNU screen buffer overflow