====== Log4Shell Vulnerability ======
Log4Shell ([[https://www.randori.com/blog/cve-2021-44228/|CVE-2021-44228]] and [[https://www.whitesourcesoftware.com/resources/blog/log4j-vulnerability-cve-2021-45046/|CVE-2021-45046]]) is a remote-code-execution (RCE) vulnerability, meaning it can force your computer to run any arbitrary Java code.
Anyone can exploit this vulnerability by simply typing a special message into the Minecraft chat.
Log4Shell is caused by certain versions of the Log4j library, which are included in all Minecraft versions from 1.7 (released in 2014) to 1.18 (released in 2021). Both Minecraft clients and Minecraft servers can be vulnerable to this exploit.
===== Why care? =====
If you are playing on a Minecraft server and your Minecraft installation is vulnerable (even if the server is patched), then another player could, for example, install a virus on your computer by simply sending you a chat message.((They could also [[https://twitter.com/gegy1000/status/1469714451716882434|install DOOM]] instead, but most attackers would probably choose malware.))
===== Affected versions =====
==== Wurst Client ====
^MC Version^Status^Patched by^How to fix^
|Wurst MC 1.19+|**Not affected**| |Relax, you're good. =)|
|Wurst MC 1.18.1|**Not affected**| |Relax, you're good. =)|
|Wurst MC 1.18|**Patched**|Fabric Loader 0.12.10, [[update:Wurst 7.19]]|Update Wurst or reinstall Fabric.|
|Wurst MC 1.17.1|**Patched**|Fabric Loader 0.12.10, [[update:Wurst 7.19]]|Update Wurst or reinstall Fabric.|
|Wurst MC 1.17|**Patched**|Fabric Loader 0.12.10|Reinstall Fabric.|
|Wurst MC 1.16.x|**Patched**|Fabric Loader 0.12.10|Reinstall Fabric.|
|Wurst MC 1.15.x|**Patched**|Fabric Loader 0.12.10|Reinstall Fabric.|
|Wurst MC 1.14.x|**Patched**|Fabric Loader 0.12.10|Reinstall Fabric.|
|Wurst MC 1.12.x|**Patched**|[[update:Wurst 6.35.2]]|Update Wurst.|
|ForgeWurst MC 1.12.2|**Patched**|Forge 1.12.2-14.23.5.2856|Reinstall Forge.|
|Wurst MC 1.11.x|Vulnerable| |Do not use in multiplayer.|
|ForgeWurst MC 1.11.2|Vulnerable| |Do not use in multiplayer.|
|Wurst MC 1.10.x|Vulnerable| |Do not use in multiplayer.|
|Wurst MC 1.9.x|Vulnerable| |Do not use in multiplayer.|
|Wurst MC 1.8.x|**Patched**|[[update:Wurst 6.35.2]]|Update Wurst.|
|Wurst MC 1.7.x|Vulnerable| |Do not use in multiplayer.|
**Note:** [[update:Wurst 7.19]] and later versions won't even launch when used with a Fabric Loader version older than v0.12.12. This ensures that they cannot accidentally be installed in such a way that they would be vulnerable.
==== Wolfram Client ====
^MC Version^Status^Patched by^How to fix^
|Wolfram MC 1.12.x|**Patched**|[[https://www.wolframclient.net/updates/wolfram-9-8-1/|Wolfram 9.8.1]]|Update Wolfram.|
|Wolfram MC 1.11.x|**Patched**|[[https://www.wolframclient.net/updates/wolfram-9-8-1/|Wolfram 9.8.1]]|Update Wolfram.|
|Wolfram MC 1.10.x|**Patched**|[[https://www.wolframclient.net/updates/wolfram-9-8-1/|Wolfram 9.8.1]]|Update Wolfram.|
|Wolfram MC 1.9.4|**Patched**|[[https://www.wolframclient.net/updates/wolfram-9-8-1/|Wolfram 9.8.1]]|Update Wolfram.|
|Wolfram MC 1.8.x|**Patched**|[[https://www.wolframclient.net/updates/wolfram-9-8-1/|Wolfram 9.8.1]]|Update Wolfram.|
==== Mo Glass ====
^MC Version^Status^Patched by^How to fix^
|Mo Glass MC 1.19+|**Not affected**| |Relax, you're good. =)|
|Mo Glass MC 1.18.1|**Not affected**| |Relax, you're good. =)|
|Mo Glass MC 1.18|**Patched**|Fabric Loader 0.12.10, [[https://www.curseforge.com/minecraft/mc-mods/mo-glass/files/3568214|Mo Glass 1.6]]|Update Mo Glass or reinstall Fabric.|
|Mo Glass MC 1.17.1|**Patched**|Fabric Loader 0.12.10, [[https://www.curseforge.com/minecraft/mc-mods/mo-glass/files/3568219|Mo Glass 1.6]]|Update Mo Glass or reinstall Fabric.|
|Mo Glass MC 1.17|**Patched**|Fabric Loader 0.12.10|Reinstall Fabric.|
|Mo Glass MC 1.16.x|**Patched**|Fabric Loader 0.12.10|Reinstall Fabric.|
|Mo Glass MC 1.15.x|**Patched**|Fabric Loader 0.12.10|Reinstall Fabric.|
|Mo Glass MC 1.14.x|**Patched**|Fabric Loader 0.12.10|Reinstall Fabric.|
**Note:** Mo Glass 1.6 and later versions won't even launch when used with a Fabric Loader version older than v0.12.10. This ensures that they cannot accidentally be installed in such a way that they would be vulnerable.
==== WI Zoom ====
^MC Version^Status^Patched by^How to fix^
|WI Zoom MC 1.19+|**Not affected**| |Relax, you're good. =)|
|WI Zoom MC 1.18.1|**Not affected**| |Relax, you're good. =)|
|WI Zoom MC 1.18|**Patched**|Fabric Loader 0.12.10|Reinstall Fabric.|
|WI Zoom MC 1.17.x|**Patched**|Fabric Loader 0.12.10|Reinstall Fabric.|
|WI Zoom MC 1.16.x|**Patched**|Fabric Loader 0.12.10|Reinstall Fabric.|
|WI Zoom MC 1.15.x|**Patched**|Fabric Loader 0.12.10|Reinstall Fabric.|
|WI Zoom MC 1.14.x|**Patched**|Fabric Loader 0.12.10|Reinstall Fabric.|
|WI Zoom MC 1.12.2|**Patched**|Forge 1.12.2-14.23.5.2856|Reinstall Forge.|
===== How to check your Wurst version =====
{{:wurstlogo.webp|Wurst v7.19 MC1.18.1}}
Your Wurst version is displayed in the top left corner of the screen.
===== How to check your Fabric Loader version =====
**Note:** Fabric Loader 0.12.12 further improves the Log4Shell patch to cover cases published by CVE-2021-45046. This doesn't affect Minecraft by default, but it is theoretically possible that a mod would enable this issue.
==== Official Launcher ====
Click on the "Installations" tab and check what it says under your Fabric installation(s):
{{:log4shell-loader-version-official-launcher.webp|Checking the Fabric Loader version in the official Minecraft launcher}}
==== MultiMC ====
**Note:** MultiMC has released their own patch for the Log4Shell exploit.((https://multimc.org/posts/log4j-remote-execution.html)) If you are using MultiMC, you might be fine even with a vulnerable version, but you should [[#how_to_test_if_you_are_affected|do a test in singleplayer]] to be sure.
Click on "Edit Instance" and check what it says next to "Fabric Loader":
{{:log4shell-loader-version-multimc.webp|Checking the Fabric Loader version in MultiMC}}
===== How to test if you are affected =====
Open the Minecraft chat and enter the following message:
${jndi:ldap://127.0.0.1/a}
Then check your log file (default: ''%appdata%/.minecraft/logs/latest.log'').
If your Minecraft installation is **vulnerable**, you will see a long error like this in the logs:
[17:32:25] [Client thread/INFO]: [CHAT] ${jndi:ldap://127.0.0.1/a}
2021-12-11 17:32:29,077 Client thread WARN Error looking up JNDI resource [ldap://127.0.0.1/a]. javax.naming.CommunicationException: 127.0.0.1:389 [Root exception is java.net.ConnectException: Connection refused: connect]
at com.sun.jndi.ldap.Connection.(Connection.java:243)
at com.sun.jndi.ldap.LdapClient.(LdapClient.java:137)
at com.sun.jndi.ldap.LdapClient.getInstance(LdapClient.java:1615)
at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2849)
at com.sun.jndi.ldap.LdapCtx.(LdapCtx.java:347)
at com.sun.jndi.url.ldap.ldapURLContextFactory.getUsingURLIgnoreRootDN(ldapURLContextFactory.java:60)
at com.sun.jndi.url.ldap.ldapURLContext.getRootURLContext(ldapURLContext.java:61)
at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:202)
at com.sun.jndi.url.ldap.ldapURLContext.lookup(ldapURLContext.java:94)
at javax.naming.InitialContext.lookup(InitialContext.java:417)
at org.apache.logging.log4j.core.net.JndiManager.lookup(JndiManager.java:129)
at org.apache.logging.log4j.core.lookup.JndiLookup.lookup(JndiLookup.java:54)
at org.apache.logging.log4j.core.lookup.Interpolator.lookup(Interpolator.java:183)
at org.apache.logging.log4j.core.lookup.StrSubstitutor.resolveVariable(StrSubstitutor.java:1054)
at org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute(StrSubstitutor.java:976)
at org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute(StrSubstitutor.java:872)
at org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(StrSubstitutor.java:427)
at org.apache.logging.log4j.core.pattern.MessagePatternConverter.format(MessagePatternConverter.java:127)
at org.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:38)
at org.apache.logging.log4j.core.layout.PatternLayout$PatternSerializer.toSerializable(PatternLayout.java:333)
at org.apache.logging.log4j.core.layout.PatternLayout.toText(PatternLayout.java:232)
at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:217)
at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:57)
at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:177)
at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:170)
at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:161)
at org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender.append(RollingRandomAccessFileAppender.java:218)
at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:448)
at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:433)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:403)
at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63)
at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:146)
at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2091)
at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2005)
at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1876)
at org.apache.logging.log4j.spi.AbstractLogger.info(AbstractLogger.java:1421)
at net.minecraft.client.gui.GuiNewChat.printChatMessageWithOptionalDeletion(GuiNewChat.java:157)
at net.minecraft.client.gui.GuiNewChat.printChatMessage(GuiNewChat.java:140)
at net.minecraft.client.gui.chat.NormalChatListener.func_192576_a(NormalChatListener.java:18)
at net.minecraft.client.gui.GuiIngame.func_191742_a(GuiIngame.java:1319)
at net.minecraft.client.network.NetHandlerPlayClient.handleChat(NetHandlerPlayClient.java:813)
at net.minecraft.network.play.server.SPacketChat.processPacket(SPacketChat.java:53)
at net.minecraft.network.play.server.SPacketChat.processPacket(SPacketChat.java:1)
at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at net.minecraft.util.Util.runTask(Util.java:47)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1133)
at net.minecraft.client.Minecraft.run(Minecraft.java:428)
at net.minecraft.client.main.Main.main(Main.java:115)
at Start.main(Start.java:11)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:607)
at java.net.Socket.connect(Socket.java:556)
at java.net.Socket.(Socket.java:452)
at java.net.Socket.(Socket.java:229)
at com.sun.jndi.ldap.Connection.createSocket(Connection.java:380)
at com.sun.jndi.ldap.Connection.(Connection.java:220)
... 55 more
If your Minecraft installation is **not vulnerable**, you will simply see the chat message in the logs:
[17:37:50] [Server thread/INFO]: ${jndi:ldap://127.0.0.1/a}
[17:37:50] [Client thread/INFO]: [CHAT] ${jndi:ldap://127.0.0.1/a}
{{tag>security}}