錦です。
先日「Apache Log4j」の脆弱性についてお伝えしましたが、Minecraftで対応が始まりましたのでその話です。
Log4Shell
CVE-2021-44228というCVE番号が振られたJavaのライブラリ「Apache Log4j」に存在する重大な脆弱性。数日経過する間に「Log4Shell」という通称がつけられるようになっていました。
この脆弱性は、Log4jの出力ログここに悪意のある文字列を記録することだけで任意のリモートコードが実行できるようになるというものです。特に必要な設定もなく、任意のコードがリモートで実行できるので各種の脆弱性の評価は軒並み最悪になる見込みです。
すでに対応が始まっており、ライブラリ自身もバージョンアップしており、v2.15で修正されているそう(ただしライブラリに対応させる必要あり)。
ちなみに、Minecraftではチャットに特定の文字列が送信されるとコードが簡単に実行されます(サーバー側をシャットダウンさせたり、クライアント側にスパムや危険なコードを送ることができるそう)。
マイクラの対応
マイクラでの対応をバージョンごとに説明します。一部バージョンではForgeとバニラで対応が違いますのでご注意ください。
JE v1.18
v1.18については、v1.18.1がリリースされているのでそれを適用することによって修正されます。
JE v1.17
v1.17については、できる限りv1.18.1にアップデートすることが推奨されています。
もし、1.17を使い続ける必要がある場合、以下のコードをJVM引数に追加します。メモリ割り当て変えるところです。
-Dlog4j2.formatMsgNoLookups=true
ここからJVM引数の編集画面へアクセスできます。この・・・を押したあとに一番下のフォームがJVM引数になっています(書かれてるのでわかると思います)。追加する箇所については指定がありませんが、一番最後に記載するのがいいでしょうね・・・。
JE v1.12/1.13/1.14/1.15/1.16
サーバーが実行されている作業ディレクトリにこちらのページで配布されているXMLファイルをダウンロードし、次のコードをJVM引数に追加します。これも最後に追記したほうがいいでしょう。
-Dlog4j.configurationFile= log4j2_112-116.xml
JE v1.7/1.8/1.9/1.10/1.11
サーバーが実行されている作業ディレクトリにこちらのページで配布されているXMLファイルをダウンロードし、次のコードをJVM引数に追加します。これも最後に追記したほうがいいでしょう。
-Dlog4j.configurationFile= log4j2_17-111.xml
JE v1.6以前
影響は受けません。
【Mod】Minecraft Forge(クライアント)
Minecraft Forgeは、多くのModの前提Modとなっており、一つでもModを使ってプレイしている場合は確認しておくと良いでしょう。
Forgeもバージョンによって対応に違いがあります。
1.12から1.18
マイクラVer | Forge Ver |
---|---|
1.18 | 38.0.17 |
1.17.1 | 37.1.1 |
1.16.5 | 36.2.20 |
1.15.2 | 31.2.56 |
1.14.4 | 28.2.25 |
1.13.2 | 25.0.222 |
1.12.2 | 14.23.5.2857 |
1.11/1.11.2
ランチャーが開いている場合は終了します。
- .minecraft フォルダーを探します。Windowsの場合
%AppData%/.minecraft
に、Linuxの場合~/.minecraft/
となります。 versions
フォルダを開きます。- Forgeがインストールされているフォルダを開きます。最新のForgeがインストールされている場合
1.11.2-forge1.11.2-13.20.1.2588
となります。 - フォルダ内のJSONファイルを開き以下の部分を探します。
"logging": { },
これごと消します。このあとゲームを再起動することで変更が適用されます。
【Mod】Minecraft Forge(サーバー)
ついでModを使ってサーバーを構築している人に向けての内容です。こちらは非常に簡単。
こちらからXMLファイルをダウンロードし、サーバーのjarファイルの隣に置きます。終わり。本当にこれだけで、上記のJVM引数の変更も必要ありません。
別の方法
これ以外の方法として、Forgeをアップデートするという方法もあります。こちらも簡単で、Forgeのサイトから最新のForge(クライアントの表参照)をインストールですることで、対応できます。
Logging configurationの修正
オプションとは書いてるんですけど、なんか、上の方法と同じなやつがあるんですよね・・・。これは多分バージョンによって異なるんじゃないかなぁとは思うんですけど(一応GitHubの文章を読んで見ることをおすすめします)。
v1.7
こちらからXMLファイルをダウンロードし、サーバーのjarファイルの隣に置きます。
-Dlog4j.configurationFile=log4j2_server.xml
をサーバー起動スクリプトに追加しサーバーを再起動します。
v1.8〜1.11.2
v1.8〜1.11.xについては、こちらのXMLファイルをインストールして、サーバーフォルダーの.jarファイルの隣に配置します。以上です。
v 1.12〜1.12.2
v1.12〜v1.12.2では、こちらのXMLファイルをインストールして、サーバーフォルダに配置します。
そして、run.bat/run.shファイルまたは、サーバーを起動するのに使用するコマンドに-Dlog4j.configurationFile=log4j2_server.xml
を追加します。このコードは、-jar
よりも前に配置する必要があるそうなのでjava -Dlog4j.configurationFile=log4j2_server.xml -jar forge-version.jar
のように記述する必要があるそうです。
その後、サーバーを再起動します。
v1.13〜1.16
v1.13〜v1.16では、こちらのXMLファイルをインストールして、サーバーフォルダに配置します。
そして、run.bat/run.shファイルまたは、サーバーを起動するのに使用するコマンドに-Dlog4j.configurationFile=log4j2_server.xml
を追加します。このコードは、-jar
よりも前に配置する必要があるそうなのでjava -Dlog4j.configurationFile=log4j2_server.xml -jar forge-version.jar
のように記述する必要があるそうです。
その後、サーバーを再起動します。
v1.16.4
v1.16.4では、こちらのXMLファイルをインストールして、サーバーフォルダに配置します。
そして、run.bat/run.shファイルまたは、サーバーを起動するのに使用するコマンドに-Dlog4j.configurationFile=log4j2_server.xml
を追加します。このコードは、-jar
よりも前に配置する必要があるそうなのでjava -Dlog4j.configurationFile=log4j2_server.xml -jar forge-version.jar
のように記述する必要があるそうです。
その後、サーバーを再起動します。
v1.17以降
v1.17以降では、こちらのXMLファイルをインストールして、サーバーフォルダに配置します。
その後、user_jvm_args.txt
ファイルに-Dlog4j.configurationFile=log4j2_server.xml
を追加するだけです。
そして、サーバーを再起動します。
Spigot
Spigotについてですが、先週の木曜日(現地時間)にセキュリティリリースが定例外でリリースされています。公式ページのガイダンスを御覧ください。
iOS/Android/Switch/Xbox/Win10(BE)
質問があったのでお答えしますが、BEとJEはベースが異なり、今回の脆弱性はJavaというJEのみがベースにしているシステムにバグがあるので、C++で構築されているBEと呼ばれる無印Minecraftには一切影響がありません。逆に、JEが動く環境はWindows/Mac問わず影響を受けます。