サイファー・テックは、9月1日に「CEDEC2017」において「チートの傾向と対策 〜クライアントサイドのセキュリティ入門!〜」のセッションを行い、開発本部ソフトウェアエンジニアの末岐光洋氏(写真)が登壇した。
本セッションでは、ゲームの運営や収益化に深刻な被害を与えることもあるチートについて、「どんな被害が出るのか」、「クライアントサイドとサーバーサイドのセキュリティ対策の違い」、「ゲームのどこを攻撃されるのか、どう防ぐのか」など、チートの傾向と対策、主にクライアントサイドのセキュリティ対策の話を聞くことができた。
セッションはチートとはどのようなものかという話から始まった。チートは、広義にはコンピュータゲームにおいて本来とは異なる動作をさせる行為であり、狭義にはゲームを優位に進めるために制作者の意図しない動作をさせる不正行為となる。よくあるチートの例として、ステータスデータを改ざんしゲームを有利に進める、有料アイテムを料金の支払いをせずに使用する、実際に入手していないアイテムを所持していることにする、ゲームの進行度を偽るなどを挙げた。
チートによって発生する被害について、有償アイテムの直接の売上への影響、チート蔓延の発生により正規のユーザーのモチベーションが低下しユーザー離れが進む、また事後対策になるとコストも大きくなることも考えられるという。
次にクライアントサイドとサーバーサイドのセキュリティ対策の違いについて説明を行った。Webアプリケーションの分野では、不特定多数のユーザーに公開されるサービスを開発するため、セキュリティへの意識は高いという。Webゲームのネイティブゲームの最大の違いについて、webゲームはコアなプログラムは安全なサーバー上にありサーバーへの侵入を防げば基本的には安全と言える。しかし、ネイティブゲームはプログラムがユーザーのクライアント上で実行できる状況にある。アプリケーションが攻撃者の手に渡っている状態であり、攻撃者はユーザーとして潜伏するので対策が複雑になると語った。
では実際にチートによってゲームのどこを攻撃されるのか?そいてどのように防ぐのか?末岐氏は技術的なハードルから難易度に分けて、いくつかの攻撃方法を例に説明を行った。
①メモリ改変
メモリ上に展開されるデータが改変されることにより攻撃力の値を最大にするなどチートが成立する。この方法は原理が単純なこともあり、攻撃を行うための専用のチートツールも広く知られており、攻撃者の数も多いという。メモリ改変の対策として、ステータス値をそのまま変数に保存するのではなく、何らかのエンコーディングを施した値にする、デバッガーのアタッチを制御する、エミュレーター上での実行を抑制することを挙げた。
②データファイルの改変
データファイルの改変によって、端末のローカルストレージに保存しているデータのファイルを改変され、ゲームを優位に進められる。データファイルの改変に対して、データの保存先をできるだけサーバーにする、ファイルの暗号化を挙げた。暗号化については、暗号化ロジックが看破された場合には暗号化を無効化される恐れがあるため難読化等の別の保護と組み合わせてほしいと語った。
③OSの改変
いわゆるAndroid端末のroot化やiOS端末のJailbreakがOSの改変にあたる。Root化やJailbreakそれだけではチートと言えないが、前提として使えるチートや攻撃手法も多いという。
検知を回避するツールも出回っており、情報もネット上で広く知られているため容易に行えるという。OSの改変の対策ついては、中途半端な対策ではいたちごっこになるため、商用のセキュリティ対策ソリューションの導入や他の情報と組み合わせてチートかどうかを判断してBAN対応を行うなどを挙げた。
④通信内容の改変
クライアント・サーバー間の通信を改変されることにより、サーバーから取得した攻撃力や体力などのステータスを改変し優位にゲームを進めることができる。通信にHTTPSを使用していても。HTTPSは攻撃者がユーザーの場合はそれだけでは対策にならず、容易に暗号化を改変することができるという。通信内容の改変に対して、通信内容を独自に暗号化する、サーバー証明の検証をOSが管理する認証局リストに頼らない他の方法で行うことなどの対策を挙げた。
⑤プログラム改変
ゲームロジックを解析し、チートが可能なようにプログラムを改変してしまうことも可能となるため、暗号化等の対策もプログラム改変により無効化する恐れもあるという。プログラム改変に対して、Unityの場合はIL2CPP化、プログラムが改変された際に検知できる仕組みの導入、コードの難読化により静的解析を防ぐ、デバッガーのアタッチの抑制による動的解析を防ぐことを挙げた。
最後にクライアントのセキュリティ対策について説明した。末岐氏は、チート行為を検知して運営側で判断するという対策が良いのではないかと語った。具体的には、チート行為を検知して運営側に通知し、すぐにアプリの動作を禁止せず、運営側で判断するなどの対策を挙げた。
▲セッションではどのように改変が行われるのか?ゲーム内でどのような状態になるのか?デモンストレーションを交えて説明が行われた。
(撮影・記事執筆 森山晃義)
会社情報
- 会社名
- サイファー・テック株式会社
- 設立
- 2003年2月
- 代表者
- 代表取締役CEO 吉田 基晴/代表取締役COO 勝間 美継