Warning: PlayerDialogResponse crash exploit -
RingoRus - 31.03.2012
Всем привет.
Столкнулся с серьезной проблемой. На сервере проводятся флуд-атаки, при этом лог заполняется сообщениями:
Warning: PlayerDialogResponse crash exploit from PlayerId: 114
Warning: PlayerDialogResponse crash exploit from PlayerId: 114
Warning: PlayerDialogResponse crash exploit from PlayerId: 114
Warning: PlayerDialogResponse crash exploit from PlayerId: 114
....
Причем с такой интенсивностью, что за 1 минуту лог прибавляет в весе 1 Гб. Ни один callback при этом не вызывается, следовательно не могу фиксануть атаку скриптово. Но я уверен, что решение есть, возможно кто-то уже сталкивался подобным.
Прошу помочь нам с этой бедой.
Re: Warning: PlayerDialogResponse crash exploit -
jhonyxakep - 01.04.2012
Quote:
Причем с такой интенсивностью, что за 1 минуту лог прибавляет в весе 1 Гб. Ни один callback при этом не вызывается, следовательно не могу фиксануть атаку скриптово. Но я уверен, что решение есть, возможно кто-то уже сталкивался подобным.
Прошу помочь нам с этой бедой.
|
Если есть ид, значит есть и IP игрока. Следовательно предлагаю написать небольшую программку/плагин, который будет читать инфу из лога. В случае чего баним пользователя IPFW.
ЗЫ
У вас в группе ВК сидит очень много желающих положить сервер. Рекомендую приглядываться к таким постам, а то ваши модераторы любое упоминание о баге и будущей атаке сервера просто удаляют. До админов не доходит.
Re: Warning: PlayerDialogResponse crash exploit -
RingoRus - 01.04.2012
Фишка в том, что ID игрока вообще не существует. То есть если проследить по логу, игрок с таким ID вообще не подключался к серверу, это пустой слот. Или цифра равна 65535.
На счёт сообщений в группе - если на каждое из них обращать внимание, то мы далеко не уйдем. В основном это просто трёп школьников.
Re: Warning: PlayerDialogResponse crash exploit -
OKStyle - 01.04.2012
А если в колбэк OnDialogResponse добавить условие if(playerid == INVALID_PLAYERID || !IsPlayerConnect(playerid)) return 0;
Вот только ID он не получает... Но сервак видит его, странно.
Re: Warning: PlayerDialogResponse crash exploit -
[Jeka] - 01.04.2012
Я то думал, что только у меня такая проблема. Пора бы написать Kalcor'y.
Re: Warning: PlayerDialogResponse crash exploit -
jhonyxakep - 01.04.2012
Это характерно только для определенных ОС или для всех?
Re: Warning: PlayerDialogResponse crash exploit -
dimonml - 01.04.2012
А как долго происходит обычно такая атака? Очень бы хотелось иметь лог снифера в момент атаки: тогда можно было бы проанализировать на сетевом уровне, чем атакующий отличается от нормального игрока и написать соответствующее правило для брандмауэра ОС.
Re: Warning: PlayerDialogResponse crash exploit -
[Saint] - 01.04.2012
Quote:
Originally Posted by [Jeka]
Я то думал, что только у меня такая проблема. Пора бы написать Kalcor'y.
|
а SA-MP 0.3e по вашему для чего разрабатывается?
Re: Warning: PlayerDialogResponse crash exploit -
devil77771 - 01.04.2012
А лагает при таких атаках у вас на сервере? Если нет, то может быть можно просто отключить логирование действий..
Re: Warning: PlayerDialogResponse crash exploit -
RingoRus - 01.04.2012
Я написал кую, и судя по его ответу он не в курсе о такой проблеме.
Моё сообщение:
Код:
Hello Kye!
I own two large servers (Russia) with a big online (600-900 players).
We are faced with a serious security problem. I described it in this thread: https://sampforum.blast.hk/showthread.php?tid=330118
Please tell us how to fix it before the release of new version of SA-MP 0.3e
Thank you.
Ответ:
Код:
Hello,
Do you know if OnDialogResponse is actually being called for this player?
You could simply look up his IP address from the playerid and block his ISP from connecting to your server. Place a report with his ISP saying he is trying to attack you.
If the server crashes, please provide the crashinfo.txt if on windows. If on linux, run the server in gdb and try to get a backtrace.
Kye.
После чего я передал ему всю информацию, которую мну удалось получить, а именно:
1. OnDialogResponse не вызывается, функция ShowPlayerDialog не участвует в процессе атаки
2. ID игрока, который указан в сообщении "Warning..." в данный момент не подключен к серверу:
Код:
.....
[01/04/2012 12:03:17] [part] Vanya_Sokolov has left the server (31:1)
.....
No connections to 31 slot
.....
[01/04/2012 12:03:38] Warning: PlayerDialogResponse crash exploit from PlayerId: 31
[01/04/2012 12:03:38] Warning: PlayerDialogResponse crash exploit from PlayerId: 31
[01/04/2012 12:03:38] Warning: PlayerDialogResponse crash exploit from PlayerId: 31
[01/04/2012 12:03:38] Warning: PlayerDialogResponse crash exploit from PlayerId: 31
[01/04/2012 12:03:38] Warning: PlayerDialogResponse crash exploit from PlayerId: 31
.....
Следовательно узнать айпи и другую информацию нереально.
3. Id может быть = 65535
(Warning: PlayerDialogResponse crash exploit from PlayerId: 65535)
На счёт gdb я не знаю, никогда с этим не работал. Но если потребуется, попрошу чтобы сделали то, что он просит.
Re: Warning: PlayerDialogResponse crash exploit -
jhonyxakep - 01.04.2012
?
Quote:
На счёт gdb я не знаю, никогда с этим не работал. Но если потребуется, попрошу чтобы сделали то, что он просит.
|
Думаю все-же лучше произвести операцию со сниффером.
Re: Warning: PlayerDialogResponse crash exploit -
RingoRus - 01.04.2012
Quote:
Originally Posted by jhonyxakep
Думаю все-же лучше произвести операцию со сниффером.
|
Поподробнее можно? Что это такое?
Re: Warning: PlayerDialogResponse crash exploit -
jhonyxakep - 01.04.2012
Сниффер - программа, которая перехватывает сетевые пакеты (грубо говоря).
По сути дела нам надо отловить сниффером пакет, после которого возникает этот варнинг и понять, что там посылают, и кто это посылает.
Re: Warning: PlayerDialogResponse crash exploit -
-Stranger- - 01.04.2012
Quote:
Причем с такой интенсивностью, что за 1 минуту лог прибавляет в весе 1 Гб.
|
Странно тут то, что получается каждую секунду происходит более 200000 атак, что почти не может быть. Видимо баг в сампе который заставляет сервер сам себя насиловать.
Re: Warning: PlayerDialogResponse crash exploit -
dimonml - 01.04.2012
с gdb Кай имел в виду следующее: если приложение падает, то если его запустить из под отладчика (gdb), то мы будем иметь call стек, который привел к падению: грубо говоря историю вызова функций и их аргументы. Это может помочь Каю разобраться в чем проблема. Но это при условии, если сервер крашит. Если сервер не крашит, то запускать его из под отладчика смысла не имеет (если не уметь им пользоваться).
Можно конечно поставить брейк поинт на код, который печатает данный лог, но не умея отлаживать программы без исходников это будет сложно + приведет к останову работы сервера в момент срабатывания брейк-поинта.
Re: Warning: PlayerDialogResponse crash exploit -
jhonyxakep - 02.04.2012
Quote:
Можно конечно поставить брейк поинт на код, который печатает данный лог, но не умея отлаживать программы без исходников это будет сложно + приведет к останову работы сервера в момент срабатывания брейк-поинта.
|
GDB насколько помню умеет логировать ошибки не приостанавливая выполнение.
Re: Warning: PlayerDialogResponse crash exploit -
Evgenii - 02.04.2012
Атаку заметили еще 1-го числа, сделали защиту тогда же.
Для достижения цели используют старую уязвимость SAMP, фактически, просто закидывают сервер пакетами с эксплоитом PlayerDialogResponse. SAMP защиту для этого эксплоита реализовал, но при этом реализовал и уведомление в лог. Сама атака базируется именно на этом, чтобы закидать сервер пакетами с эксплоитом. Эксплоит не срабатывает, а вот с кучей записей в лог у сервера возникают проблемы.
Хостинг Ru-hoster, если что. А для защиты лучше обращайтесь к своему хостинг-провайдеру.
Re: Warning: PlayerDialogResponse crash exploit -
OKStyle - 02.04.2012
Напишите SUG что-ли, чтобы всякая херня не логировалась...
Re: Warning: PlayerDialogResponse crash exploit -
RingoRus - 02.04.2012
Вот мы сейчас перевели один из наших серверов на 0.3е, и пока не было проблем с флудом. Подождём ещё пару дней, посмотрим. Надеюсь куй, сам того не зная, исправил это.
Re: Warning: PlayerDialogResponse crash exploit -
dimonml - 02.04.2012
А можно на скидку, сколько пакетов в секунду отправляет атакующий и каков размер пакетов (чтобы и другие могли настроить себе защиту)?