こちらのMOD開発コラムでは、MOD開発講座 から派生した内容としてバージョンにあまり左右されないMOD開発に関する豆知識、技術や情報を紹介していきたいと思います。第一回として、昨今Modded MinecraftやPlugin界隈を騒然とさせた“Fractureiser” というマルウェアに関する情報を記載します。
本稿は執筆現在(2023/06/15)の情報をもとに記載されています。
また、本稿はこのマルウェア問題に関して情報を集約・翻訳しているtoliner氏の協力の下記載しています。
より一般的な内容はtoliner氏の記事 ( https://zenn.dev/toliner/articles/19d1b06da5db81 )をご覧ください。
Fractureiserとは
Minecraft Java Editionで利用することができるMOD/Plugin及びその開発者を標的とした悪質かつ強力なマルウェアの通称です。本マルウェアはjarファイルを媒介して感染し、被害を受けたPC内部のjarファイルを全て汚染することで拡散されるタイプのものです。一度感染した場合、PC内の全てのjarファイルやJava開発環境、Mavenリポジトリなどが汚染されているため、感染者の配布したMODなどが新たな感染源になるとされています。
このマルウェアの引き起こす問題に関しては参考文献を参照して頂きたいのですが、当webページをご覧の方々に特に気をつけて頂きたいのは、「感染者の配布したMODなどが新たな感染源になる」点です。実際、このマルウェアが露見したときにはCurseForge上の複数のMODやMODPackがこのマルウェアに汚染されており、また一部の問題のあるMODPackでは問題のあるMODが作者の知らない間に追加されており、複数のユーザーがFractureiserに汚染された状態に更新されているMODPackをダウンロードしてしまったようです。MOD開発のエコシステムを標的としたものであるため、MOD開発講座をご覧の方々は感染しないため、また感染を広げないために特に注意して頂く必要があるかと思います。
Fractureiserへの対策
該当マルウェアは現在のところ、Stage 0と呼ばれる実行ファイルをDLさせるサーバーに接続する段階において、サーバーが封鎖されたため機能していません。しかし、すでにこのマルウェアに感染しているユーザーがデータを盗まれていたり、不正な動作を行う土台にされている可能性があります。そこで、MODユーザー/開発者向けにいくつかのツールが配布されています。
DetectionTool (Overwolf)
CurseForge運営元のOverwolfによる検知ツールです。Linux及びWindowsで動作します。
詳細ページ: https://github.com/overwolf/detection-tool/releases
上記のページからdetection-tool-0-0-2-win.exe をダウンロードし、実行したところ私の環境では以下のように表示されました。
汚染されたファイルの痕跡が見つかった場合表示が変化するようです。
Fractureiser-Scanner (Serenibyss)
Serenibyss氏によるgradleプラグインです。MOD開発環境などに導入し、gradleタスクの形式でMOD開発環境及び依存先が汚染されていないかを自動で確認することができるものです。
詳細ページ: https://github.com/serenibyss/fractureiser-gradle-plugin
MOD開発環境のbuild.gradleに以下のように追記しReload All Gradle Projectsを行うことで導入ができます。
plugins {
id 'io.github.serenibyss.fractureiser-scanner' version '1.0.1'
}
導入が完了すると、gradleタスクとしてscanFractureiserが実行可能になります。
実行した後、問題がなければ以下のように出力されます。
問題があるファイルが検出された場合、Potential Fractureiser malware found in file:
から始まる行が出力されるようです。
今後起きうる問題への対策
MOD開発者やMOD開発を志す方々は、今後類似のマルウェアや更に危険なマルウェアが発生したときに備えて、以下のようなことに気をつけて下さい。
- MOD開発環境やMOD配布ページを常に確認する
自らの開発環境や配布ページはきちんと管理をし、他者による不審な更新やアクセスを受けないようにして下さい。 - MODやツールをDLする際は配布元のアカウントなどをチェックする
今回の事件は使い捨てアカウントから投稿されたと見られるCurseForge上のMODが第一次感染源と見られます。また、今回の事件とは関係ありませんが不正な二次配布サイトではマルウェアを仕込んだMODの転載版が多く確認できます。(匠Craftは一度中国系のプラットフォームで二次配布されていましたが、mcmod.infoファイルに記載したwebページがスパムページに書き換えられていたのを確認しています。しかも1.9対応版を騙っていました。許さん。) - 最新のセキュリティ動向に注視する
今回の騒動を受け、MODコミュニティではセキュアなMOD公開のためのシステム構築を行う動きが見られます。CurseForgeやModLinth, Forge開発メンバーのcpw氏などが活動しているようです。今後のForgeを始めとする前提MODにおいてもより安全に開発・公開ができるようなシステムができる可能性があるため、情報を更新していく必要があります。 - CIを用いたビルド/デプロイ
上記のシステム構築の動きの中で議論されているものの一つとして、CI (Continuous Integration) を用いた取り組みが挙げられています。これは開発中のプロジェクトへの変更を定期的にバージョン管理システム(VCSと省略される。Gitなどがこれに当たる。) にコミットし、コミットが行われるたびに自動でビルドとテストが実行されるサイクルシステムのことを指します。このプロセスは多人数開発でよく用いられますが、今回の問題に対してもユーザーのPCが汚染されていてもCIは汚染されないため、配布する新バージョンのMODは問題が起きないという利点から有用であると考えられています。この方法は現状に於いて個々のMOD開発者が対処できる唯一の具体的方策です。
実装は専門的であるため本稿では割愛しますが、ある程度知識のある開発者の方であれば導入されることをお勧めします。今後、Forge 及び今回の対策チームからMOD開発者向けのCI導入ガイドライン等が発表された場合、MOD開発講座にて解説する予定です。
最後に
最後になりますが、MODコミュニティは非商業的な繋がりであり、本来は相互の信頼の上で成立しています。しかし、そのコミュニティの中には今回の事件で代表されるような悪意を持った相手が存在してしまうのもまた事実です。MODを開発する方もダウンロードして遊ぶ方も、信頼と警戒心をそれぞれ持った上で利用していただけますと幸いです。
参考文献
Minecraft Mod/Pluginを対象としたマルウェア“fractureiser” : https://zenn.dev/toliner/articles/19d1b06da5db81
fractureiser public FAQ: https://gist.github.com/quat1024/91ade82af48955cb3894df388c4f1a98
Fractureiser Mitigation Meeting 2023-06-08: https://github.com/fractureiser-investigation/fractureiser/blob/main/docs/2023-06-08-meeting.md