FlatiCommunity

FlatiCommunity 

«Бабки, статус, рабы»

1subscriber

20posts

Арка: Ядра. Эксплойт с помощью люка и редстоуна.

Активно форситься данная ошибка в ядре, которую начали применять в своих целях люди, начала в мае 2023 года.
Тогда многие проекты русского комьюнити Minecraft ложили этим эксплойтом, а в логах ошибок были какие-то механизмы с координатами.
Логи ниже:
Скриншот из игры с места события от 18 мая 2023 года ниже.
Почему возникала данная проблема?
- Всё дело в повторении редстоун сигналов, они заходили в цикл и не выходили из него (проблема ядра).

Как изучил наш эксперт в ядрах в мае 2023 года, ошибка возникала на следующих версиях ядра Paper:
- 1.16.5 - краш.
- 1.17.1 - краш.
- 1.18.2 - краш.
- 1.19.2 - дикие пролаги, сервер попытается "убить" механизм.
- 1.19.4 - новая механика обработки повторных сигналов, не особо работает, просто "убьёт" механизм.
ВАЖНО: На версии 1.19.4 от Folia происходит Memory Leak, даже, если механизм "убивается".
Итоги из версий сделали таковы: 
Начиная с 1.19 в ядре на каждый редстоун сигнал появились ограничения - сколько раз он повторится.
Существует не мало механизмов позволяющих сделать бесконечное количество повторов, что приводит сервер к крашу.

Логи из 1.19+ версий к слову, на основании которых был найден код связанный с редстоун механизмами:
Если взглянуть на ядро под "маппингами" т.е. под package, то надо опуститься на net.minecraft.world.level.
Что же там оказалось внутри ядра?
- Была добавлена переменная ограничивающая количество повторов для механизмов, при этом на каждый мир, но являются общими для всех редстоунов.
Вот заветный кусочек кода из ядра (под маппингами от FabricMC):
Как же это исправить на самом деле?
- Необходимо ограничить количество операций на все механизмы, и лучше это сделать напрямую в ядре.
Некоторые люди сделали плагины не на механизмы, но есть особенность: ядро будет на более высоком приоритете, ведь эвенты будут исполняться позже, чем код в самом ядре, исходя из этого фиксы плагинами недостаточно хороши. В добавок там есть список ограниченных операций с определенными типами предметов, но не количество операции, а значит, сервер все равно можно будет крашнуть. Если игроки построят механизм, который будет сам себя пере-создавать и/или же из других типов блоков, то данный фикс не будет работать.
Код про типы блоков ниже (взято из GitHub):
Самым действенным методом в виде плагина был вариант от разработчика darkycat, который его не стал загружать на GitHub, но залил на pastebin (удалено) и hastebin. 
Даже самый простой класс кода с исправлением эксплойта оказался намного практичнее и действенней, чем другие псевдо-фиксы плагинов и бонусом он остался оптимизированным (используются особые виды кэширования).
Наш эксперт в свою очередь исправлял баг после "временной заплатки-фикса" напрямую в ядре SSSpigot на 1.16.5, переписывая логику редстоун механизмов, но датируется исправление уже 30-31 маем 2023 года. Итог можно лицезреть ниже на тестовом сервере (запись от 31 мая 2023 года):
Источник: PasteCommunity
Дата: 17 мая 2023 года.
Subscription levels1

Арка. Оптимизация.

$7.3 per month
> В цене учитывается комиссия платформы, альтернативная покупка доступна в боте FlatiShop.
Go up