ブログ一覧に戻る
ベストプラクティス2026年9月3日4分で読めます

MECCHA CHAMELEON、RCEからは隠れられない

MECCHA CHAMELEON can't hide from the RCE

ベストプラクティス

この記事のポイント

【なぜ重要か】 世界的にヒットした隠れんぼゲーム MECCHA CHAMELEON(発売初月で1,500万本)に、2件目となる遅延実行型のリモートコード実行(RCE)脆弱性が見つかった。このゲームはコミュニティ製の自作マップが人気の柱で、対戦ロビーではホストが選んだマップを全プレイヤーが自動的にダウンロード・実行させられる。つまり、見知らぬ他人が作ったマップを読み込むだけで攻撃が成立しうる。ゲーム...

【なぜ重要か】 世界的にヒットした隠れんぼゲーム MECCHA CHAMELEON(発売初月で1,500万本)に、2件目となる遅延実行型のリモートコード実行(RCE)脆弱性が見つかった。このゲームはコミュニティ製の自作マップが人気の柱で、対戦ロビーではホストが選んだマップを全プレイヤーが自動的にダウンロード・実行させられる。つまり、見知らぬ他人が作ったマップを読み込むだけで攻撃が成立しうる。ゲームはUnreal Engine 5.6.1製で、マップにBlueprint(ビジュアルスクリプト)を含められるため、マップが単なる「素材」ではなく「実行されるコード」になっている点が攻撃面の本質である。

【攻撃の流れ】

  • 任意の場所へのファイル書き込み:Blueprintから呼べる関数のうちファイル操作に関わるものを調査し、録音保存用の関数(Finish/StopRecordingOutput)が任意パスにファイルを書けることを発見。相対パス(../../../)でユーザーのホーム配下、特にWindowsのスタートアップフォルダを狙える
  • .wav拡張子の回避:書き込むファイルには常に .wav が付与されてしまう問題を、ファイル名にNULバイト(\u0000)を挟むことで回避。Unreal側は文字列に .wav を足すだけだが、Windows側の低レベルAPIはNULを終端と見なして以降を切り捨てるため、.exe や .hta で保存できる
  • WAVの中に実行ペイロードを仕込む:ファイルの中身は攻撃者が制御できない(ヘッダはUnrealが生成する)ため、ヘッダ位置を問わず実行できる .hta(HTML Application)を採用。16bit PCMのサンプル値としてASCIIバイトを埋め込み、正規のWAVファイルの中に mshta.exe が実行するスクリプトを仕込んだ
  • 遅延実行の成立:マップ読み込み時(BeginPlay)に録音開始→音声再生→スタートアップフォルダへ保存を自動実行。次回のPC起動時にコードが走り、遅延実行型RCEが成立する

【対応状況】 Aikidoは開発元に報告し、2026年8月20日公開のバージョン4.0.0で修正された(当該関数はファイルを一切作らなくなった)。このアップデートはゲーム起動前に自動適用される。既存のワークショップ公開マップに悪用の痕跡は確認されなかった。ただし、他にも脆弱性がある可能性を指摘する声が寄せられており、Aikidoは自作マップの利用に注意し、可能なら公式マップのみでのプレイを推奨している。

【まとめ】 「マップ=データ」という思い込みが崩れ、ダウンロードコンテンツが実行コードになりうる典型例である。異なるシステム(Unrealのパス処理とWindowsのパス解釈)の前提のズレ(NULバイトの扱い)を突く古典的な手口が、最新のゲームエンジンでも通用することを示している。

原文を読む

Aikido Security Blog

英語で詳細な技術情報を確認

原文を読む

コメント・質問

この記事についてのコメントや質問を投稿できます

コメントを投稿するにはログインが必要です

ログインする

読み込み中...