SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian

Reply
 
Thread Tools Display Modes
Old 24/12/2012, 02:44 PM   #51
AirKite
Gangsta
 
AirKite's Avatar
 
Join Date: Feb 2009
Posts: 733
Reputation: 21
Default Re: Атака сервера

Quote:
Originally Posted by dimonml View Post
если удалось подменить player_id, то злоумышленник способен отсылать rpc вызовы от имени любого игрока и вся архитектура шифрования сессий RakNet уже скомпрометирована: наличие дополнительной проверки сервер уже не спасет
Верно сказано, но по всей видимости автор теории о подмене playerid в диалогах намекает на то, что именно этот паблик вызывается с аргументом playerid извне архитектуры SAMP. То есть туда якобы попадает playerid не имея никакого отношения к сессии. Только тут становится непонятно, зачем бы вообще нужно было SAMP-у отделять это событие... (абсурд).

Как на мой взгляд, так это то, что теория о подмене playerid в OnDialogResponse построена лишь на том, что туда попадают входящие данные (в том числе dialogid), которые отправляются непосредственно с клиента. Автор теории попросту не задумывался о том, что такое playerid и насколько фатальна была бы его подмена.

А проверки в pawn если уж какие то и нужно было делать, то тогда это как минимум Ник и IP-Адрес. Как автор пытался на всякий случай спастись INVALID_PLAYER_ID и IsPlayerConnected не понятно.
AirKite is offline   Reply With Quote
Old 24/12/2012, 04:48 PM   #52
-Stranger-
Gangsta
 
-Stranger-'s Avatar
 
Join Date: Mar 2010
Location: TCP/IPv4
Posts: 770
Reputation: 40
Default Re: Атака сервера

1) Подключаем бота.
2) Вызываем OnDialogResponse.
3) Сразу же отключаем бота.

Получаем playerid несуществующего игрока.
Может это и не совсем подмена, в том смысле, в котором Вы поняли, но разве от неё защиты ненужно делать?

add:
Я не знаю в каком случае OnDialogResponse может вернуть INVALID_PLAYER_ID, но разве это стоит дискуссии на 2 станицы? Есть проверка, пусть будет проверка, или 0.0001мс, которые заняла проверка стоят обсуждения?
__________________
[Mess with the best, die like the rest]
Помог? - жми на . Тебе один клик, а мне приятно
-Stranger- is offline   Reply With Quote
Old 24/12/2012, 04:56 PM   #53
Alexander_Petrov
Gangsta
 
Join Date: Oct 2011
Location: Russia
Posts: 835
Reputation: 22
Default Re: Атака сервера

Quote:
Originally Posted by -Stranger- View Post
Я не знаю в каком случае OnDialogResponse может вернуть INVALID_PLAYER_ID, но разве это стоит дискуссии на 2 станицы? Есть проверка, пусть будет проверка, или 0.0001мс, которые заняла проверка стоят обсуждения?
Стоят, потому что за это время могла пройти другая, более нужная проверка.
Alexander_Petrov is offline   Reply With Quote
Old 24/12/2012, 05:10 PM   #54
dimonml
Gangsta
 
dimonml's Avatar
 
Join Date: Oct 2008
Location: Russia, Moscow
Posts: 688
Reputation: 28
Default Re: Атака сервера

Quote:
Originally Posted by -Stranger- View Post
1) Подключаем бота.
=OnPlayerConnect;
Quote:
Originally Posted by -Stranger- View Post
2) Вызываем OnDialogResponse.
Получаем срабатывание колбека с валидным ид игрока;
Quote:
Originally Posted by -Stranger- View Post
3) Сразу же отключаем бота.
=OnPlayerDisconnect;

Quote:
Originally Posted by -Stranger- View Post
Получаем playerid несуществующего игрока.
Получаем вполне существующий (на момент вызова обработчика) playerid.

Quote:
Originally Posted by -Stranger- View Post
Может это и не совсем подмена, в том смысле, в котором Вы поняли, но разве от неё защиты ненужно делать?
От описанного кейса нужно защищаться по другому;

Quote:
Originally Posted by -Stranger- View Post
add:
Я не знаю в каком случае OnDialogResponse может вернуть INVALID_PLAYER_ID, но разве это стоит дискуссии на 2 станицы? Есть проверка, пусть будет проверка, или 0.0001мс, которые заняла проверка стоят обсуждения?
Просто тут идет попытка защититься от несуществующей угрозы. Ее никто не видел, но мы думаем - а вдруг поможет. Это гадание, а не программирование.
__________________
dimonml is offline   Reply With Quote
Old 24/12/2012, 05:13 PM   #55
AirKite
Gangsta
 
AirKite's Avatar
 
Join Date: Feb 2009
Posts: 733
Reputation: 21
Default Re: Атака сервера

Quote:
Originally Posted by -Stranger- View Post
1) Подключаем бота.
2) Вызываем OnDialogResponse.
3) Сразу же отключаем бота.

Получаем playerid несуществующего игрока.
Может это и не совсем подмена, в том смысле, в котором Вы поняли, но разве от неё защиты ненужно делать?
Что значит несуществующего игрока? Его сессия всё ещё активна и не завершена. В чём будет заключаться защита если IsPlayerConnected будет возвращать true пока игрок или бот действует на сервере?

Особенно интересен переход с пункта 2 на 3. Как вы себе представляете отправку диалога и моментальный выход? Отправка пакета и выход с сервера до того как пакет дойдёт? В любом случае выход будет совершён после вызова диалога... Бред в общем.

Quote:
Originally Posted by -Stranger- View Post
Я не знаю в каком случае OnDialogResponse может вернуть INVALID_PLAYER_ID, но разве это стоит дискуссии на 2 станицы? Есть проверка, пусть будет проверка, или 0.0001мс, которые заняла проверка стоят обсуждения?
Дело не во времени а в излишках. К тому же код этот предоставляется тем, кто сам не в состоянии создать подобное т.е. новичкам. А потом мы наблюдаем ужасное состояние серверов.
AirKite is offline   Reply With Quote
Old 25/12/2012, 06:21 AM   #56
stabker
High-roller
 
Join Date: Mar 2012
Posts: 1,311
Reputation: 86
Default Re: Атака сервера

Вообщем, это Ping response flood. Нужно проверять Messages in Send buffer через GetPlayerNetworkStats, если значение >= 8-10k - банить. Но учитывайте, что при дисконнекте данные скачут, добавляйте какой-то флаг о том, что началось выполнение OnPlayerDisconnect и если при нем Messages in Send buffer завышена, это можно проигнорировать. И еще, для уверенности, на всякий случай баньте после 2х таких определений.
Думаю кому-то пригодиться.
stabker is offline   Reply With Quote
Old 25/12/2012, 09:15 AM   #57
jhonyxakep
Gangsta
 
jhonyxakep's Avatar
 
Join Date: May 2011
Location: Russia, Moscow
Posts: 790
Reputation: 43
Default Re: Атака сервера

Quote:
Цитата: Сообщение от -Stranger-
1) Подключаем бота.

=OnPlayerConnect;
Цитата: Сообщение от -Stranger-
2) Вызываем OnDialogResponse.

Получаем срабатывание колбека с валидным ид игрока;
Цитата: Сообщение от -Stranger-
3) Сразу же отключаем бота.

=OnPlayerDisconnect;

Цитата: Сообщение от -Stranger-
Получаем playerid несуществующего игрока.

Получаем вполне существующий (на момент вызова обработчика) playerid.

Quote:
Особенно интересен переход с пункта 2 на 3. Как вы себе представляете отправку диалога и моментальный выход? Отправка пакета и выход с сервера до того как пакет дойдёт? В любом случае выход будет совершён после вызова диалога... Бред в общем.
Как самп реагирует на пакеты от потенциально не подключенного игрока? Те без вызова OnPlayerConnect
jhonyxakep is offline   Reply With Quote
Old 25/12/2012, 04:43 PM   #58
AirKite
Gangsta
 
AirKite's Avatar
 
Join Date: Feb 2009
Posts: 733
Reputation: 21
Default Re: Атака сервера

Quote:
Originally Posted by jhonyxakep View Post
Как самп реагирует на пакеты от потенциально не подключенного игрока? Те без вызова OnPlayerConnect
Что означает потенциально не подключенного? Он или подключен или нет. Есть ведь определённый таймаут подключения по которому и считается подключен игрок или нет. Ну и по факту ответа от него разумеется.
AirKite is offline   Reply With Quote
Old 25/12/2012, 05:47 PM   #59
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,761
Reputation: 142
Default Re: Атака сервера

Quote:
Originally Posted by jhonyxakep View Post
Как самп реагирует на пакеты от потенциально не подключенного игрока? Те без вызова OnPlayerConnect
игнорирует.
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is online now   Reply With Quote
Old 26/12/2012, 07:04 AM   #60
AirKite
Gangsta
 
AirKite's Avatar
 
Join Date: Feb 2009
Posts: 733
Reputation: 21
Default Re: Атака сервера

Quote:
Originally Posted by stabker View Post
Вообщем, это Ping response flood. Нужно проверять Messages in Send buffer через GetPlayerNetworkStats, если значение >= 8-10k - банить. Но учитывайте, что при дисконнекте данные скачут, добавляйте какой-то флаг о том, что началось выполнение OnPlayerDisconnect и если при нем Messages in Send buffer завышена, это можно проигнорировать. И еще, для уверенности, на всякий случай баньте после 2х таких определений.
Думаю кому-то пригодиться.
Всем наверное срать, никто даже и спасибо не сказал. Вообще спасибо. Сервер пока не держу, но подозревал о переполнении буфера и выявлении аномалий в GetPlayerNetworkStats. То времени то возможности не было проверить эти уязвимости. Кстати разве Messages in Send buffer не буфер на стороне клиента? Типа очередь сообщений для отправки? т.е. разумеется можно переписать досер так, что бы он не отсылал пакеты как только Messages in Send buffer переполняется, и как только он уменьшится возобновить отправку (на сторону сервера и эффективность атаки никак не повлияет если Messages in Send buffer это то, о чём я подумал).
AirKite is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Взлом сервера! Ghost~Ride Русский/Russian 7 11/12/2012 03:31 PM
SA-MP 0.3e R2 обновление сервера Stepashka Русский/Russian 20 17/11/2012 12:37 PM
Атака сервера stabker Русский/Russian 22 08/09/2012 12:59 PM
Зависание сервера RoAChik Русский/Russian 7 30/07/2012 02:03 PM
Вылетаение сервера serpip Русский/Russian 43 11/05/2012 05:10 PM


All times are GMT. The time now is 05:53 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.