|
Выполнение произвольного кода в ZoneAlarm
Выполнение произвольного кода в ZoneAlarm
Уязвимость обнаружена в драйвере устройства в 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)
Способов устранения обнаруженной уязвимости не существует в настоящее время.
(c) securitylab.ru
|