スマートフォンで「できちゃうこと」って?イチから始める! Androidセキュリティ(1)(3/3 ページ)

» 2011年03月03日 00時00分 公開
[杉山俊春, Illustrated by はるぷ株式会社ユービーセキュア]
前のページへ 1|2|3       

「改ざん」を想定したアプリ作りを

クウ 「……何か危ないってことはよく分かったけど、何でそんなに詳しいの?」

ユウヤ 「まあ、これくらいは知ってないと話にならないしな」

クウ 「ぐぅ……」

ナツ 「なんか面白そうな話してるね〜〜♪ クウはAndroidアプリ作れんの?」

クウ 「家で趣味程度に始めたくらいですけど、何となくはできるようになってきました!それよりも、ユウヤがひどいことするんです!」

ナツ 「うん。何となく聞こえてた。まあ、こういう腹黒い子に端末渡しちゃダメだよ」

ユウヤ 「お腹は白いですよ」

クウ 「もう絶対渡しません!」

ナツ 「いま話してたパスワードも考えないといけないとこだけど、ほかの通信もけっこう危ないかもよ」

クウ 「そうなんですか?」

ナツ 「クウが作ったのって、ランキング機能のあるゲームアプリなんだっけ? そしたら、ランキングの不正とかもけっこうできそうだよね」

クウ 「えー……」

ナツに注意されるクウ

 「通信が改ざんできる状態になっている」ということは、「アプリケーションから重要な情報を送信している場合、その情報が不正なものになっている可能性がある」ということである。

 例えば、上記の例のようにランキングデータを送信する場合、スコアデータを単純にそのまま送信してしまうと、通信経路途中での改ざんは非常に容易だ。結果として、アプリケーションとして成り立たなくなってしまう可能性がある。

name=kuu&score=1234
    ↓改ざん
name=yuya&score=9999999999 [実現不可能なスコアなど]
リスト1 改ざんできてしまう例

 そのため、改ざんした場合には無効となるよう、データを暗号化するなどの対策が推奨される(注2)。

encrypted_score=107a67286b5a07ff15881be71377ea673e45f237fb9a04660c2cd2fb8ebd22dc
    ↓改ざん
encrypted_score=?????[改ざん不能]
リスト2 暗号化され改ざんできない例

【注2】
ただし、暗号化しても、Androidアプリケーションのバイナリであるapkファイルを逆コンパイルした場合に暗号化キーなどが露見してしまう可能性は残る。


 また、このように、改ざんによる不正なデータが混入する可能性があることを想定してアプリケーションを運用することが必要だ。

 こうしたアプリケーションで注意が必要なのは、ランキングデータのように目に見えるデータだけではない。もし、サーバに送信するデータ内に、ログイン状態や課金状態などを含めている場合も、同様に対策の必要がある。Androidアプリケーションでは、Activityごとに完結する設計にする場合があるかもしれないが、情報がサーバ側で管理できるものであれば、セッション管理などの仕組みを用いて、重要な情報は通信内容に表れないようにすることが望ましい。

GET / HTTP/1.1
Host: www.example.com
Accept-Encoding: gzip
Accept-Language: ja-JP, en-US
x-wap-profile: http://wap.sonyericsson.com/UAprof/SO-01BR201.xml
User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; ja-jp; SonyEricssonSO-01B Build/2.0.B.0.138) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17
Cookie: SESSIONID=27e2975951f392153f52866ea35045a4
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Charset: utf-8, iso-8859-1, utf-16, *;q=0.7
Connection: Keep-Alive

 もう1つ、従来の携帯電話向けWebサイトなどでは、送信元IPアドレスによってアクセスを制限していたケースもある。だがスマートフォンの場合、同様の考え方による対策は困難であると想定する必要がある。そもそも送信元IPアドレスを特定するための情報が少ないという要因もあるが、特定できた場合でも、スマートフォンから直接攻撃を行えてしまうため、根本的な解決策とはなり得ない。

 例えば、テザリング(注3)などの手法を用いて、PCからの通信をスマートフォン経由で送信させることも可能だ。また、攻撃用のアプリケーションを作成し、スマートフォンにインストールすることも可能となる。

【注3】
テザリング行為は利用規約などに反する場合もあるため、注意が必要。


 そのため、「通信内容が改ざんできない」、もしくは「改ざんされてもそのことを検知できる」仕組みを導入する必要がある。

 このように、サーバと通信を行うAndroidアプリケーションでは、端末、通信経路、サーバのそれぞれにおいて、発生し得る被害を把握した上で作成することが重要となる。

クウ 「何か、当たり前ですけど、けっこうちゃんとやんないといけないんですね」

ナツ 「まあ、そんなわけで、ある程度分かったところで、今度始まるAndroidアプリの開発プロジェクトへの参加決定ね」

クウ 「おー! 難しそうですけど楽しそうですね♪ ぜひにー」

ユウヤ 「けど、クウの作るアプリはかなり怪しそうですよ」

ナツ 「だいじょぶだいじょぶ。みんなこれから勉強するってとこだから♪」

クウ 「じゃあ、もうちょっとちゃんと作れるように頑張ります!」

ナツ 「そしたら、開発の環境とかも整えておこうか〜」

きょうの格言

きょうの格言

スマートフォンでできることを把握しよう!

できることが多くなるということは、攻撃できる部分も多くなる場合がある。

いままでの携帯とどのように違うのかを正しく把握して、必要な対策を施そう。


クウ壁紙

【クウたちの壁紙カレンダー、配布中!】

本連載のイラストを担当しているはるぷさんによる、毎月更新のカレンダーが配布されています。ぜひご利用ください!

特製ウォールペーパー

http://www.ubsecure.jp/wallpaper.php


Profile

杉山 俊春(すぎやま としはる)

株式会社ユービーセキュア
技術本部 VEXグループ リーダー 兼 セキュリティオーディットコンサルタント

セキュリティコンサルタントとして、主にWebアプリケーションのセキュリティ検査やWebアプリケーション検査ツールの開発などに従事している。大手ショッピングサイトなどの検査実績を持つ。



前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。