ここが危ない!Web2.0のセキュリティ

第10回 RSSのセキュリティ

この記事を読むのに必要な時間:およそ 3 分

RSSリーダーの脆弱性

では,次にRSSリーダーの脆弱性について考えてみます。

RSSフィードがWebサイトの更新情報を配信しているという性格上,RSSリーダーはブラウザを利用したWebアプリケーションとして開発される場合と,IEコンポーネントを利用したアプリケーションやFirefoxのアドオンとして開発される場合があります。

そのため,クロスサイトスクリプティングやSQLインジェクションのように,一般のWebアプリケーションと同じ脆弱性が存在します。HTMLを解釈して出力する機能があればクロスサイトスクリプティングの脆弱性が考えられ,データベースへの登録機能があればSQLインジェクションの脆弱性が考えられます。よってその対策も一般のWebアプリケーションと同様になります。

しかしRSSリーダーの種類によってはクロスサイトスクリプティングの影響範囲が一般のWebアプリケーションとは異なる部分がありますので,クロスサイトスクリプティングについてもう少し見ていきたいと思います。

図3 RSSリーダーの種類

図3 RSSリーダーの種類

所属するドメインに注意

ローカルアプリケーションとして動作するRSSリーダーの仕組みは次のようになります。

  1. 登録されたURLにアクセスし,RSSフィードを読み込む
  2. RSSフィードを解析し,必要な情報を抜き出す
  3. 抜き出した情報を元に,HTMLファイルを作成し保存する
  4. 保存したHTMLファイルを表示する
※RSSリーダーによって細かい違いはあります。たとえばHTMLファイルを動的に生成するものもあります。

ここで問題となるのが,上記の4番でHTMLファイルを表示する際に,どのドメインに属することになるのかということです。

なぜ問題になるのかというと,第2回で,Webの世界ではSame-Originポリシーがセキュリティを保つための重要なポリシーのひとつであると紹介しました。これは,基本的にスクリプトは同じドメイン内にしかアクセスできないというポリシーです。しかし,裏を返せば同じドメインであればスクリプトでアクセスできるということなので,どのドメインに属するかというのが重要なのです。

たとえば,ブラウザでローカルに保存されたファイルを閲覧している場合,マイコンピュータのドメインに属します。そのため,ローカルに保存されたファイルから以下のようなスクリプトを実行することで,ローカルのファイルにアクセスすることができます。

<script language="javascript">
  var req;
  if( window.XMLHttpRequest){
    req = new XMLHttpRequest();
  }else if(window.ActiveXObject){
    try {
      req = new ActiveXObject("MSXML2.XMLHTTP");
    } catch (e) {
      req = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  if (req) {
    req.open('GET', 'file:///C:/WINDOWS/system32/drivers/etc/hosts');
    req.onreadystatechange = function() {
      if (req.readyState == 4) {
        alert(req.responseText);
      }
    }
    req.send(null);
  }
</script>

しかし,このファイルをInternet Explorerで開いた場合には図4のような警告が表示され,ユーザが許可しない限りスクリプトは実行されません。ローカルのファイルを開いた場合,マイコンピュータのドメインでスクリプトが実行されて危険なため,セキュリティ上の制限が掛かっているのです。

図4 Internet Explorerでローカルファイルを開く場合の警告

図4 Internet Explorerでローカルファイルを開く場合の警告

一方,Firefoxで開いた場合には,何の警告もなくスクリプトが実行されてしまいます。この点はFirefoxの方が危険な状態にあります。

かといってInternet Explorerが安全というわけではありません。IEコンポーネントを使ってRSSリーダーを開発した場合には,このような警告は表示されません。安全のために用意されている機能が働かないわけです(もちろんFirefoxのアドオンとして開発されている場合にも,警告は表示されません⁠⁠。そのため,ユーザが気づかないうちにローカルのファイルを盗むことが可能になります。

ローカルアプリケーションによる被害拡大

WebアプリケーションタイプのRSSリーダーにクロスサイトスクリプティングの脆弱性が存在していた場合,被害としては一般のWebアプリケーションと同様で,認証情報の盗難や画面のなりすまし等が起こり得ます。一方,インストールして使用するタイプのRSSリーダーにクロスサイトスクリプティングの脆弱性が存在していた場合には,ローカルコンピュータのファイル盗難といった被害が発生します。


今回はRSSリーダーを例として説明しましたが,RSSリーダーに限らず,ローカルで動作するアプリケーションであれば同様の脆弱性が存在する可能性があります。Web2.0という言葉が出はじめてから,Web(HTTP)を使ったアプリケーションが多く作られています。そのようなソフトウェアを開発し,配布する場合には,脆弱性が存在した場合の影響範囲を見誤らないように注意していただければと思います。

著者プロフィール

福森大喜(ふくもりだいき)

株式会社セキュアスカイ・テクノロジー CTO。大学の授業で作成したプログラムのセキュリティホールを指摘されたのがきっかけでセキュリティの道に進む。セキュリティベンダーでIDS,IRT等に従事した後,Webアプリケーションのセキュリティ検査サービスを立ち上げる。2006年4月に株式会社セキュアスカイ・テクノロジーを設立。

URLhttp://www.securesky-tech.com/