1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Совмещение %minecraftFormatting и {nolookups}

Тема в разделе "Оффтопик", создана пользователем Overwrite, 11 дек 2021.

  1. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    В связи со сложившимся адом в виде log4j эксплоита, пейпер выкатил единственный на данный момент нормальный рабочий фикс для версий 1.8-1.15. Заключается он в создании файла log4j.xml и добавлении в скрипт запуска аргуменат, чтобы логирование шло по образцу оттуда.

    log4j.xml с фиксом:
    Код:
    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
        <Appenders>
            <TerminalConsole name="TerminalConsole">
                <PatternLayout>
                    <LoggerNamePatternSelector defaultPattern="%highlightError{[%d{HH:mm:ss} %level]: [%logger] %msg{nolookups}%n%xEx}">
                        <!-- Log root, Minecraft, Mojang and Bukkit loggers without prefix -->
                        <!-- Disable prefix for various plugins that bypass the plugin logger -->
                        <PatternMatch key=",net.minecraft.,Minecraft,com.mojang.,com.sk89q.,ru.tehkode.,Minecraft.AWE"
                                      pattern="%highlightError{[%d{HH:mm:ss} %level]: %msg{nolookups}%n%xEx}" />
                    </LoggerNamePatternSelector>
                </PatternLayout>
            </TerminalConsole>
            <RollingRandomAccessFile name="File" fileName="logs/latest.log" filePattern="logs/%d{yyyy-MM-dd}-%i.log.gz">
                <PatternLayout>
                    <LoggerNamePatternSelector defaultPattern="[%d{HH:mm:ss}] [%t/%level]: [%logger] %msg{nolookups}{strip}%n">
                        <!-- Log root, Minecraft, Mojang and Bukkit loggers without prefix -->
                        <!-- Disable prefix for various plugins that bypass the plugin logger -->
                        <PatternMatch key=",net.minecraft.,Minecraft,com.mojang.,com.sk89q.,ru.tehkode.,Minecraft.AWE"
                                      pattern="[%d{HH:mm:ss}] [%t/%level]: %msg{nolookups}{strip}%n" />
                    </LoggerNamePatternSelector>
                </PatternLayout>
                <Policies>
                    <TimeBasedTriggeringPolicy />
                    <OnStartupTriggeringPolicy />
                </Policies>
                <DefaultRolloverStrategy max="1000"/>
            </RollingRandomAccessFile>
        </Appenders>
        <Loggers>
            <Root level="info">
                <filters>
                    <MarkerFilter marker="NETWORK_PACKETS" onMatch="DENY" onMismatch="NEUTRAL" />
                </filters>
                <AppenderRef ref="File"/>
                <AppenderRef ref="TerminalConsole" level="info"/>
            </Root>
        </Loggers>
    </Configuration>

    Однако возникает проблема. В оригинальном log4j, вшитом в ядро присутствует %minecraftFormatting. Он помогает консоли отображать все необходимые цвета. Как можно увидеть, в новом файле такого аргумента нет, что означает, что ни 1 цвет в консоли отображаться не будет.

    Оригинал log4j.xml из pathced.jar:
    Код:
    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
        <Appenders>
            <TerminalConsole name="TerminalConsole">
                <PatternLayout>
                    <LoggerNamePatternSelector defaultPattern="%highlightError{[%d{HH:mm:ss} %level]: [%logger] %minecraftFormatting{%msg}%n%xEx}">
                        <!-- Log root, Minecraft, Mojang and Bukkit loggers without prefix -->
                        <!-- Disable prefix for various plugins that bypass the plugin logger -->
                        <PatternMatch key=",net.minecraft.,Minecraft,com.mojang.,com.sk89q.,ru.tehkode.,Minecraft.AWE"
                                      pattern="%highlightError{[%d{HH:mm:ss} %level]: %minecraftFormatting{%msg}%n%xEx}" />
                    </LoggerNamePatternSelector>
                </PatternLayout>
            </TerminalConsole>
            <RollingRandomAccessFile name="File" fileName="logs/latest.log" filePattern="logs/%d{yyyy-MM-dd}-%i.log.gz">
                <PatternLayout>
                    <LoggerNamePatternSelector defaultPattern="[%d{HH:mm:ss}] [%t/%level]: [%logger] %minecraftFormatting{%msg}{strip}%n">
                        <!-- Log root, Minecraft, Mojang and Bukkit loggers without prefix -->
                        <!-- Disable prefix for various plugins that bypass the plugin logger -->
                        <PatternMatch key=",net.minecraft.,Minecraft,com.mojang.,com.sk89q.,ru.tehkode.,Minecraft.AWE"
                                      pattern="[%d{HH:mm:ss}] [%t/%level]: %minecraftFormatting{%msg}{strip}%n" />
                    </LoggerNamePatternSelector>
                </PatternLayout>
                <Policies>
                    <TimeBasedTriggeringPolicy />
                    <OnStartupTriggeringPolicy />
                </Policies>
                <DefaultRolloverStrategy max="1000"/>
            </RollingRandomAccessFile>
        </Appenders>
        <Loggers>
            <Root level="info">
                <filters>
                    <MarkerFilter marker="NETWORK_PACKETS" onMatch="DENY" onMismatch="NEUTRAL" />
                </filters>
                <AppenderRef ref="File"/>
                <AppenderRef ref="TerminalConsole" level="info"/>
            </Root>
        </Loggers>
    </Configuration>
    
    

    Из этого складывается вопрос. Каким образом возможно вписать %minecraftFormatting в новый log4j.xml, не потеряв фикса и чтобы всё отображалось корректно?

    Быть может кто то из вас знает другие фиксы?
     
    Последнее редактирование: 11 дек 2021
  2. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
  3. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
  4. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    а просто заменить все %msg на %msg{nolookups} не работает? upload_2021-12-11_23-38-1.png
     
  5. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Если пытаться делать так - получается это:

    upload_2021-12-12_1-13-9.png

    upload_2021-12-12_1-14-10.png

    Код:
    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
        <Appenders>
            <TerminalConsole name="TerminalConsole">
                <PatternLayout>
                    <LoggerNamePatternSelector defaultPattern="%highlightError{[%d{HH:mm:ss} %level]: [%logger] %minecraftFormatting{%msg{nolookups}}%n%xEx}">
                        <!-- Log root, Minecraft, Mojang and Bukkit loggers without prefix -->
                        <!-- Disable prefix for various plugins that bypass the plugin logger -->
                        <PatternMatch key=",net.minecraft.,Minecraft,com.mojang.,com.sk89q.,ru.tehkode.,Minecraft.AWE"
                                      pattern="%highlightError{[%d{HH:mm:ss} %level]: %minecraftFormatting{%msg{nolookups}}%n%xEx}" />
                    </LoggerNamePatternSelector>
                </PatternLayout>
            </TerminalConsole>
            <RollingRandomAccessFile name="File" fileName="logs/latest.log" filePattern="logs/%d{yyyy-MM-dd}-%i.log.gz">
                <PatternLayout>
                    <LoggerNamePatternSelector defaultPattern="[%d{HH:mm:ss}] [%t/%level]: [%logger] %minecraftFormatting{%msg{nolookups}}{strip}%n">
                        <!-- Log root, Minecraft, Mojang and Bukkit loggers without prefix -->
                        <!-- Disable prefix for various plugins that bypass the plugin logger -->
                        <PatternMatch key=",net.minecraft.,Minecraft,com.mojang.,com.sk89q.,ru.tehkode.,Minecraft.AWE"
                                      pattern="[%d{HH:mm:ss}] [%t/%level]: %minecraftFormatting{%msg{nolookups}}{strip}%n" />
                    </LoggerNamePatternSelector>
                </PatternLayout>
                <Policies>
                    <TimeBasedTriggeringPolicy />
                    <OnStartupTriggeringPolicy />
                </Policies>
                <DefaultRolloverStrategy max="1000"/>
            </RollingRandomAccessFile>
        </Appenders>
        <Loggers>
            <Root level="info">
                <filters>
                    <MarkerFilter marker="NETWORK_PACKETS" onMatch="DENY" onMismatch="NEUTRAL" />
                </filters>
                <AppenderRef ref="File"/>
                <AppenderRef ref="TerminalConsole" level="info"/>
            </Root>
        </Loggers>
    </Configuration>
    
     
  6. Typo_Kill

    Typo_Kill Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Typo_Kill
    Мне кажется стоит дождаться пока все ядра исправят эту уязвимость и не изобретать велосипед.
     
  7. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Это НЕ БУДЕТ ИСПРАВЛЕНО
     
  8. Typo_Kill

    Typo_Kill Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Typo_Kill
    Эм... Ну спигот же вроде исправил? Или я что то путаю?
     
  9. Artmoneyse

    Artmoneyse Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Artmoneyse
    Thermos 1.7.10:
    log4j.jpg
    Потереть некоторые функции в log4j ? Обновление до самой последний 8 Java не решает проблему, как некоторые советуют.
     
  10. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Проблема заключается не в java, а в ядре, которое использует устаревшую либу.

    Патчить бумагу я пока еще не научился, а обновлять тамашние либы тем более :bad:
     
  11. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    По сути самый нормальный фикс это обновить библиотеку в ядре, вот и всё.
     
  12. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Говорят что и это не спасает. Разраб Papaya говорил, что после обновы либы хак всё также работал
     
  13. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Значит жертвуйте цветами в консоле, всё равно консоль не на публику, а чтобы решать самые важные вещи через неё, не особо уж там и надо красоты
     
  14. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Проблема не только в отсутствии цветов, а еще и в назойливых § которые мешают спокойно жить.

    Но судя по всему стоит помянуть Paper полностью, т.к. поддержка версий ниже 1.16.5 прекращена
     
  15. Artmoneyse

    Artmoneyse Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Artmoneyse
    1) Декомпилировать библиотеку log4J через jd-gui
    2) Затереть тело некоторых методов\функций, чтобы библиотека просто игнорировала функционал который используется в уязвимости.
    Смотреть в:
    org.apache.logging.log4j.core.lookup.JndiLookup.java
    org.apache.logging.log4j.core.lookup.Interpolator.java
    3) Скомпилировать библиотеку.
     
  16. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Яснее не стало веришь нет
     
  17. Artmoneyse

    Artmoneyse Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Artmoneyse
    https://disk.yandex.ru/d/qdOYuLIGY7ptdQ
    Могу еще несколько версий пофиксить.
    На клиенте достаточно заменить библиотеку.
    На сервере нужно заменить классы в mojang_1.17.1.jar, server.jar или mojang_1.17.1.jar.
    Лучше заменить везде где есть:
    org.apache.logging.log4j.core.lookup.JndiLookup.class
     
  18. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Пейпер заменит заменённые ядра на свои
    upload_2021-12-13_19-46-24.png
     
  19. Artmoneyse

    Artmoneyse Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Artmoneyse
    до.jpg
    после.jpg
    1. Качаем например библиотеку версии 2.6, добавил на яндекс диск
    2. Берем классы:
    org.apache.logging.log4j.core.lookup.JndiLookup.class
    org.apache.logging.log4j.core.lookup.Interpolator.class
    3. Закидываем в server.jar
    4. Костыль, но работает!
     
  20. Agravaine

    Agravaine Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    Agravaine25

Поделиться этой страницей