Robloxゲーム制作を安全に | 悪意のあるコードの見分け方

1. はじめに

昨年、RobloxがDeveloper Marketplaceへのアップデートで、悪意のあるコードが含まれているフリーモデルやプラグインを自動的に検知し、検索から除外してくれる、というものを発表しました。
これにより、Toolboxでのフリーモデルやプラグインの使用は、以前よりは安全になりました。
しかし、悪意のあるユーザーは常に抜け道を探っており、完全に安全であるとは言い切れません。
この記事では、悪意のあるコードの見分け方やその例などを解説します。

2. ゲームへの影響

悪意のあるコードは、悪意あるユーザーが自分の利益のために作ったものが多く、そのゲームが実行されているサーバーに対して、任意のLuaスクリプトを実行できるものがあります。
任意のLuaスクリプトを実行できるようになると、悪意あるユーザーはそのゲームを荒らしたり、破壊したり、クライアントからは見れないものが覗けたりできます。
ほかにも、利用規約違反のコンテンツをゲームに混入させて、ゲームやゲーム制作者をバンさせることもできます。
例を挙げると、2015 – 2018年に活動していた悪意あるRobloxハッカーc00lkiddのようなことができるようになります。


c00lkiddに荒らされたゲーム

3. 悪意のあるコードの見分け方

多くの悪意のあるコードは、様々なことができるようにするために、モジュールとしてRobloxにアップロードされています。
すべてが悪意のあるコードであるというわけではありませんが、アドミンなど以外のフリーモデルにrequire(数字)のようなコードが隠れていたら、悪意のあるコードを読みこんでいる可能性があります。
ほかにも、Loadstring モジュール(Lua内でLuaを実行できるモジュール)が使われているものも疑ってもよいでしょう。

4. 悪意のあるモデルの例

悪意のあるモデル及び入れないほうがいいモデルには、次のようなものがあります:

  • HD Admin (HD Adminに悪意はありません)
  • 難読化されたコード(意図的に読みにくくされたコード)が含まれているモデル
  • 認証されていないユーザーによってアップロードされたモデル

HD Adminには、悪意のあるコードは含まれていませんが、もし任意のコードが実行されるようなゲームになったとき、HD Adminは狙われやすいです。
それは、HD Adminは外部のスクリプトが内部のデータを操作しやすい仕組みになっているからです。
悪意あるユーザーは、HD Adminを使って、オーナーやモデレーターの権限を奪うことやゲームからバンすることができます。
難読化されたコードについては、中身が一般ユーザーにとってわかりにくく、悪意のあるコードが混入していても、ゲーム開発者が気づかないことが多いです。
あまりゲームに入れないほうがよいでしょう。
認証されていないユーザーによってアップロードされたモデルについては、悪意のあるコードをアップロードするために作られたものが多いです。
すべてではありませんが、あまり入れないほうがいいでしょう。

5. 悪意あるプラグインについて

プラグインは、普通のスクリプトと違い、アクセスできる部分が多いです。
2022年10月に修正されましたが、0x1DというプラグインがRoblox Studioで、バイトコード(コンパイルされたLua)を直接実行できることで、OSに影響する任意のコードを実行することができてしまう脆弱性が発見されたことがあります。Roblox Studioがコンピューターウイルスになってしまうようなものです。
この脆弱性の詳細はこちら: Github: latte-soft/0x1D
プラグインについては、フリーモデルよりも気を付けながら選んだほうがいいでしょう。

cool5u5

Roblox スクリプター、UIデザイナーで

Robloxアカウント:

https://www.roblox.com/users/1383665791/profile

回答

cool5u5
2023年 09⽉ 09⽇

1. はじめに

昨年、RobloxがDeveloper Marketplaceへのアップデートで、悪意のあるコードが含まれているフリーモデルやプラグインを自動的に検知し、検索から除外してくれる、というものを発表しました。
これにより、Toolboxでのフリーモデルやプラグインの使用は、以前よりは安全になりました。
しかし、悪意のあるユーザーは常に抜け道を探っており、完全に安全であるとは言い切れません。
この記事では、悪意のあるコードの見分け方やその例などを解説します。

2. ゲームへの影響

悪意のあるコードは、悪意あるユーザーが自分の利益のために作ったものが多く、そのゲームが実行されているサーバーに対して、任意のLuaスクリプトを実行できるものがあります。
任意のLuaスクリプトを実行できるようになると、悪意あるユーザーはそのゲームを荒らしたり、破壊したり、クライアントからは見れないものが覗けたりできます。
ほかにも、利用規約違反のコンテンツをゲームに混入させて、ゲームやゲーム制作者をバンさせることもできます。
例を挙げると、2015 – 2018年に活動していた悪意あるRobloxハッカーc00lkiddのようなことができるようになります。


c00lkiddに荒らされたゲーム

3. 悪意のあるコードの見分け方

多くの悪意のあるコードは、様々なことができるようにするために、モジュールとしてRobloxにアップロードされています。
すべてが悪意のあるコードであるというわけではありませんが、アドミンなど以外のフリーモデルにrequire(数字)のようなコードが隠れていたら、悪意のあるコードを読みこんでいる可能性があります。
ほかにも、Loadstring モジュール(Lua内でLuaを実行できるモジュール)が使われているものも疑ってもよいでしょう。

4. 悪意のあるモデルの例

悪意のあるモデル及び入れないほうがいいモデルには、次のようなものがあります:

  • HD Admin (HD Adminに悪意はありません)
  • 難読化されたコード(意図的に読みにくくされたコード)が含まれているモデル
  • 認証されていないユーザーによってアップロードされたモデル

HD Adminには、悪意のあるコードは含まれていませんが、もし任意のコードが実行されるようなゲームになったとき、HD Adminは狙われやすいです。
それは、HD Adminは外部のスクリプトが内部のデータを操作しやすい仕組みになっているからです。
悪意あるユーザーは、HD Adminを使って、オーナーやモデレーターの権限を奪うことやゲームからバンすることができます。
難読化されたコードについては、中身が一般ユーザーにとってわかりにくく、悪意のあるコードが混入していても、ゲーム開発者が気づかないことが多いです。
あまりゲームに入れないほうがよいでしょう。
認証されていないユーザーによってアップロードされたモデルについては、悪意のあるコードをアップロードするために作られたものが多いです。
すべてではありませんが、あまり入れないほうがいいでしょう。

5. 悪意あるプラグインについて

プラグインは、普通のスクリプトと違い、アクセスできる部分が多いです。
2022年10月に修正されましたが、0x1DというプラグインがRoblox Studioで、バイトコード(コンパイルされたLua)を直接実行できることで、OSに影響する任意のコードを実行することができてしまう脆弱性が発見されたことがあります。Roblox Studioがコンピューターウイルスになってしまうようなものです。
この脆弱性の詳細はこちら: Github: latte-soft/0x1D
プラグインについては、フリーモデルよりも気を付けながら選んだほうがいいでしょう。

ダイヤモンド/Daiya23
2023年 09⽉ 11⽇

requireってなんの影響が起こるのですか?

cool5u5
2023年 09⽉ 13⽇

requireという関数は、Luaにおいて、モジュールを読み込むための標準関数です。

Robloxではrequireの引数に数字を入れると、その数字をモデルのIDとして、モデルのMainModuleというModuleScriptをダウンロード/読み込んでくれます。

require(数字)はそのモデルをダウンロードするため、MainModuleの下にパーツやGUIなどの追加のインスタンスを挿入することができてしまいます。

  • トピックに返信するにはログインしてください
2023年 09⽉ 09⽇
キャンセル

        

この機能を利⽤するには
ログインする必要があります。