「PCでは見えないはず」に頼ることの危険性再考・ケータイWebのセキュリティ(1)(2/3 ページ)

» 2009年11月17日 00時00分 公開
[徳丸浩京セラコミュニケーションシステム株式会社]

HTMLソースの表示機能がないことへの過信

 ケータイブラウザにはHTMLのソースを表示する機能がありません。このため、PCからはできる攻撃の一部がケータイブラウザからはできない場合があります。例えば、ケータイブラウザではhiddenフィールドの値を参照することができないので、その値を書き換えて攻撃することもできません。同様に、ラジオボタンやSELECT要素の値を参照したり、書き換えたりすることもできません。

 ケータイブラウザではHTMLソースを表示できないことを理由として、ケータイWebは、PC用の一般サイトよりも安全性が高いと思っている方がいますが、これは誤解であり、少なくとも過信はしない方がいいようです。その理由は、本来見えないはずのHTMLソースが閲覧できる場合があるからです。それは以下のような場合です。

PCからの閲覧を制限していない場合

 ケータイブラウザからHTMLソースを閲覧できなくても、そのWebサイトをPCから閲覧できれば、HTMLソースの表示は容易です。前述した携帯電話事業者のゲートウェイIPアドレスにより閲覧制限をかけている場合は閲覧できませんが、この方法は運用が面倒なため、UserAgentというHTTPリクエストヘッダ中の機種情報を用いて、閲覧制限しているサイトもあります。この場合は、PCからUserAgentを書き換えて閲覧することにより、当該のサイトを表示させることができ、HTMLソースも閲覧が可能です。

検索エンジンのキャッシュを用いる方法

 最近はケータイでもGoogleなどの検索エンジンの利用が広がってきました。携帯電話事業者の公式メニューに掲載されていないサイトにとって、SEO(Search Engine Optimization)は重要であるため、Googleなどの検索サイトが検索用インデックスを作成できるように、IPアドレス制限を解除することが行われます。

 しかし、検索エンジンには「キャッシュ」と呼ばれる機能があるため、この機能を利用してHTMLソースが閲覧できる可能性があります。以下に、その例をお見せしましょう。

 実験用にWebサイトを作成して、PCからの閲覧を拒否する設定をしました。この状態でPCから閲覧すると、図2のように、「Forbidden」というエラーメッセージが表示されます。

図2 図2

 次に、このサイトをGoogleに登録した後、PCから適当なキーワードで検索すると、図3の検索結果が表示されます。

図3 図3

 ここで、図3のキャッシュというリンクをたどると、図4のようにPCからサイトの内容を閲覧できます。

図4 図4

 さらに、ブラウザの機能によりリスト1のようなHTMLソース(抜粋)が得られます。

<form action="/cgi-bin/epx0530.cgi" method="POST">
   名前:<input type="text" name="name"><br>
   メールアドレス:<input type="text" name="email"><br>
 <input type="submit" value="実行">
 <input type="hidden" name="usertype" value="normal">
 <!-- <input type="hidden" name="usertype" value="admin"> -->
</form>
リスト1 検索サイトのキャッシュから取り出したHTMLソース

 ご覧のように、ACTIONのURLやhiddenフィールド、コメントアウトした内容などの情報が閲覧できています。特に、権限を示すらしいusertypeというhiddenフィールドがあることや、コメントアウトされた内容を手掛かりとして、上位の権限を得られる可能性があることが分かります。

クロスサイトスクリプティング脆弱性の悪用

 このほか、クロスサイトスクリプティング(XSS)脆弱性が当該サイトに存在すると、HTMLソースの一部あるいは全部が閲覧される可能性があります。特に、ケータイのJavaScriptが利用できるようになると、サイトの1個所でもXSS脆弱性があれば、任意のページのHTMLを閲覧できるようになります。

 これまで見てきたように、ケータイWebのHTMLは外部から参照できないと思われていますが、実はさまざまな手法により閲覧できる場合があります。そして、いったんHTMLソースからhiddenフィールドの内容などの情報が得られると、ケータイを用いて当該サイトへの攻撃ができるのです。

【関連記事】
クロスサイトスクリプティング対策の基本
http://www.atmarkit.co.jp/fsecurity/special/30xss/xss01.html
星野君のWebアプリほのぼの改造計画 連載インデックス
http://www.atmarkit.co.jp/fsecurity/index/index_hoshino.html

契約者固有IDの存在

 ケータイブラウザからのHTTPリクエストには、契約者固有IDという一意のID番号が付与されています。

 契約者固有IDは、もともとはケータイコンテンツの課金認証などに用いられてきたもので、かつては、公式メニューに掲載されたコンテンツ(公式コンテンツ)にのみ送信されていました 。しかし、近年では、公式サイトでないサイト(いわゆる勝手サイト)でも送信される契約者固有IDが提供されており、認証などに利用されています。

 図5に契約者固有IDの一種である、iモードIDの取得方法を示します。図のように、URLにguid=ONを指定することにより、リクエストヘッダにiモードIDと呼ばれる7桁の識別子が付与されます。

図5 リクエストヘッダに含まれるiモードID 図5 リクエストヘッダに含まれるiモードID

 契約者固有IDは、1つの端末からすべてのサイトに対して同一の値が送出されるため、プライバシー上の問題とセキュリティ上の問題があります。特に、契約者固有IDのみを利用する認証(かんたんログイン)は、近年広く利用されているものの、実装方法や運用方法によってはセキュリティ上の問題が生じます。これに関しては、次回詳しく説明します。

ケータイWebへの「手軽さを求める要求」

 これはケータイブラウザの機能とは直接関係はありませんが、ケータイ向けサイトには、通常のサイトよりも手軽に利用したいというユーザーからの「圧力」が強い傾向にあります。例えば、PC向けのサイトであれば英数字や記号を交えた8桁以上のパスワードを要求することは普通のことですが、ケータイWebでは、パスワード自体の省略や、数字4桁の「暗証番号」で代替する場合が珍しくありません。これは、ケータイWebに求められる「手軽さ」に対して、セキュリティ面で妥協した結果といえます。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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