Уязвимости Not Enough Items
- 30671
- 40
- 25


Этой статьёй мы снова продолжаем тему взломов с помощью модов. На этих выходных наши RedPower сервера подверглись взлому - была проведена раздача большого количества ресурсов.
Это не дюп
Первое, что нас насторожило - среди ресурсов, которые раздавали были квантовые генераторы. Это сразу отвергло теорию дюпа, так как предмет сначала нужно получить, чтобы его дюпнуть. А как это сделать с предметом из творческого режима у которого ещё нет крафта?
Первый поиск - безрезультатно
Тут напрашивается вывод только один - взлом. Была проведена большая проверка, которая никаких результатов не дала. Оставался только один вариант взлома - с помощью пакетов (о чём мы писали в предыдущей статье). Позже выяснилось, что у игрока (и его аккаунтов), проводившего раздачу был творческий режим. Это значительно сузило круг поиска, потому что игровой режим можно переключить только двумя способами: с помощью команды gamemode и с помощью кнопки в NEI. Повторный поиск тоже ничего не дал. Банить аккаунты взломщика не имело смысла - это не решить проблему: он может создать новые, либо его последователи продолжать это дело. Выход из ситуации только один - искать уязвимость и фиксить её.
Решено было установить "капкан" и ждать визита взломщика.
"Капкан" сработал
Взломщик заходит в очередной раз проверить работу уязвимости и успешно попадает в наш "капкан". Правда, сам взловщик при его срабатывании ничего не заметил, а вот мы увидели, где находится сама дырка. Верным помощником взломщика отказался мод Not Enough Items (который стоит не только на клиенте, но и на сервере для полноценной интеграции). Взлом осуществлялся с помощью одного пакета, который серверная часть NEI принимала без каких-либо проверок.
Что же нам ChickenBones приготовил?
Давайте рассмотрим, как работает серверная часть NEI.
ServerPacketHandler - обработчик пакетов, присланных клиентом (игроком). На первый взгляд здесь всё хорошо. Проверка прав доступа есть. Мы выяснили, что взломщик использовал пакет с type=13, который переключает творческий режим. Но как он это сделал, если тут есть проверка доступа?

А теперь посмотрим, как работает функция проверки доступа authenticatePacket() в NEIServerConfig. И тут мы видим, что на некоторые type пакетов она тупо возвращает true не делая никаких проверок! Как раз на наш пакет с type=13 она всегда возвращает true (даёт добро на выполнение действия).

Вот и вся суть взлома. Сервер спокойно принимает пакет от клиента и включает игроку творческий режим.
Со стороны клиента отправка пакета очень проста. Остаётся лишь назначить клавишу, которая будет выполнять этот код и установить мод на клиент (лаунчеры не помеха).

Исследуя этот код, мы нашли ещё одну аналогичную уязвимость. Отправив пакет с type=15 можно изменить тип моба, который создаёт спаунер. Этот пакет тоже не прверяется на наличие прав доступа. Отправка пакета со стороны клиента уже немного отличается - нужно указать местоположение и тип моба, который будет создавать спаунер.
Этот пакет используется NEI для установки спаунеров мобов игроком, так как в свойства предмета нельзя записать тип моба, который он будет создавать - это не предусмотрено игрой.
Неудивительно, что автор мода допустил такие ошибки. Проверка доступа к функциями раскидана по разным частям мода, поэтому так легко не заметить отсутствующую проверку. Благо, в версии 1.6.4 автор во время переписывания этой функции, исправил проблему. Таким образом уязвимость работает только на версии Minecraft 1.5.2 и ниже.
Осторожно! Вымогатели
Некоторые администраторы серверов уделяют очень много времени на поиск всевозможных уязвимостей и багов в модах. Потом их фиксят. Это всё конечно хорошо, но сейчас пошла мода практиковать найденные уязвимости на чужих серверах и предлагать их администрации фикс за деньги, что по сути является вымогательством. Принцип таков: "Либо ты у нас покупаешь фикс и всё будет хорошо, либо твой сервер будут всё время ломать". Самое интересное, что на просьбы прекратить взламывать сервер они отвечают "Это не мы ломаем, это всё игроки. Мы к этому не вообще не причастны. Мы всего-лишь предлагаем Вам фикс. Покупать фикс или нет - это уже ваше дело.". Хотя на самом деле продавец и те, кто ломают ещё как связаны друг с другом. Таким образом вымогатели ставят администрацию серверов в безвыходное положение: купить фикс или закрыть сервер. Вымогатели делают деньги на продаже фиксов (ценник почти всегда завышен) и уязвимости игрокам, которые хотят "пошалить".
Выход есть! Где используют уязвимость? Правильно! На вашем сервере. А знаете, за кем в таком случае преимущество? - За вами. Взломщики играют на вашем сервере, а значит, по вашим правилам. Вы можете следить абсолютно за всем, что они делают на сервере. Просто установите слежку за всеми действиями игроков (включая присылаемые ими пакеты). С системой слежки взломщик сам выведет Вас на уязвимость совершенно бесплатно! Далее останется только написать фикс. Таким образом вымогатель останется с носом.
Заключение
Публикуйте найденные уязвимости в свободном доступе. Это в первую очередь сорвёт продажи вымогателям, потому что число серверов, где будет работать уязвимость значительно сократится, ведь есть на свете добрые люди, которые выкладывают фиксы бесплатно.
Публикуя уязвимости Вы помогаете другим проектам, а они Вам, если будут это делать тоже.
Стоит отметить, что при таком раскладе схема вымогательства потеряет свою актуальность, а игроки всех серверов перестанут страдать от регулярных откатов и вайпов.
Или ссылку сюда прислать?
</s>молодцыхорошо справились<s>админ как устанавливат моды на таких лаунчерах кто знает????
Я могу дать сылку вам не на уязвимость она бесплатная я даже знаю кто взламывал сер чтоб связаться со мной вот скайп gaponenko228
ее не продают а качают кое-скакого сайта могу дать вам сылку на него скайп gaponenko228
Бесплатная, потому что она сделана по примеру, который описан здесь. До этого её наверняка продавали.
Свой 228-й скайп оставь себе.