Ошибка переполнения буффера в aGsm версии 2.35c и в последней developer-версии (beta)...

2004-08-19T00:00:00
ID SECURITYVULNS:DOC:6620
Type securityvulns
Reporter Securityvulns
Modified 2004-08-19T00:00:00

Description

Доброго времени суток! Мною обнаружена ошибка переполнения буффера и вероятно возможность удалённого исполнения вредоносного кода в последних версиях aGsm. Заключается она в следующем:

При обработке ответа от Half-Life серверов, aGsm, как выяснилось, не проверяет длинну строки hostname, а копирует её в память сразу. Хакер может написать программу для фальсифицикации строки ответа от сервера и используя уязвимость запустить произвольный код.

Технические подробности:

Написал серверное UDP-приложение на Perl'e, которое, ждёт датаграммы на порту 27015 (стандартный порт Half-Life сервера) и на запрос \xFF\xFF\xFF\xFFinfo\x00 ответил следующей строкой:

Строка ответа, приводящая к переполнения aGsm версии 2.35c:

\xff\xff\xff\xffA\x00AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA (после нулевого байта идут 66 любых символов или shell-code больше или равынй 66 байтам)

\x - Указатель ввода шестнадцатеричного ASCII значения

Строка ответа, приводящая к переполнения aGsm версии 2.51c:

\xff\xff\xff\xffA\x00AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA (после нулевого байта идут 148 любых символов или shell-code больше или равынй 148 байтам)

\x - Указатель ввода шестнадцатеричного ASCII значения

Вероятно, что для успешного выполнения кода в версии 2.51с нужна строка, существенно большая чем 148 байт.

К письму прилагается два скриншота:

overflow.jpg - Скриншот возникновения ошибки при обработки строки на фоне Perl приложения.

debug.jpg - Скриншот переполнения в стандартном отладчике от Visual Studio 6.0. В Стеке памяти около адреса ошибки виден кусок буффера нашей строкой - AAAAA...A, записавшейся в память.

Также к письму прилагается perl скрипт демонстрирующий уязвимость. не приложил к нему shellcode. Т.к. не очень разбираюсь в адресах системных функций разных ОС (Kernel32.dll).

p.s. У меня WindowsXP Pro Corp Eng... Я не тестировал дыру под другими ОС.

=== e-mail : dimetrius@the-rdm.com www : http://www.the-rdm.com icq # 16782600