スマートフォン向けアプリケーションを開発する際にもセキュリティ対策は欠かせない。DeNAの舟久保氏は内製ツールと自作アプリを利用して模擬的に改ざん行為を行い、アプリ開発時にどういった対策が有効になるかを解説した。
スマートフォン向けアプリケーション(以下、スマホアプリ)を開発する場合にも、セキュリティ対策を考える必要があるのは、もはや開発者の義務といっていいだろう。どんなアプリであっても、ユーザーが意図的に情報を改ざんできない仕組みを導入したり、個人情報が漏えいしないような対策を採ったりする必要がある。
2019年2月6日にディー・エヌ・エー(以下、DeNA)が開催した「DeNA TechCon 2019」で、DeNAの舟久保貴彦氏はゲームアプリの不正(チート行為、改ざん)対策や海外情報を追いかける中で得た知見として、不正行為が行われやすいゲームアプリの特徴や、不正行為を行うための3つの改ざん手法とその対策を紹介した。
ゲームアプリにおける不正行為とは、自身を優位に進めるため、制作者の意図しない動作を起こせるように改ざんすること、いわゆる「チート」のことだ。舟久保氏は、アプリ改ざん対策について「バランスが重要だ」と説明する。
「クライアント側にデータやデータの操作ロジックを保存するようなアプリは、データを解析しやすいため、不正行為の対象として狙われやすい。従って、データやデータ操作のロジックはサーバ側に保存すべきだろう。一方で、サーバ側に保存すると、通信処理の頻度が高くなるため、アプリの動作速度が落ちる。ゲームアプリの場合は、素早い動作、応答速度が求められるため、バランスを取ることが重要だ。例えば、絶対に守りたい『アイテムの購入画面における処理』はサーバ側で、『バトルの画面における処理』はクライアント側で行うといった形で切り分けるべきだろう」
舟久保氏はバランスを踏まえた上で、以下の3つの手法に対抗する策を重ねて採ることが重要だと説明した。それぞれ見ていこう。
初めに紹介したのが「メモリ改ざん」だ。スマートフォンのメモリには、実行したアプリのデータやロジックが保存されている。インターネットで公開されている「メモリ検索ツール」を利用し、改ざんしたいデータのアドレス(保存位置)を特定できれば、1分以内にアプリを改ざんできるという。
講演では、サンプルアプリで表示された値のバイナリ値をメモリ内で検索し、目星を付けたあと、値を変更してメモリ内のバイナリ値の変化を確認。検索と変化を繰り返すフィルタリング作業を行い、データが保存されている位置を特定して、改ざんに成功した例を紹介した。
「肌感覚として、不正行為の95%がメモリの改ざんを利用している。この改ざんを防ぐには、メモリ内を検索させないことが重要だ。特に、画面に表示される数値は狙われやすい。画面に表示させたデータを保存、利用する際には、何らかの形でエンコード/デコードすることが求められるだろう。例えば、排他的論理和(XOR)とランダム値を利用した難読化手法は、時間をかければ突破される可能性もあるが、検索ツールなどで容易にメモリでの保存位置を特定できなくなる意味で効果がある。また、メモリ解析ツールにはroot権限が必要なものも多いため、Jailbreakやroot化させたスマートフォン、またエミュレータでのアプリ起動を検知してアプリを起動できないようにするのも対策になるだろう」
Copyright © ITmedia, Inc. All Rights Reserved.