セラフ:暗黒における安全評価と分析
一、概要(ゲームの安全性評価)
Seraphは2023年11月22日に三回目のテストを開始しました。Damoclesチームは11月24日にこのゲームの安全分析と評価を行いましたが、評価結果は満足のいくものではありませんでした。まず、プロジェクト側がコード内に大量のLog情報を残しており、Log情報からプロジェクト側が韓国チームではなく中国チームであることが推測されます。また、このゲームはUnityを使用してLuaを読み込む方式を採用しており、Luaコードの保護が行われていないか、lua jitなどの逆アセンブルの難易度を上げる手段が使用されていないため、ソースコードが完全に露出しています。load関数をフックするだけで、メモリからゲームのソースコードをダンプすることができます。しかし、このゲームはARPGゲームに属しており、この種のゲームには自然なチート防止の利点があります。つまり、大部分のデータはサーバーと同期されるため、ゲームの安全性の問題がある程度緩和されています。
二、ゲーム背景
Ø 評価対象のゲームバージョン:v0.0.0.6
Ø ゲームタイプ&ゲームエンジン:ARPG、Unity
Ø ゲームプレイにおける可能性のある問題:
n 瞬間移動
n 加速(移動の加速、スキルの加速発動)
n 自動放置
n 倍率変更
n 無敵
n Buff変更(キャラクターが持続的に存在するバフやその他の魂の結晶石の産出を増加させる)
三、ゲームの安全性分析
ゲームコード保護:
分析プロセス:
- 異なるエンジンには異なる分析モードがあるため、ゲームのEXEを取得した後、まずゲームが使用しているエンジンを特定する必要があります。ゲームの基本情報を識別することで、このゲームがUnityで開発されていることを確認できます。
- ゲームディレクトリ内のGameAssembly.dllおよびglobal-metadata.datを通じて、ゲームがil2cppのコンパイルモードを採用していることを確認し、iL2Cppdumperを使用してソースコードを復元しました。
しかし、dump.csファイル内にはゲームに関連性の高いコードロジックが見つからなかったため、このゲームはC#で開発されているのではなく、Luaを使用して読み込まれていると推測しました。そのため、コードをフックしてゲームのloadbuff関連の関数を取得し、ゲームの真のソースコードを得ました。
さらに、ゲームのソースコード内にいくつかの興味深いコメントを見つけました:
分析結論:
Seraphはゲームコード保護において0点を獲得し、全く保護がありません。Luaで開発された従来のゲームでは、カスタムLuaインタープリタを使用し、LuaJitを用いて一定程度のコード保護を行うことが一般的です。Seraphは健全なコード保護メカニズムを持っていないため、悪意のあるプレイヤーがコードを分析するハードルとコストが非常に低く、もしチートが発生した場合、通常のプレイヤーにとって不公平であり、ゲームの経済モデルに影響を与える可能性があります。
ゲーム基本反チート:
分析プロセス:
基本的な反チート検出において、主にLuaファイルを置き換えてゲームが外部ロジックを読み込んで実行するかどうかを判断します。
CE注入ツールDLLを使用した後、ゲームのLogファイルを確認し、三者のLogが出力されているかどうかを確認します。
- Luaロジックを変更してゲーム内のクリティカルヒット率などのデータを変更したところ、効果があり、ゲームにはチェックが存在しないことがわかりました。(属性データの変更は、より直感的に表示するためだけであり、このフィールドは通常サーバーに保存されているため、ローカルでの変更は効果がありません)
分析結論:
Seraphは反チート能力において0点を獲得し、悪意のあるユーザーが自由にチートを行うことができます。
Luaをゲームに再読み込みするテストの主な目的は、この行為がLua系ゲームのチートの基礎であるため、ここができない場合、他の反チートの側面はさらに悪化することになります。
ゲームロジックの問題
分析プロセス:
現在ゲームのソースコードを取得しているため、分析プロセスにおいてロジック層に対して安全分析を行い、プロトコル層の分析は行っていません。ロジック層に関しては、以下のポイントに対して安全テストを行いました。
キャラクター初期化時の属性改ざん:(この部分の敏感な属性はあまり多くなく、利益を向上させることはできませんでした)
次に、攻撃時のスキル関連の改ざん:(この部分は表示のみで、実際のダメージ検証には参加していないことがわかりました)
最後に、モンスターが攻撃されたときのロジックの変更(この点を変更しても実際には意味がなく、このモジュールの開発時の主な目的はイベントをトリガーして記録することであり、実際の計算には参加していないと推測されます)
分析結論:
Seraphはランダムに改ざんした三点において効果がなく、ダメージ計算と表示が分離されていること、またはサーバーによって計算されているため、その安全性には一定の保証があることが証明され、評価は3点0です。
しかし、一部のダメージ判定がローカルに保存されているため、チートの余地は依然として存在します。
ゲームRPC分析
このゲームはprotolbufを使用してプロトコルの相互作用を行っており、Web3関連の相互作用もこの方式を使用しています。現在、この部分に対して詳細なテストは行っていませんが、後にProtoBuf部分に対して詳細なテストを行う可能性があります。
WEB3安全分析:
概要:
現在、Seraphはトークンを発行しておらず、Mintコントラクトは代理コントラクトを使用した通常のNFT721コントラクトで、総供給量は3225です。また、Mintやクロスチェーンに関してもRole制御があり、オンチェーンの安全性は制御可能です。
ゲーム内経済システムの安全:
現在、Seraphの金策の主な方法は魂の結晶石を中心に行われており、魂の箱を作成するか開くかはサーバーによって判定され、クライアントはリクエストを発起するだけです。安全性は主にサーバーによって制御されるため、その安全性評価はクライアントの安全評価の範囲外です。今後、Damoclesはすべてのリクエストを整理し、ブラックボックステストを行う可能性があります。
Damoclesについて
Damocles labsは2023年に設立されたセキュリティチームで、Web3業界の安全に特化しています。業務内容には、コントラクトコード監査、業務コード監査、ペネトレーションテスト、GameFiコード監査、GameFi脆弱性発掘、GameFiチート分析、GameFi反チートが含まれます。
私たちはWeb3セキュリティ業界で引き続き力を入れ、できるだけ多くの分析レポートを提供し、プロジェクト側とユーザーのGameFiセキュリティに対する認識を高め、業界の安全な発展を促進します。
Twitter:@DamoclesLabs
Discord: チャンネル入口