Компьютер для продвинутых пользоватлей Выпус по безопасности. Ошибка в Quake 3.
Компьютер для продвинутых
пользователей
В этом выпуске:
Quake 3
ПО: Quake 3
Версия: 1.32с
Описание:
Движок Quake 3 разработан в 1999 году компанией id Software и по сей
день является очень популярным. Распространяемый по лицензии GPL он
применяется во многих игровых проектах. Уязвимость:
Функция CL_ParseDownload находящаяся в code/client/cl_parse.c,
использует клиенты для закачки и отправки команд на сервер.
Функция использует подпись - 16 битный номер, отправляемый на сервер для
копирования необработанной информации, через буфер размером 16384 байт: void CL_ParseDownload ( msg_t *msg ) {
int size;
unsigned char data[MAX_MSGLEN];
...
size = MSG_ReadShort ( msg );
if (size > 0)
MSG_ReadData( msg, data, size );
...
Некоторые интересные детали:
Пакеты заголовка Quake 3 могут быть максимум 16384 бита, на возможно
увеличить лимит с помощью сжатия, используя его автоматически или
транспортируя в движок. Использую значение NULL, мы вызовем ошибку,
которая вернет код и даст возможность выполнения команд, внутри
заголовка. Что может быть использовано для атаки на сервер.