クウ 「……何か危ないってことはよく分かったけど、何でそんなに詳しいの?」
ユウヤ 「まあ、これくらいは知ってないと話にならないしな」
クウ 「ぐぅ……」
ナツ 「なんか面白そうな話してるね〜〜♪ クウはAndroidアプリ作れんの?」
クウ 「家で趣味程度に始めたくらいですけど、何となくはできるようになってきました!それよりも、ユウヤがひどいことするんです!」
ナツ 「うん。何となく聞こえてた。まあ、こういう腹黒い子に端末渡しちゃダメだよ」
ユウヤ 「お腹は白いですよ」
クウ 「もう絶対渡しません!」
ナツ 「いま話してたパスワードも考えないといけないとこだけど、ほかの通信もけっこう危ないかもよ」
クウ 「そうなんですか?」
ナツ 「クウが作ったのって、ランキング機能のあるゲームアプリなんだっけ? そしたら、ランキングの不正とかもけっこうできそうだよね」
クウ 「えー……」
「通信が改ざんできる状態になっている」ということは、「アプリケーションから重要な情報を送信している場合、その情報が不正なものになっている可能性がある」ということである。
例えば、上記の例のようにランキングデータを送信する場合、スコアデータを単純にそのまま送信してしまうと、通信経路途中での改ざんは非常に容易だ。結果として、アプリケーションとして成り立たなくなってしまう可能性がある。
name=kuu&score=1234 |
リスト1 改ざんできてしまう例 |
そのため、改ざんした場合には無効となるよう、データを暗号化するなどの対策が推奨される(注2)。
encrypted_score=107a67286b5a07ff15881be71377ea673e45f237fb9a04660c2cd2fb8ebd22dc |
リスト2 暗号化され改ざんできない例 |
【注2】
ただし、暗号化しても、Androidアプリケーションのバイナリであるapkファイルを逆コンパイルした場合に暗号化キーなどが露見してしまう可能性は残る。
また、このように、改ざんによる不正なデータが混入する可能性があることを想定してアプリケーションを運用することが必要だ。
こうしたアプリケーションで注意が必要なのは、ランキングデータのように目に見えるデータだけではない。もし、サーバに送信するデータ内に、ログイン状態や課金状態などを含めている場合も、同様に対策の必要がある。Androidアプリケーションでは、Activityごとに完結する設計にする場合があるかもしれないが、情報がサーバ側で管理できるものであれば、セッション管理などの仕組みを用いて、重要な情報は通信内容に表れないようにすることが望ましい。
GET / HTTP/1.1 |
もう1つ、従来の携帯電話向けWebサイトなどでは、送信元IPアドレスによってアクセスを制限していたケースもある。だがスマートフォンの場合、同様の考え方による対策は困難であると想定する必要がある。そもそも送信元IPアドレスを特定するための情報が少ないという要因もあるが、特定できた場合でも、スマートフォンから直接攻撃を行えてしまうため、根本的な解決策とはなり得ない。
例えば、テザリング(注3)などの手法を用いて、PCからの通信をスマートフォン経由で送信させることも可能だ。また、攻撃用のアプリケーションを作成し、スマートフォンにインストールすることも可能となる。
【注3】
テザリング行為は利用規約などに反する場合もあるため、注意が必要。
そのため、「通信内容が改ざんできない」、もしくは「改ざんされてもそのことを検知できる」仕組みを導入する必要がある。
このように、サーバと通信を行うAndroidアプリケーションでは、端末、通信経路、サーバのそれぞれにおいて、発生し得る被害を把握した上で作成することが重要となる。
クウ 「何か、当たり前ですけど、けっこうちゃんとやんないといけないんですね」
ナツ 「まあ、そんなわけで、ある程度分かったところで、今度始まるAndroidアプリの開発プロジェクトへの参加決定ね」
クウ 「おー! 難しそうですけど楽しそうですね♪ ぜひにー」
ユウヤ 「けど、クウの作るアプリはかなり怪しそうですよ」
ナツ 「だいじょぶだいじょぶ。みんなこれから勉強するってとこだから♪」
クウ 「じゃあ、もうちょっとちゃんと作れるように頑張ります!」
ナツ 「そしたら、開発の環境とかも整えておこうか〜」
【クウたちの壁紙カレンダー、配布中!】
本連載のイラストを担当しているはるぷさんによる、毎月更新のカレンダーが配布されています。ぜひご利用ください!
特製ウォールペーパー
http://www.ubsecure.jp/wallpaper.php
杉山 俊春(すぎやま としはる)
株式会社ユービーセキュア
技術本部 VEXグループ リーダー 兼 セキュリティオーディットコンサルタント
セキュリティコンサルタントとして、主にWebアプリケーションのセキュリティ検査やWebアプリケーション検査ツールの開発などに従事している。大手ショッピングサイトなどの検査実績を持つ。
Copyright © ITmedia, Inc. All Rights Reserved.