SANS Institute Security Blogs

UI Spoofing Safari on the iPhoneにおいてセキュリティ研究者Nitesh Dhanjani氏がiPhoneのブラウザの動作が詐欺サイトの構築に悪用される可能性があることを指摘している。いつどのようにこの問題に対処するかはわからないということだが、Appleもこの問題については認識しており改善を検討しているようだ。

iPhoneのブラウザでWebページを表示させた場合、最初はアドレスバーが表示されているがスクロールすると消える仕組みになっている。これはモバイルデバイスという限られたサイズのスクリーンを最大限に活用するための機能。この機能はJavaScriptから制御することもでき、自動的にアドレスバーを隠すようにすることもできる。

デスクトップのブラウザはこうした動きをしないようになっている。通常、アドレスバーのテキストの内容を変更することはできないし、アドレスバーを隠すといったこともできないようになっている。この部分の変更を許可すると、悪意あるサイトに悪用され、閲覧しているURLとは違うURLを表示させて詐欺サイトとして活用される可能性があるからだ。

わかりやすいデモがhttp://www.dhanjani.com/iphone-safari-ui-spoofing/に掲載されている。このサイトをiPhoneのSafariで閲覧すると、一見普通のWebページが表示される。しかし、ページをスクロールしてみると、表示されているアドレスバーのさらに上に、本来のアドレスバーが隠れていることを確認できる。この機能を悪用されると、ユーザは別のサイトを本来のサイトだと信じこんで誤った操作を実施してしまう可能性がある。

デモサイト読み込み中

表示されたでもサイト - 一見すると普通のサイトに見える

しかしスクロールすると、さらに上部にアドレスバーがあることを確認できる

またiPhoneの提供している一貫したネイティブアプリUIも、これと同じような問題を抱えているという。iPhoneではネイティブアプリはフルスクリーンで動作する。このため、アプリ内でWebページを表示したいと考えた場合には、iPhone Safariを呼び出すのではなく、HTMLレンダリング用に提供されているクラスUIWebViewを利用することになる。問題はUIWebViewがURLを表示する仕様にはなっていないという点にある。つまり、ネイティブアプリから指定したURLのコンテンツをレンダリングしている場合には、iPhone Safariの場合と違ってユーザはそもそもアクセス先となるURLを判断できない。

Nitesh Dhanjani氏はこうした問題に対して、次の対策を提案している。

  • iPhone Safariにおいて任意のWebアプリがスクロールしてアドレスバーを隠すことができるという操作を制限した方がいいのではないか。
  • UIWebViewを使う場合にはどのサイトのデータかを示すようにアプリを作成した方がいいのではないか。

モバイルアプリにおいてはスクリーンサイズがきわめて重要な要素であり、現在iPhone Safariが実装している方法はその観点から言えば妥当なものといえる。Nitesh Dhanjani氏はそうした点も理解しており、Appleがより優れた解決方法を発見できるのであれば喜ばしいことだと説明している。

今のところユーザが実施できる対策としては、ほかのWebブラウザにおける対処方法と同じように、ユーザ名やパスワードの入力であるなど、なんらかの個人情報に関するデータの入力を求められる場合には、その表示されているアドレスバーが本物であるかスクロールして確認するとともに、URLをよくチェックする必要があるといえる。