豚吐露@wiki
1335_cheat
最終更新:
ohden
-
view
LOCAL Developer Day Online '22 /Security
13:35~14:20
Session.1:オンラインゲームにおけるチート行為とその対策/松田和樹(eagle0wl)(株式会社ラック デジタルイノベーション統括部 デジタルペンテスト部)
オンラインゲームセキュリティ
→オンラインゲームにおけるチート行為に対する対策。
→オンラインゲームにおけるチート行為に対する対策。
チート
- 裏技
意図的に入れた処理。バグを仕様と言い張った
- ずる、イカサマ
glitchを含むデザイン、仕様に反する処理のうち開発者がイカサマと認定した処理
→ 通常プレイの範疇では実行できない。
→ 通常プレイの範疇では実行できない。
- メモリ空間改ざん
- プログラム改ざん
- 通信の改ざん
- オフラインであれば他人に迷惑をかけない
→ 遊び方の問題
- オンラインであれば他人に迷惑がかかる
→ 他プレイヤー、運営
一般userが自身の保身のためにできることはない
チート:プラットフォーム
PC/スマホ
→ 解析ツール、ノウハウが多数ある
専用機
→ ツール、ノウハウが少ない
ゲームの対応
→マルチ:PC/スマホ/専用機
PC/スマホ
→ 解析ツール、ノウハウが多数ある
専用機
→ ツール、ノウハウが少ない
ゲームの対応
→マルチ:PC/スマホ/専用機
ゲーム開発者はセキュリティ対策をやりたくない
→やらなきゃってことはわかってる
→完璧な対策はできない
→前よりは良くすることはできる
→工数がかかる
→ゴールが無い
→対策するなら効果測定したい
→効果が見えないままではコストをかけれない
→そもそもの効果測定はどうする?
→被害金額
→ユーザの離脱防止
→離脱ユーザが戻るか?
→対策してる間に飽きられる
→コストが最優先になる
→どれだけ売れるか分からないものにコストはかけたくない
→対策に見合う価値はあるのか?
→セキュリティ対策してもゲームは面白くならない
→チーターを放置するとクソゲー化が進む
→チートが困難なデザイン
→やらなきゃってことはわかってる
→完璧な対策はできない
→前よりは良くすることはできる
→工数がかかる
→ゴールが無い
→対策するなら効果測定したい
→効果が見えないままではコストをかけれない
→そもそもの効果測定はどうする?
→被害金額
→ユーザの離脱防止
→離脱ユーザが戻るか?
→対策してる間に飽きられる
→コストが最優先になる
→どれだけ売れるか分からないものにコストはかけたくない
→対策に見合う価値はあるのか?
→セキュリティ対策してもゲームは面白くならない
→チーターを放置するとクソゲー化が進む
→チートが困難なデザイン
クライアント/サーバー型
1.クライアント:キー入力
2.クライアント:キー入力orデータの送信
3.サーバー:受信データをもとに進行状況を更新
4.サーバー:進行状況を返却
5.クライアント:進行状況を更新して出力
1.クライアント:キー入力
2.クライアント:キー入力orデータの送信
3.サーバー:受信データをもとに進行状況を更新
4.サーバー:進行状況を返却
5.クライアント:進行状況を更新して出力
クライアントは改造される可能性がある。
→sourceを見られても大丈夫な処理だけ書く
→隠したい機能、処理はすべてサーバー側に実装
→sourceを見られても大丈夫な処理だけ書く
→隠したい機能、処理はすべてサーバー側に実装
クラウドゲーム(C/S型):クレーンゲームも含む
→クライアント側にキー、データ送信の機能のみ
→サーバーはストリーミング映像を出力し、クライアントはそれを表示するのみ
→チート対策の観点ではクラウドゲーム最強
→画像解析によるbotは可能
→すべてのオンラインゲームはクラウドゲームになるか?
→当分ならない
→サーバー負荷が高い
→基本無料のビジネスモデルと相性最悪
→映像をストリーミングし続けるので安定した常時接続環境が必須
→海外の通信環境を考えると非現実的
→通信量がすごい
→遅延
→Googleのstadiaも勢いがまるで無い
→クライアント側にキー、データ送信の機能のみ
→サーバーはストリーミング映像を出力し、クライアントはそれを表示するのみ
→チート対策の観点ではクラウドゲーム最強
→画像解析によるbotは可能
→すべてのオンラインゲームはクラウドゲームになるか?
→当分ならない
→サーバー負荷が高い
→基本無料のビジネスモデルと相性最悪
→映像をストリーミングし続けるので安定した常時接続環境が必須
→海外の通信環境を考えると非現実的
→通信量がすごい
→遅延
→Googleのstadiaも勢いがまるで無い
事例と対策
- クライアント側の脆弱を付く場合
- サーバー側の脆弱性を突く場合
- パラメータチェック不備
改造によって本来指定できない値を指定すると...
→パラメータをいじってガチャの回数を指定する
→負数を指定:実装が悪いと異常な処理になる場合がある
→-1回回すになるとどうなるのか?
→パラメータチェックを厳密にする
→クライアントからくるパラメータは全て改造可能
→入力/送信時の改造は防げない
→受診時にチェックするしか無い
→1or10以外認めない
→urlにパラメータを含める
→1回の場合はこのurl、10回の場合はこのurlみたいな運用。
→パラメータをいじってガチャの回数を指定する
→負数を指定:実装が悪いと異常な処理になる場合がある
→-1回回すになるとどうなるのか?
→パラメータチェックを厳密にする
→クライアントからくるパラメータは全て改造可能
→入力/送信時の改造は防げない
→受診時にチェックするしか無い
→1or10以外認めない
→urlにパラメータを含める
→1回の場合はこのurl、10回の場合はこのurlみたいな運用。
- 排他制御不備
1つしかないアイテムを、複数人が同時に拾ったら
→発生:アイテムの受け取り
→移動:送料は変わらないが、アイテムと金の所有者が移る
→更新:チケットを使用したか、未使用か?
→これらにおいて排他処理が適切でない場合
→複数端末で多重ログインして同時に受け取ると、どちらの端末でも受け取れてしまい数が増えることがある。
→クライアントを改造して、複数回要求を連続して行うこともできる。
→データベースでトランザクション処理で排他する
→ロールバック考慮できるか?
→要ログ:特に課金関係。
→発生:アイテムの受け取り
→移動:送料は変わらないが、アイテムと金の所有者が移る
→更新:チケットを使用したか、未使用か?
→これらにおいて排他処理が適切でない場合
→複数端末で多重ログインして同時に受け取ると、どちらの端末でも受け取れてしまい数が増えることがある。
→クライアントを改造して、複数回要求を連続して行うこともできる。
→データベースでトランザクション処理で排他する
→ロールバック考慮できるか?
→要ログ:特に課金関係。
- まとめ
現状、こんな単純な事象は無い。と思いたい。
→ライブラリ、フレームワーク、開発ツールがフォローしてくれる。
→ライブラリ、フレームワーク、開発ツールがフォローしてくれる。
ゲームにおける問題は多岐にわたる
→驚異を全方位でカバーするのは無理
→労力がすごい
→驚異を全方位でカバーするのは無理
→労力がすごい
更新日: 2022年07月26日 (火) 22時34分51秒