ニュース
「ドラクエX」テクニカルディレクターが語る「オンラインゲームの攻防戦」
セキュアなオンラインゲームを作るために必要な事とは?
(2013/8/22 18:24)
CEDEC2013の2日目に行なわれた「オンラインゲームの攻防戦」というセッションでは、スクウェア・エニックスで「ドラゴンクエストX」のテクニカルディレクターを務める青山公士氏と、ネットエージェントで「ドラゴンクエストX」や各種オンラインゲーム、ソーシャルゲームのセキュリティ診断に従事している松田和樹氏によるトークセッションが行なわれた。
セッションでは「ドラゴンクエストX」の事例を中心に、他のオンライン・ソーシャルゲームの事例を出しながら、不正行為に対してどう対処していくべきか、脆弱性を生み出さないようにするにはどういった点に注意する必要があるのかといった点をトークセッション形式で紹介された。
「ドラゴンクエストX」のセキュリティの取組み
松田和樹氏によると2013年に増えている不正アクセスのトレンドは「リスト型アカウントハッキング」だという。これはどこかから流出したIDとパスワードのリストの入手し、そのリストを元にIDとパスワードを他サービスでひたすら入力していくという攻撃だ。複数のサービスで同じIDとパスワードを使いまわしているユーザーはこの攻撃の被害を受ける。
ここ最近でもIDとパスワードが流出した事例がいくつかあり、実際にそこから漏れた情報を使ったリスト型アカウントハッキング攻撃が発生したという。松田氏によると「事例が発生し過ぎているので最近の事例のみ紹介」と。サービスによっては24万以上のアカウントがハッカーに乗っ取られた事例もあるという。
「ドラゴンクエストX」でも同様の攻撃を受けたユーザーからの被害報告があるという。銀行やネットショッピングのサイトのアカウントの場合であれば金品を入手できるので攻撃者の心理も理解できる。それでは攻撃者は「ドラゴンクエストX」で何を目的にアカウント乗っ取りを行なっているのだろうか。
青山公士氏はサーバーのログを解析していてその答えを見つけたという。それは「リアルマネートレード(以下RMT)」だ。攻撃者はアカウントが持っているアイテムや装備品を全てゲーム内のゴールドに変換し、別のキャラクターに送付しているという。ゴールドを送付されたキャラクターは別のプレーヤーに入手したゴールドを販売する、という流れがログからわかったのだという。
「ドラゴンクエストX」では利用規約でRMTを禁止しているが、残念ながらそのような事例が起こってしまっているのが現状なのだという。運営側ではRMTやBOTといった規約違反を犯しているプレーヤーには厳しい姿勢で対処しており、不正に入手したゴールドの凍結なども行っている。またゴールドを販売しているキャラクターはもちろん、購入したプレーヤーにも利用停止などの措置を行っているという
青山氏によると更に対策を強化するために5月から新たに怪しいキャラクターを通報する機能を追加したという。現時点でかなりの通報がよせられているそうで、通報数などをベースに業者度合いを計算する独自の計算式を導入し、この値が一定以上に達すると自動で「ジェイル(牢屋)」に転送されるというシステムを導入し、既に実績を上げているという。しかし業者側も対策を行なってきているので、引き続き計算式を見直すなどの対抗策を採っているという。
また自動で動作するBOTツールについても対策を講じている。怪しいプレーヤーに対してはちゃんとプレーヤーが画面を見てプレイしているかを確認するために、そのキャラクターに対して質問を行ない、適切な回答が帰ってくるか確認しているという。なお、最近では画像認識を使ってそれらしい回答を返してくるBOTツールもあるのだという。
「RMTが儲かるというのは人気のオンラインゲームの宿命なので、運営側としては例えイタチごっこになったとしても対処し続けるしかないです」と青山氏は話していた。
他の事例から考える、セキュアなオンラインゲームを作るために必要なこと
ここからは松田氏がソーシャルゲームで実際にあった事例を紹介した。
酷い事例だと「ユーザー認証がない」という事例があったという。これでは簡単に別のユーザーになりすます事ができてしまい、アイテムなどを盗まれてしまう可能性がある。
また他にもガチャなどの確率計算をクライアント側で行なっているソーシャルゲームがあったという。この実装ではクライアントを書き換えたり、通信途中のパケットを改ざんすることでレアアイテムなどを入手できてしまう。
よく似た事例でガチャなどの抽選を行なう際は何らかの対価を払わなければいけないが、通信を覗き見ることで対価を払う前に抽選結果がわかってしまうという仕様のものもあったという。これを悪用すれば入手したいアイテムが出るまで何度も繰り返し、目当てのアイテムだけを入手するといった事ができてしまう。ちなみに青山氏によると「ドラゴンクエストX」の場合は抽選の前に必ず対価を消費するという実装になっており、途中で回線切断などを行なった場合でも、対価は消費する仕様になっている。
以前大きく話題になりニュースでも報道された某ソーシャルカードゲームでカードの複製ができたという事例も紹介された。これは2台の端末で同時にゲームにログインしたあと、同時にゲーム内アイテムを受け取るというボタンを押すことで両方の端末でカードを入手できてしまったという問題だ。これは排他制御(1つの処理を進めている際は、ロックして他の処理を動かさないようにする)が上手くできていなかったと推測できるという。
こういった事例を防ぐためには、重要な処理はクライアント側で行なわず、サーバー側で行なうというのが基本的な方法だという。特にPC上で動作するオンラインゲームの場合、容易にクライアントの改ざんが行なえる。青山氏は「ドラゴンクエストX」の場合は基本的にクライアントを信用せず、重要な処理は全てサーバー側で行ない、クライアントでは結果の演出といった処理のみを行なうという実装をしているという。
松田氏によると、この様な事例が発生してしまうのは、いくつかの理由が考えられると話した。1つが「純粋に技術力が不足している」という場合だ。例えばオフラインゲームの開発経験しかないデベロッパーがオフラインゲームと同じ感覚でオンラインゲームを開発してしまったという事例が挙げられる。
もう1つの原因がリソース不足や、周りの理解不足もあるという。セキュリティに関する部分は後回しにされやすく、よりセキュアな実装やセキュリティ診断に工数を割くのであれば、そのリソースを新機能の実装等に割かざるを得ない組織もあるのでは、と推測していた。これに対処するには特にプロジェクト全体のリソースや納期を管理しているプロデューサーなどの理解を得るのが重要だと話す。「ドラゴンクエストX」の場合はプロデューサーを初め、メンバーの理解が得られていたため、対策をスムーズに行なうことができたのだという。
最後に「仮にプロデューサーなどの理解が得られなかった場合はどう対処すべきか」という質問に対して、青山氏はメンバー全体でノウハウや失敗談を共有し、理解を深めるのが重要ではないかと話した。