Workshopマップのフォルダを開いても、実行ファイルは1つも見つかりません。あるのはUE5の標準的なアセットだけです。それでもマッチが始まった瞬間、ドキュメントフォルダにバッチファイルが書き込まれていました。悪意はファイルとしてではなく、ゲームエンジンが正規に提供する機能の並びとして持ち込まれていたのです。
2026年7月23日、フェイントがMediumで解析記事を公開した。MECCHA CHAMELEON向けのSteam Workshopマップ「Laser Tag Neon」(アイテムID 3765145606、appid 4704690)に、マルウェアドロッパーが含まれていた。
Unreal Engine 5のBlueprint「BP_AmbientController_C」がReceiveBeginPlayを通じて自動実行され、ユーザーのドキュメントフォルダに210バイトのs.batを書き込む。同ファイルはPowerShellを非表示で起動し、31.57.34.228から第2段階のsteamb.batを取得して実行する。
7月25日、同マップは削除され、開発チームはバージョン3.1.0で脆弱性を修正した。フェイントは、後に回収した第2段階がRATを導入するものだったと報告している。別の悪意あるマップ「Chroma Grid Arena」も確認された。
From:
Workshop map for MECCHA CHAMELEON is a malware dropper (full breakdown)
【編集部解説】
一部の報道は、この件を「7月23日に研究者フェイントが発見した」という形で伝えています。ただし、今回の攻撃チェーンの基盤となったLaunchURLの危険性と、Workshopマップを介したリモートコード実行の問題は、その1か月以上前に公表されていました。開発チームの最初のパッチによって当時の攻撃チェーンはいったん断たれましたが、LaunchURL自体の危険な挙動は残されたままでした。7月の攻撃は、そこへ新たな任意ファイル書き込み経路を組み合わせたものです。
まず、6月に何が起きていたかから見ていきます。
2026年6月21日、セキュリティ研究者のケイル・クグラーが「MECCHA CHAMELEONにおける2クリックのリモートコード実行」と題したブログ記事を公開しました。狙われたのは、UE5のBlueprintに用意されたLaunchURLというノードです。名前の通り、URLをブラウザで開くための、一見すると無害な機能です。
クグラーがゲームのシッピングバイナリをGhidraで解析したところ、この関数は最終的にWindowsのShellExecuteWを「open」動詞で呼び出していました。Microsoftのドキュメントが示すとおり、この動詞はWebページを開くだけの命令ではありません。指定されたファイルを開き、それが実行可能ファイルであればプロセスを起動します。ファイルをダブルクリックした操作に相当します。
そして決定的だったのが、もう一方の穴です。Valveの開発者向けドキュメントは、投稿ツールはゲームクライアントが読み込むファイル形式「だけ」を受け付けるべきだと明記しています。つまり何をマウントさせるかを制限するのは、ゲーム開発者側の責務だという設計思想です。ところが当時のMECCHA CHAMELEONは、アップロードされるファイル形式に制限をかけていませんでした。クグラーが実際に.batファイルをマップのファイルと一緒にアップロードし、実行できたと報告しています。
Workshopアイテムの保存先パスは、AppIDとWorkshop IDから予測可能です。クグラーは無害なマップを1本アップロードしてアイテムIDを確保し、そのフォルダにバッチファイルを置き、BeginPlayからLaunchURLでそのパスを叩く手法を実証しました。ゲーム内のロビーから購読を促されるフローでは、購読後すぐにマップが読み込まれてBeginPlayが発火します。そのため彼の検証では、購読からコマンド実行までがほぼ間を置かずに起きました。クリック2回です。
ここからが、今回の事件の本質です。クグラーの報告を受け、開発チームはパッチを当てました。彼の記述によれば、任意のファイルをディスクにマウントすることをやめ、ホワイトリストに登録された拡張子のファイルのみを受け付ける、という修正です。
これで当時の攻撃チェーンは断たれました。バッチファイルを持ち込めなければ、LaunchURLに渡すものがないからです。ただし、LaunchURLが任意のパスを起動し得るという挙動そのものは残っていました。クグラーは初回の推奨事項にこの点も含めていたと述べています。
そして7月、実際に稼働した攻撃は、残された半分に新しい入口をつなぎました。ファイルを「持ち込む」のをやめ、ゲーム自身に「書かせた」のです。
フェイントが解析したBlueprintは、ToFileというJSON書き出し関数を使っていました。書けるのはJSONだけ——という制約を、攻撃者はJSONとバッチの両方として同時に成立する文字列を用意することで回避します。妥当なJSONオブジェクトのキー部分に、バッチのコマンド構文をまるごと埋め込む。JSONとして書き出されたファイルは、拡張子を.batにすればバッチとして実行できる。ここに、拡張子ホワイトリストの出番はありません。これは6月21日の公開記事では示されておらず、7月の実攻撃で新たに確認された経路でした。
クグラー自身も7月25日に追記し、この手法が、自身の報告を受けて開発チームが実施した最初の修正を迂回するものだったこと、そして再現に成功して開発チームに連絡し、最新パッチのリリースを手助けしたことを明かしています。
編集部としては、ここを今回の最大の教訓と捉えています。攻撃面を「入口」で塞ぐ発想が、なぜこの経路には効かなかったのか。持ち込めるファイルを制限する対策は、それ自体が攻撃面を縮小する有効な手段です。しかしゲーム内のスクリプトが任意の場所へファイルを書き出して実行できる限り、今回の経路を防ぐには不十分でした。
クグラーは、UE5のLaunchURLがHTTP/HTTPS以外を開けないよう、Epic Gamesにデフォルト方針の変更を働きかけたと述べています。ただし、彼の記事執筆時点で返答は得られていません。Epic側からの公的な言及も、現時点では確認できていません。
これはMECCHA CHAMELEON固有の話にとどまらない可能性があります。公開されるBlueprintノードの範囲、アセット検証、サンドボックスの有無はタイトルごとに異なり、実際に攻撃が成立するかはゲーム側のUGC実装にも左右されます。それでも、ユーザー製Blueprintを制限なく読み込み、LaunchURLのような機能を開いたままにしている設計であれば、同種のリスクを抱えることになります。クグラーの結論は明快です。UGCに対応するなら、それを信頼できないコードとして扱え。Workshopアップロードのアセット形式を許可リスト方式にし、Blueprintの利用を制限せよ——安全側をデフォルトに、と。
編集部の解釈を述べます。ゲームエンジンにおけるビジュアルスクリプティングは、プログラミングの敷居を下げる民主化の技術として広まってきました。今回、悪意あるロジックは実行ファイルとしてではなく、エンジンが正規に提供するBlueprintのノードチェーンとして実装されていました。創作のために開かれた機能が、そのまま攻撃の実装手段になり得たということです。
規模の話をします。公式発表によれば、MECCHA CHAMELEONは6月下旬までに700万本を売り上げました。開発者らによれば、広告費はゼロです。6月26日には1000万本を突破しています。リリースからわずか16日でした。SteamDBの記録では、同時接続数は日本時間6月22日(UTC 6月21日)に34万534人を記録しています。そして7月上旬、公式は1500万本の到達を発表しました。
クグラーはさらに、ユーザー製の「Minecraft」マップだけで200万件の購読があったと、当時の表示値を記録しています。そしてWorkshopアイテムは自動更新される。信頼を築いた既存のマップが、一夜にして購読者全員にペイロードを配ることも可能だ、と彼は警告していました。
一方、これを作ったのは2人です。日本のインディー開発者レモリオン(lemorion_1224)とハガネイロによる共同制作で、レモリオンがマップとアセットの制作を、ハガネイロがシステム面を担当しました。Steamのストア表記上はデベロッパー・パブリッシャーともにlemorion_1224名義です。Windows版のリリースは日本時間で2026年6月10日、実開発期間は約2か月でした。米国向けの通常価格は5.99ドルです。
1500万本という販売規模と、この開発体制の落差こそが今回の事件の背景にあります。クグラー自身がこう書いています。開発チームに連絡を取るために複数のDiscordサーバーを渡り歩き、Twitterでコールドメッセージを送り、送信内容をすべて日本語に自動翻訳し、届いたメッセージが読まれることを祈った、と。最初のパッチでLaunchURLの設定不備が同時に直されなかった理由については、彼は言語の壁と膨大な作業量が重なったのだろうと推測を述べるにとどめています。
この事件は、遠い海外の出来事ではありません。世界的なヒット作を生んだ日本の2人組と、英語圏のセキュリティ研究者との間に、確かに距離があったという構図を含んでいます。
7月25日に公開されたアップデート3.1.0の告知を見てみましょう。公式コラボマップ「Garten of Banban」の追加、UI以外の操作のコントローラー対応、影品質の「中」設定の追加、コントローラー描画時のブラシ速度がFPSに依存する不具合の修正、GPU性能の改善、3Dスポイトツールのサンプリング位置のずれの修正——そして最後に一行、「MODマップのセキュリティパッチ」。
悪意あるファイルの実行経路を塞いだ修正が、コラボマップ追加と同じ列に並んでいます。この配置が何を意味するのかを断定する材料はありません。ただ編集部は、通常の更新告知と同じ書式のまま緊急のセキュリティ修正が処理されたこと自体に、この数日間の慌ただしさが表れていると読みます。
ハガネイロはX上で、3.1.0で該当の脆弱性は修正済みであり、適用後は問題ないと表明しました。あわせて、影響を受けたマップについてはアップデートの前後を問わずマルウェアを無効化済みであることも確認したとしています。続く3.2.0の告知でも、前バージョンで解決済みであることが改めて説明され、Steam Supportにも確認したとされています。ただしこれらは3.1.0適用後についての開発者の声明であり、将来の未知の手法まで保証するものではありません。
レモリオンはXで、システムエンジニアのPCが、まさにこの脆弱性の修正作業中にマルウェアに感染したと明かしました。攻撃者はそのエンジニアのDiscordの二要素認証を突破し、サーバー権限を書き換え、スタッフ全員をBANしています。乗っ取られたのは、二次報道によれば10万人近くが参加する公式Discordサーバーでした。なお、この侵害経路の説明は開発チーム側のものであり、Discordや第三者によるフォレンジック報告は公表されていません。
攻撃者はサーバーに攻撃的なメッセージと偽の告知を投下しました。開発チームはDiscordへの連絡を経て、7月26日に公式サーバーの復旧と侵入者のBANを告知しています。
ここで生まれた二次被害にも触れておきます。乗っ取り犯は「最新アップデートにはRATが仕込まれている」と偽の告知を出しました。開発チームはこれを明確に否定しています。セキュリティ研究者のエリック・パーカーも、静的解析とprocmonによる実行時観察の両方でゲーム本体を検証したと述べ、ゲームにRATは存在せず注目を集めるための虚偽だと結論づけたことを公表しました。
インシデント対応の最中に、その対応者を狙って第二の侵害が起き、さらに乗っ取ったチャンネルから偽情報が流される。これは今後のインシデント対応の教科書に載るべき事例です。
フェイントは、このマップがWorkshopのレビューを通過していたと記しています。ただし、ここでいうレビューがValveによるセキュリティ監査を意味するのかは確認できていません。Workshopには、キュレーションを経ずに購読可能となる方式も用意されています。
では、なぜ止まらなかったのか。フェイントが挙げる理由は単純です。フォルダ直下には、独立した実行ファイル、DLL、バッチファイル、スクリプトといった明白な不審ファイルがありませんでした。あるのはUE5の標準的なアセットコンテナと画像、メタデータだけ。ファイルヘッダを調べても、MZ/PE、ELF、ZIPのいずれのヘッダも存在しませんでした。悪意はコンテナの内部、Oodleで圧縮されたBlueprintのバイトコードの中にあったのです。フェイント自身も、これが通過した理由「だろう」という推測の形で書いています。
これは同種の攻撃の中でも、性質が異なります。Kasperskyは6月、数十件の悪意ある「アプリケーション壁紙」がSteam Workshopにアップロードされていたことを公表しました。ただしあちらは、実行可能な壁紙パッケージを走らせるというアプリ本来の正規機能を悪用したものです。MECCHA CHAMELEONの件は、Workshopマップの読み込み処理そのものの脆弱性を突いたという点で異なります。
技術的な話が続きましたが、実務上もっとも重要なのは次の一点です。マルウェアが実行されたのは、マップがマッチ用に読み込まれたときです。購読後にマップが一度も読み込まれていなければ、確認された実行チェーンは発動しません。ただしゲーム内のロビーから購読するフローでは、購読の直後に読み込みが始まり得ます。分岐点は購読そのものではなく、読み込みが起きたかどうかにあります。
Workshopのページを見ただけなら、リスティングの閲覧はマップの読み込みとは別物です。Workshopページ上で購読しただけで、ゲーム内で当該マップが一度も読み込まれていないと確認できる場合、基本の対応は購読解除とローカルフォルダの削除になります。念のためマルウェアスキャンを行うことも合理的です。
一方、Windows上でLaser Tag Neonを読み込んだ、あるいは一瞬コマンドウィンドウが出るのを見たのであれば、そのPCは曝露したものとして扱ってください。すでに書き込まれたファイルは、購読を解除しても消えません。Workshopのフォルダ外に作られているためです。なお、s.batをダブルクリックで開いてはいけません。それは実行を意味します。
実証された攻撃チェーンはWindowsのパス、バッチファイル、PowerShellに依存しています。macOS上で同じチェーンがネイティブに動作することは示されていません。ただしこれは、今回確認された経路の範囲についての話です。
最後に、確定していない部分を整理しておきます。第2段階steamb.batの正体について、フェイントは回収後の解析でRAT(リモートアクセス型トロイの木馬)を導入するものだったと報告し、記事を更新しました。ただし検体や詳細なIOCは十分に公開されておらず、第三者による再検証性は限定的です。コミュニティ側の個別の被害申告を、フォレンジック証拠なしにこのマルウェアと結びつけることもできません。
また、フェイントが調べた実機では第2段階が404で取得できなかったため、その端末ではインフォスティーラーともRATとも分類できるものが存在しませんでした。別のプレイヤーが別のタイミングで同じサーバーに到達していた可能性はありますが、その端末の証拠なしにデータ窃取を主張するのは憶測になります。
そして、被害の規模。Gridinsoftが7月24日に確認した時点で、Laser Tag Neonの公開リスティングには756人の購読者が表示されていました。これは購読者数であって、実際にマップを読み込んだ人数でも被害者数でもありません。Laser Tag Neonの削除後に現れた後続マップがどれだけのユーザーに届いたのかも、同様に分かっていません。
UGCは、プラットフォームが用意した「創造の場」です。Workshopもマップエディタも、プレイヤーを消費者から創作者へと押し上げる装置として設計されました。その理念自体は、私たちが掲げるTech for Human Evolutionと同じ方向を向いています。
しかし今回、その装置は任意コード実行の配送網として機能しました。ロビーで促されるまま購読し、マッチが始まる。その動線の中に、悪意あるコードの実行が埋め込まれていたのです。
そして重要なのは、半分だけ塞がれた攻撃チェーンに、別の入口がつながったという事実です。6月に持ち込みの経路が断たれ、7月に書き込みの経路が見つかった。攻撃面とは一点の穴ではなく面であり、一度の修正で閉じ切れるものではないということを、この2か月は示しています。
同時に記録しておきたいのが、この事件を止めた回路です。友人が「一瞬コマンドプロンプトが出た」と口にした違和感から始まり、個人の研究者が解析し、6月に脆弱性を公表していた別の研究者が新経路の再現を確認して開発チームに連絡し、記事公開から約40時間でパッチが出ました。ゲームにRATが入っているという虚偽の主張が流れたときも、また別の研究者が実測でそれを打ち消しています。
創造の民主化がもたらすリスクに対して、私たちがいま持っている最も確実な防御は、専門知を持つ個人の観察力と、それを共有する回路である。この構図こそが、記録に残す価値のあるものだと編集部は考えます。
【関連記事】
AURサプライチェーン攻撃「Atomic Arch」|信頼を”継承”する新手口とArchユーザーが今すべきこと
信頼された配布物が自動更新の仕組みに乗って悪意を運ぶ構造を扱う。Workshopアイテムが抱えるリスクと同型の事例である。
Chrome/Edge拡張機能(ModHeader)に閲覧履歴の暗号化収集コード─約160万インストール、Googleが削除
公式ストアの審査を通過した拡張機能に、閲覧履歴を収集するコードが混入していた事例。規模と経路の両面で本件と重なる。
JetBrainsで15個の悪性プラグインがAPIキーを窃取、合計約7万ダウンロード
開発者向けマーケットプレイスを経由した悪性プラグインの配布事例。UGCの入口が攻撃面になる構図を別の角度から確認できる。
Microsoft Teams悪用の偽ITサポート通話が相次ぐ、EtherRATマルウェアで企業ネットワークが標的に
RATが実際に何をもたらすのかを扱った記事。今回の第2段階で導入されたものの深刻度を理解する助けになる。
【編集部後記】
Steamのインストール先にあるsteamapps\workshop\content\4704690\を開くと、購読したWorkshopアイテムのIDごとにフォルダが並びます。問題のマップだった3765145606には、.pak、.ucas、.utocに加えてAssetRegistry.bin、Preview.png、Sample.vdfがありました。独立したEXEもDLLもBATもありません。目視では何も出てこない、という今回の前提がそこで確認できます。ケイル・クグラーは、UE5のLaunchURLがHTTP/HTTPS以外を開かないよう初期設定を変えるべきだとEpic Gamesに求め、返答を得ていません。この線引きは、エンジン側とタイトル側のどちらが負うべきものなのでしょうか。
【用語解説】
Steam Workshop
Steam上でユーザーが作成したMOD、マップ、アイテムなどを公開・共有するための仕組みである。プレイヤーは「購読(サブスクライブ)」することで自動的にコンテンツを入手し、以後は自動更新される。この自動更新の性質が、今回のリスク評価の前提となっている。
Unreal Engine 5(UE5)
Epic Gamesが開発するゲームエンジン。MECCHA CHAMELEONもこれで作られている。今回の事件で悪用されたBlueprintやアセットコンテナ形式は、いずれもUE5の標準機能である。
Blueprint
UE5が備えるノードベースのゲームプレイスクリプティング機能である。ノードを線で繋ぐ操作でロジックを組めるため、テキストのコードを書かずにゲームの挙動を実装できる。プログラミングの敷居を下げる民主化の技術であると同時に、今回は攻撃コードの実装形式にもなった。
BeginPlay/ReceiveBeginPlay
Blueprintに用意されたイベントの一つで、そのアクターが配置されたマップが読み込まれた瞬間に自動的に発火する。扉のアニメーションや環境エフェクトの起動に使われる正規の機構だが、ユーザーの操作を一切必要とせずコードが走ることを意味する。今回の攻撃はこの自動性を利用した。
LaunchURL
Blueprintから呼び出せるノードで、本来はURLを既定のブラウザで開くための機能である。内部でWindowsのShellExecuteWを「open」動詞で呼んでいたため、URL以外のパスを渡すとファイルの実行にまで踏み込めてしまった。
ShellExecuteW
Windowsが提供するAPIで、指定したファイルやオブジェクトに対して動詞(verb)を実行する。「open」動詞は指定されたファイルやフォルダを開き、対象が実行可能ファイルであればプロセスを起動する。ファイルをダブルクリックした操作に相当する。
PowerShell/実行ポリシー
PowerShellはWindows標準のスクリプト実行環境である。実行ポリシーは、署名のないスクリプトの実行を制限する設定を指す。Microsoftはこれをセキュリティシステムではないと明記しており、現セッションのみに適用するプロセススコープの指定も正規に用意されている。今回の攻撃はこの正規オプションを使った。
ToFile
Blueprintから呼べる、JSONデータをファイルに書き出す関数。書けるのはJSONだけという制約があったが、ポリグロットによって迂回された。この経路は6月21日の公開記事では示されておらず、7月に新たに確認された。
.pak/.ucas/.utoc
UE5がゲームアセットをまとめるための標準的なコンテナ形式である。今回のマップフォルダには、これらとメタデータ、プレビュー画像しか置かれておらず、独立した実行ファイルは存在しなかった。
Oodle
ゲーム業界で広く使われるデータ圧縮技術。UE5のアセットコンテナはこれで圧縮されていることが多く、今回の検体も131ブロック中130ブロックがOodleで圧縮されていた。展開しなければ中身は読めないため、単純なファイル確認では内部のBlueprintまで到達しない。
UGC(ユーザー生成コンテンツ)
プラットフォーム利用者自身が作り、公開するコンテンツの総称。Workshopのマップはその典型である。プレイヤーを消費者から創作者へ引き上げる仕組みだが、同時に外部から持ち込まれる信頼できないデータの入口にもなる。
procmon(Process Monitor)
Microsoftが提供するWindows向けの解析ツール。ファイルシステム、レジストリ、プロセスおよびスレッドの活動をリアルタイムに記録する。ゲーム本体の検証に用いられた。
フォレンジック
インシデント発生後に、端末やログに残された痕跡から何が起きたかを立証する調査手法。今回、個々の被害申告をマルウェアと結びつけるにはこれが必要だとされている。
Ghidra
コンパイル済みのプログラムを逆アセンブル・逆コンパイルし、内部処理を読み解くためのリバースエンジニアリングツール。今回、LaunchURLが内部で何を呼んでいるかの特定に使われた。
【参考リンク】
MECCHA CHAMELEON(Steamストアページ)(外部)
レモリオンとハガネイロが手がけたかくれんぼゲームの公式ストアページ。地域ごとの販売価格とアップデート状況を確認できる。
MECCHA CHAMELEON 公式ニュース一覧(外部)
3.1.0以降の更新告知、Discord侵害と復旧の報告、安全性に関する声明が時系列で並ぶ一次情報の窓口。
MECCHA CHAMELEON アップデート3.1.0(外部)
2026年7月25日公開の更新告知。コラボマップ追加や描画改善と並び、末尾に「MODマップのセキュリティパッチ」と一行だけ記されている。
MECCHA CHAMELEON 1500万本達成の公式告知(外部)
7月上旬に公開された販売本数の到達告知。本文で扱った販売規模の数値にあたる一次情報である。
Steamworks ドキュメント:Steam Workshop(外部)
Valveが開発者向けに公開するWorkshopの実装ガイド。投稿ツールはゲームが読み込む形式だけを受け付けるべきだと明記されている。
Blueprints Visual Scripting(Epic Games公式ドキュメント)(外部)
Unreal EngineのBlueprintに関する公式リファレンス。今回悪用されたイベントやノードの正規の仕様を確認できる。
ShellExecuteW function(Microsoft Learn)(外部)
LaunchURLが内部で呼んでいたWindows APIの公式仕様。open動詞が何を起動し得るかを一次資料で確認できる。
about_Execution_Policies(Microsoft Learn)(外部)
PowerShell実行ポリシーの公式解説。これがセキュリティシステムではないと明記されており、本件の理解に不可欠。
Process Monitor(Microsoft Sysinternals)(外部)
検証に用いられた解析ツールの公式配布ページ。記録対象となる活動の範囲が明記されている。
Kaspersky:Steamユーザーを狙った壁紙経由のマルウェアキャンペーン(外部)
Wallpaper EngineのWorkshopを悪用した先行事例に関する公式発表。本件の性質を比較する際の基準となる。
【参考記事】
2-Click Remote Code Execution in Meccha Chameleon(外部)
2026年6月21日公開。Ghidraによる解析でクリック2回のRCEを実証し、7月25日の追記で新経路の再現と再パッチへの関与を明かす。
update3.1.0 · MECCHA CHAMELEON(SteamDB)(外部)
3.1.0の更新内容と配信日時の記録。セキュリティ修正が末尾一行として並んでいることを確認できる。
MECCHA CHAMELEON Steam Charts(SteamDB)(外部)
同時接続数の推移記録。本文で扱った34万534人という数値と、その記録日時の裏付けにあたる。
Meccha Chameleon developers on their 2-month dev cycle(外部)
開発者インタビューを扱った記事。2人体制の役割分担、約2か月の実開発期間、広告費ゼロという発言の裏付けとなる。
Fixes roll out after Meccha Chameleon servers infected with malware, Discord hacked(外部)
開発者ハガネイロの発言を直接扱う。3.1.0での修正表明と、公式Discordの参加者規模を報じている。
Steam Workshop malware exploited MECCHA CHAMELEON flaw to infect players(外部)
第2段階の回収でRATの導入が報告された経緯と、Wallpaper Engineの事例との性質の違いを整理している。
Meccha Chameleon Workshop Malware: Cleanup(外部)
7月24日時点の購読者756人を記録。ページ閲覧、購読のみ、実際に読み込んだ、の三段階で必要な対応を切り分けている。
Meccha Chameleon’s Official Discord Hacked After Recent Anti-Malware Patch(外部)
乗っ取り犯が流した「更新版にRATが入っている」との偽告知と、開発チームによる明確な否定を記録している。












