"Если вдруг открылся люк, не пугайся, это глюк!" (с) Если что-то работает не так, вы нашли ошибку или опечатку в программе — вам в этот раздел
yurasek
В MyChat Server 5.7 кроется ошибка в реализации получения от клиента команды cs_hello. Текущая реализация позволяет неавторизованному пользователю отправлять серверу неограниченное количество раз команду cs_hello, в ответ на которую клиенту в случае успеха возвращается команда sc_accept_connection. Суть подверженности MyChat Server 5.7 к атаке типа "отказ в обслуживании" в данном случае заключается в том, что вновь полученная от клиента команда cs_hello увеличивает потребление памяти сервером. MyChat Server является 32-разрядным приложением, поэтому объём памяти, который может быть выделен для него операционной системой составляет значение в пределах 1,8 Гбайт. Эксперимент показал, что, для проведения успешной атаки на сервер требуется отправка пары миллионов команд cs_hello, но даже, если размер команды будет увеличен, такая атака будет являться очень продолжительной по времени. Тем не менее эта атака может быть ускорена в тысячи раз за счёт использования поддерживаемого протоколом обмена данными MyChat сжатия данных GZIP. Таким образом строка с одинаковыми символами размером в 65 Кбайт может быть сжата до 100 байт. Многократно отправленная серверу команда cs_hello с такими данными приведёт к молниеносному потреблению оперативной памяти, достигнув предела которого, сервер не сможет выделить память для внутренних нужд, что в итоге скажется на его работоспособности.
Аватара пользователя
Андрей Раков
Добрый день, мы провели детальный анализ и ряд тестов. Утечка памяти наконец-то нашлась, сейчас занимаемся ее устранением.

Большое спасибо за наводку.
Аватара пользователя
Алексей Пикуров
Здравствуйте.

Ошибка исправлена: viewtopic.php?p=17064#p17064
Благодарю за подробный анализ проблемы.