攻撃者が制御するMIMEタイプとgoodguys.com
で配信されるX-Content-Type-Options=nosniff
で任意のファイルをホストできると想定します。 iframeのsrc、リンクのターゲット、またはその他の方法で合理的に最新のブラウザーで使用した場合、どのMIMEタイプがXSSを許可しますか?少なくともtext/html
とimage/svg+xml
は知っていますが、他にもありますか?
編集:MIMEタイプに基づくブラックリストアプローチは良い考えではないことを強調したいと思います。質問の動機は、MIMEホワイトリストを支持する説得力のある議論として興味深い答えを使用できることです。
危険なMIMEタイプの包括的なリストを作成することはできません。
text/html
、text/xml
、image/svg+xml
などをブロックするのは簡単ですが、広く知られておらず、機能する可能性のある不明瞭なレガシーまたはベンダー固有のMIMEタイプが多数あります一部ブラウザ。たとえば、MIMEタイプapplication/vnd.wap.xhtml+xml
は、FirefoxではXMLとして理解されますが、Chromeではトリガーされません。概念実証:
data:application/vnd.wap.xhtml+xml,<x:script xmlns:x="http://www.w3.org/1999/xhtml">alert(1)</x:script>
また、すぐにXSSにつながるわけではないが副作用があるMIMEタイプもあります。たとえば、攻撃者はapplication/x-xpinstall
MIMEタイプのコンテンツを提供することにより、ユーザーをだましてFirefoxプラグインをインストールさせようとする場合があります。 (この攻撃にはいくつかのハードルがありますが、あなたはそれを理解します。)
最後に、サードパーティベンダーも独自のカスタムMIMEタイプを登録する場合があります(application/x-shockwave-flash
、Javaアプレット、埋め込みメディアプレーヤーなどでFlashアプレットを考えてください)。スクリプトコードを実行します。ブラックリストでこれらを追跡するのは困難です。
結論-実際の実装を計画している場合は、危険なMIMEタイプをブラックリストに登録するのではなく、無害なMIMEタイプをホワイトリストに登録する必要があります。