検索
連載

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

“特殊だ”と形容されることの多い日本の携帯電話向けWebサイト。そこには、さまざまな思い込みや性善説の上しか成り立たないセキュリティが横行しています。本連載は、ケータイWebの特殊性をていねいに解説し、正しいケータイWebセキュリティのあるべき姿を考えます(編集部)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

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.

ページトップに戻る