人気のオンラインかくれんぼゲーム「MECCHA CHAMELEON」に存在していた脆弱性により、悪意あるSteam WorkshopマップがプレイヤーのWindowsシステムにファイルを設置し、再起動後に遅延型のリモートコード実行を達成できる状態になっていたことが分かりました。この問題は既に修正済みです。
セキュリティ研究者のRobbe Van Roey氏は9月3日にこの問題を公表し、同ゲームのカスタムマップ機能がUnreal Engineの危険な音声録音機能をBlueprintスクリプトに対して露出させていたと警告しました。
開発元はこの脆弱性を、8月20日にリリースされたMECCHA CHAMELEONバージョン4.0.0で修正しました。このアップデートはゲーム起動前に自動的にインストールされます。
MECCHA CHAMELEONは、Steam Workshopを通じて配布されるコミュニティ制作マップに大きく依存しています。マルチプレイヤーのロビーでは、ホストがマップを選択し、他の参加者は試合に参加する前にそのマップをダウンロードするよう求められます。
主にモデルやテクスチャ、レベルレイアウトを含む一般的なゲームマップとは異なり、MECCHA CHAMELEONのマップにはUnreal EngineのBlueprintを含めることができます。このビジュアルスクリプトはゲームプロセス内で実行され、開発者が意図的に公開したネイティブ関数を呼び出すことが可能です。
この設計は高リスクな攻撃対象領域を生み出していました。攻撃者は武器化したマップをアップロードし、ロビーをホストして、他のプレイヤーにそれをダウンロードして読み込ませるよう仕向けることができます。マップが読み込まれると、悪意あるBlueprintのロジックが被害プレイヤーの権限で実行されます。
今回の発見は、同ゲームで過去に報告されたマップ読み込みによるRCE問題に続くものです。以前の脆弱性は既に修正されていましたが、Van Roey氏の調査により、コード実行に至る別の経路が残っていたことが判明しました。
Robbe Van Roey氏は、Unreal EngineのFinish Recording Output機能を主要な問題として特定しました。この音声録音機能はBlueprintに公開されており、録音した音声データを保存する際に出力パスとファイル名を受け付ける仕様になっていました。
悪意あるマップは録音を開始し、制御された音声を再生してから、攻撃者が指定した保存先を指定して録音を停止することができます。パストラバーサルの挙動を悪用することで、マップはゲームの通常の音声出力ディレクトリから抜け出し、ユーザーが制御可能なWindowsの場所にファイルを書き込めるようになります。
当初、Unreal Engineは録音したファイルに.wav拡張子を自動的に付加していたため、攻撃者が一般的な実行可能ファイルを単純に設置することはできませんでした。
しかしRobbe Van Roey氏は、Unrealのファイル名処理とより低レベルのWindows APIとの間に差異があることを発見しました。ヌルバイトの処理方法の違いを悪用することで、悪意あるBlueprintはWindowsに対し、出力ファイルを攻撃者が選択した拡張子のファイルとして扱わせることが可能でした。
残る課題は、音声ファイルをWindowsが実行可能な形式に変換することでした。概念実証(PoC)では非圧縮のPCM音声が使用されており、個々のサンプル値がディスクに書き込まれるバイト列を直接制御する仕組みになっています。
実行可能ファイルは通常、ファイル冒頭に有効なヘッダーを必要とするため、研究者はWindows HTMLアプリケーション(HTA)形式を選びました。
HTAファイルはmshta.exeによって処理され、通常のブラウザのサンドボックス制限を受けず、デスクトップアプリケーションと同等の権限でJScriptやVBScriptを実行できます。
作成された音声ファイルは正当なWAVヘッダーを保持しつつ、PCMサンプルデータの中にHTMLおよびスクリプトのコンテンツを埋め込んでいました。HTA互換の拡張子で書き込まれ、後にスタートアップ機構を通じて起動されると、Windowsは先頭のWAVメタデータを無視し、埋め込まれたスクリプトを処理してしまいます。
この一連のエクスプロイトは、悪意あるレベルが読み込まれた際に実行され、ペイロードをWindowsのスタートアップの場所に書き込みます。これにより、被害者がシステムを再起動した後にコードが実行される仕組みになっていました。
Van Roey氏によると、修正後のStopRecordingOutput関数は、正規の録音を含めファイルを一切作成しなくなったとのことです。同研究者はSteam Workshopのマップも調査しましたが、実際に悪用された形跡は見つかりませんでした。
この問題は8月11日から複数回の連絡を試みた後に報告されました。MECCHA CHAMELEONの開発者は8月17日に返答し、その3日後にセキュリティ修正をリリースしました。
セキュリティチームに、不審な活動をより迅速に調査し、ビジネスへの影響が拡大する前に脅威を封じ込めるための可視性とコンテキストを与えましょう。ANY.RUNで調査力を強化する
翻訳元: https://cyberpress.org/meccha-chameleon-flaw/