ちょっと話題の記事

[CODE BLUE 2019]チート行為を未然に防ぐゲームセキュリティ診断とは?[レポート] #codeblue_jp

CODE BLUE 2019「チート行為を未然に防ぐゲームセキュリティ診断とは?」についての参加レポートです。
2019.10.30

こんにちは、芳賀です。

『世界トップクラスのセキュリティ専門家による日本発の情報セキュリティ国際会議』でありますCODE BLUE 2019に参加していますのでレポートします。

このブログは下記セッションについてのレポートです。

チート行為を未然に防ぐゲームセキュリティ診断とは? Presented by 松田 和樹

ゲームがオンラインになったことで生じた問題にチート行為がある。この問題は20年以上前から続いているが、課金ビジネスの到来と、esportsの隆盛も相まって、ますますゲームの公平性が求められるようになっている。私たちがどのようにゲームセキュリティ診断を行っているのかを紹介する。

レポート

Topic

  • LACがゲームセキュリティサービスへ進出しました

本題

  • ゲームセキュリティってなんだ
    • オフラインゲームへの攻撃
    • 違法コピー
    • 改造版、MOD
    • 解析によるネタバレ
    • オンラインゲームへの攻撃
    • チート行為や課金の迂回
  • チートとは
    • プログラム、メモリ、セーブデータ改造
    • 30年以上前から存在して、オフラインゲームであれば他人に迷惑が掛からない
    • マスプロ製品であれば、万人向けに合わせたゲームバランス自体に疑問を感じる(個人的見解)
  • オンラインであれば他者に迷惑がかかる
    • 通信経路やサーバが攻撃対象になり、攻撃の端緒が増大する
    • もちろん、チーターが一番悪い。
    • ゲーム開発会社の責任にもなってくる
    • ゲームを離れてしまう要因にもなる
  • E-Sport大会の決勝はオフライン大会が多い。
    • 機器レベルでの不正監視や観客から対戦者への情報提供監視
    • ゲーム会社から審判員が送り込まれたりする
  • 予選はオンラインでおこなわれる
    • ただチーターがいることで興行として成り立たなくなる
    • 超上級プレイヤーは、チーターと誤認・誤検知されることがある。
    • プロゲーマーを擁する団体は、チート疑惑や誹謗中傷からプロゲーマーを守りたい
  • 実際のE-Sportでの対応
    • GDC(Game developer Conference)ではDeeplearningによってチート行為を検知している(人間の報告より検知する成果があがった)

ゲームセキュリティ診断とは?

  • 考慮ポイント
    • キーパッドからクライアントからのキー入力実施
    • クライアントからサーバへキー入力をまとまった形で送信する
    • サーバ側では受信したキー入力から進捗結果を返信する
  • キー入力をサーバへ送信するまでがチーターが影響を及ぼせる領域である
  • クライアント側へのクラック対策としてクライアントの解析防止
    • ただ、オンラインゲームのセキュリティ診断では大元の設計や実装を適切に行った方がよい(と認識している)
    • どのぐらいのゲームがクラックされているか?
    • crackwatch[ドット]com でコピープロテクトを破られたかどうかを調べる事ができる
    • コピープロテクト単位で調べることができる
    • 緑色がクラック済み、赤い色だと、クラックされていない(本来逆だよね)
  • サーバ側での対策
    • ログ分析
    • 不正行為の判定情報を隠蔽できる
    • 何をもって異常値とするかはゲーム仕様を強く依存する
    • 通常プレイから逸脱しないようにした不正行為は見抜くのは難しい
    • ログの粒度を見極めないと意味ないデータが蓄積され続ける
    • バージョンアップや仕様変更へのついずいが大変
  • セキュアな設計とセキュアコーディング
    • ブラックボックス診断
    • NDAが複雑にならない(ソースや内部資料を診断会社が入手しない)
    • チーターが実際におこなっている手順とほぼ同じ
    • チーターと同じ正攻法だから近眼的な成果しかでない
    • 人海戦術や集合知が必要だが、診断員の数では限界がある。
    • ホワイトボックス診断
    • ソースコードや内部資料をもらう(NDAを結ぶ)
    • サーバープログラムも診断対象(おもな原因は9割ぐらい
    • メリットは解決策を提示できる
    • チーターにはできない、ソースを読むというチートを使える
    • 短所はコスト。また、会社によってはソースコードを外に出せない事もある。
    • 良く見つかる脆弱性
    • サーバ側でのパラメータチェック不備(一番多い)
    • 本来重ならない条件が重なった時のチェック不備
      • 多重ログインやトランザクションの管理、同時送信の管理不備
    • 設計レベルで考えること
    • 何か問題があった時に対CPU戦では、プレイヤー有利で対応すればいい
    • 対人戦では進行状況を曖昧にしずらいので、問題を誤魔化しがしずらい
  • ゲームの開発とセキュアな設計は相反する。
    • 対応すると工数が3倍になるという報告もある
    • RPGなゲームでバトル開始した時に宝箱の中身が決まっている場合がある
    • それがチーターに分かってしまうとバトルを途中でやめてしまう
    • 回避するには都度、サーバ通信する必要がある
    • それを行うとユーザーに待ちが発生し、ユーザビリティが下がる
    • 運営側としてもサーバ通信が増えてしまう
  • さいごに
    • チート対策は困難です
    • 頑張ればできます
    • ただ、セキュリティしか意識しない診断では意味がなく、妥協点を見出すことが必要です

感想

地道な対応とコストとの兼ね合いが難しい業界だと感じるセッションだった。