「もいちどイチから! HTTP基礎訓練中」でWebアプリケーションの脆弱性と対策について学んだクウが、今度はAndroidの世界に挑戦。Android特有の問題、PCや従来の携帯電話向けのWebアプリとの違いや対策について紹介します。(編集部)
クウはベンチャー企業で働くエンジニア。同僚のユウヤや開発チームのリーダー、ナツさんと一緒にWebアプリケーションの開発に携わる傍ら、勉強会に顔を出してはWebアプリのセキュリティについて知識をためてきた。そんな彼が次に興味を持ったのは……。
クウ 「Androidアプリできたよー♪」
ユウヤ 「ん? なんでそんなん作ってんの?」
クウ 「お勉強のために自分で作ったのだ♪ いまどきは、スマートフォン向けアプリの開発もできないとね♪」
ユウヤ 「ほ〜。柄になく偉いな。どんなん作ったの?」
クウ 「Webサーバと連携して動くゲームなのだ。IDとパスワードを入れていろいろできるようにしたいとこだけど、いまのとこランキング機能だけな感じ〜♪ パスワードを端末に保存する機能もあるよ〜」
ユウヤ 「へー。ちょっと見せてよ」
クウ 「ふふっ。まあ、遊んでみてよ」
ユウヤ 「パスワードは“kuu&pa$$!”とか使ってるのか」
クウ 「えー! ちょっと! なんで分かるの? 何? 端末壊した?? というか見れたとしても見ないでよ!」
ユウヤ 「いや。普通に通信を手元のPCで取っただけだけど」
クウ 「普通にって……そんなことできるの??」
Android端末などのスマートフォンは従来の携帯電話端末と大きく異なり、どちらかというとPCに近い挙動をさせることが可能である。
Android端末では、LinuxベースのオペレーションシステムであるAndroid OSを利用していることもあり、Android SDKのadbコマンドなどを利用すると、Linuxのコンソールを操作しているのと変わらない感覚で操作することも可能となる(初期状態で利用可能なコマンドは限られるが、追加でインストールすることも可能だ)。
しかも、もし端末内にパスワードを平文で保存していた場合、攻撃者が端末を入手できてしまうと、コマンドを駆使してパスワードが閲覧されてしまう恐れがある。
また、Android端末の標準の機能としてWi-Fi経由でインターネットへアクセスが可能となっている。つまり、従来の携帯電話のように必ず携帯キャリア網を経由するといった制約がなく、LAN環境を経由した通信が非常に容易になっている。
Android端末の場合、一部機種ではプロキシの設定などが可能だ。しかし機能が限定的であったり、中にはプロキシ設定自体が存在しない機種もあるため、意図的に特定の観測環境を経由させることは難しそうに見える。
だが実際には、Wi-Fi通信によってLAN環境を経由させることで、Android端末からの通信が攻撃用の端末を経由する構成にすることは容易だ。一度環境さえ構築してしまえば、自由に通信を閲覧・改ざんすることが可能となる。
Android端末以外のスマートフォンの場合も、Wi-Fi通信によりLANを経由する通信が可能であれば同様のことがいえる。
従来の携帯電話端末では、外部サーバに認証情報を送信するようなアプリケーションに対して、経路途中で認証情報を閲覧・収集する攻撃は困難だった。だが、上記のようにAndroid端末からの通信内容は閲覧可能であり、これまでは困難だった攻撃も可能となる。
特に、一般的なユーザーは複数のサイトで同じパスワードを利用している場合が多い。ひとたび認証情報を第三者に閲覧されてしまうと、複数のサービスで影響が出てしまい、深刻な問題となることも想定される。
また、通信内容を改ざんすることで、通信相手であるサーバへの攻撃が可能となる場合もある(第2回「リクエストをいじれば脆弱性の仕組みが見えるのだ!」)。特に、従来の携帯向けのWebサイトでは通信内容が改ざんされることを想定していないものも多い。その延長上でサーバ側を構築してしまった場合、攻撃は非常に容易となる。
Copyright © ITmedia, Inc. All Rights Reserved.