• 3 162
  • 11
  • 21

Найдена уязвимость в Project Red

Найдена уязвимость в Project Red
Найдена уязвимость в Project RedНичто не заставляет искать уязвимости лучше, чем когда ты точно знаешь о её наличии. В этом случае, ты гарантированно обречён на успех.
Проверкой модов занялись сразу после несостоявшегося рейда группы "хаЦкеров" 18 июля на сервере TechnoMagic #1.

Проверяли, проверяли... И нашли!

Медленно, но верно были перепроверены все основные модификации. Последним дело дошло до Project Red. Лезть в этот мод не было желания, так как он написан на JVM-языке Scala, что затрудняет анализ его кода. По этой же причине, мод "исправляется" только путём запрета неугодных предметов. Более-менее поняв код мода, уязвимость обнаружить удалось. Спасибо автору за незамудрённый код.
Уязвимость кроется в компоненте Transportation, являющегося частью аддона Mechanical. Поэтому, если он у вас не установлен - вы вне зоны риска. А виновата во всём реализация сохранения настроек микросхем, используемых для настройки "умных" труб.
Автор поленился написать свою реализацию передачи настроек на сервер. В результате всё делалось на стороне клиента, а на сервер отправлялся уже готовый предмет. Только не подумал он о каких-либо проверках, сделать хотя бы сравнение предмета в руке игрока и полученной версии от клиента. В итоге мы имеем уязвимость, позволяющую выдать себе абсолютно любой предмет на сервере!

Аналогичного рода уязвимость ранее была найдена в моде BiblioCraft. После сообщения о проблеме, автор исправил её. Однако, качество фикса оставляет желать лучшего: присутствует возможность манипулировать NBT тегами, а это наложение чар на предмет, запись любого предмета в вырезанную книгу. Посмотрим, как автор Project Red отреагирует на сообщение о проблеме.

В заключение

Мы не претендуем на роль первооткрывателей уязвимости. Наша цель - пролить на это свет. Те, кто нашёл её ранее, теперь используют это в корыстных целях для проведения раздач. В выборе серверов "хаЦкеры" не руководствуются ничем, выбирают даже хорошие проекты вроде нашего. Поэтому нам ничего не остаётся сделать, как опубликовать уязвимость, чтобы все её исправили.
  • Автор: Andrey
  • Опубликовано:

11 комментариев

Andrey
Автор
Вся суть хака. Не смотреть, если Вы не знаете Java!
https://gist.github.com/TheAndrey/ae9ce4be3bf7a8ddf44b5881719c9754

[Для одменов] А это закинуть в папку mods сервера. Установили? Поздравляю, Вы в домике!
https://github.com/RedServer/PRTweaker/releases/
Erriour
Andrey,
Фишка в том, что большинство подобных забугорных мододелов не рассчитывают, что их моды будут стоять на крупных публичных серверах.
Andrey
Автор
Erriour, не важно. Если мод рассчитан для использования на сервере (а не только для одиночной игры), следует думать о безопасности. Всё начинается с таки мелочей, а потом получаем дырявый софт.
kriorin
А в чём заключался хак?
Sorangan
Ты берёшь моды бесплатно, будь добр сам его и фиксить.
Andrey
Автор
Цитата: Sorangan
Ты берёшь моды бесплатно, будь добр сам его и фиксить.
Это суждение было бы верным, если бы претензия предъявлялась к багам мода (дюпы и т.п.), потому что те возникают случайно.

Здесь же претензия предъявляется больше к качеству забугорного образования. "Никогда не доверяй клиенту" - это общее правило разработки всех сетевых приложений. Практически во всех модах оно более-менее соблюдается. Данный случай - нелепая ошибка.
...Хотя у нас до сих пор не могут отучиться писать на PHP без SQL-инъекций. Интернет пестрит "правильными" руководствами по написанию чего-либо.
Sorangan
Andrey,
А ведь "за бугром" вообще запрещено держать сервера, кроме ванильных, либо я ошибаюсь?
Andrey
Автор
Не знаю, что там точно, но публичные серверы с модами у них не распространены. Разве что существуют FTB и прочие сборки и лаунчеры для их скачивания.
Вероятно, не делают с модами потому, что это крайне сложно. Сервер ведь должен быть защищённым от вандалов.
Sorangan
Andrey,

Вообще, их EULA напрягает за каждый лишний шаг, по крайней мере читал пару лет назад. Даже за лишние моды банят сервера, когда им что то не нравится. Просто они уважают свои законы, а мы плевали, да и оно не касается нас.
Так что претензии должны быть и к "нашему" образованию, тем более, что у нас здесь всё проще.
SergeJ15
Ну вот как так то, "проверять все входящие данные" - правило которое вдалбливают на первом курсе, в технической литературе, в общем везде, в любом материале по теме. Базис, на котором в итоге чаще всего и запарываются разрабы...
Vladogen
Молодцы что нашли первыми уязвимость и поддерживаете статус сервера без читов smile
Информация
Комментировать статьи на сайте возможно только в течении 30 дней со дня публикации.
Нашли очепятку? Выделите её и нажмите Ctrl+Enter.