
Flash、PDF、Silverlightを使用したコンテンツハイジャッキングの概念実証
AGPLのもとで公開されています(詳細はLICENSEを参照)。
このプロジェクトは、以下の概念実証(PoC)を提供するために使用できます。
注:.XAPファイルは他の任意の拡張子に名前を変更できますが、クロスドメインでの読み込みはできなくなります。Silverlightは指定されたURLに基づいてファイル拡張子を判別し、.XAPでない場合はそれを無視するようです。これは、Webサイトがユーザーに実際のファイル名の後に「;」または「/」を使用して「.XAP」拡張子を追加することを許可している場合に、依然として悪用される可能性があります。
注:.XAPファイルは他の任意の拡張子に名前を変更できますが、クロスドメインでの読み込みはできなくなります。Silverlightは指定されたURLに基づいてファイル拡張子を判別し、.XAPでない場合はそれを無視するようです。これは、Webサイトがユーザーに実際のファイル名の後に「;」または「/」を使用して「.XAP」拡張子を追加することを許可している場合に、依然として悪用される可能性があります。
注:Silverlightが.XAPファイルをクロスドメインで要求する場合、コンテンツタイプは application/x-silverlight-app である必要があります。
注:PDFファイルはAdobe Readerビューアでのみ使用できます(ChromeやFirefoxの内蔵PDFビューアでは機能しません)。
注:静的コンテンツまたは一般にアクセス可能なデータを読み取ることは、問題とは見なされません。アドバイザリから偽陽性の結果を削除することが重要です。 "Access-Control-Allow-Origin" ヘッダーでアスタリスク("*")文字のみを使用することは問題ではないことに注意してください。
使用例:
アップロードを許可するファイルタイプは、ビジネス機能に必要なものだけに制限する必要があります。
アプリケーションは、サーバーにアップロードされたすべてのファイルに対してフィルタリングとコンテンツチェックを実行する必要があります。ファイルは、他のユーザーが利用できるようになる前に、徹底的にスキャンおよび検証される必要があります。疑わしい場合は、そのファイルは破棄されるべきです。
静的ファイルの応答に「Content-Disposition: Attachment」および「X-Content-Type-Options: nosniff」ヘッダーを追加すると、FlashまたはPDFベースのクロスサイトコンテンツハイジャッキング攻撃からWebサイトを保護できます。この方法は、ファイルのダウンロードを扱うすべてのモジュールにおいて、ユーザーがダウンロードする必要があるすべてのファイルに対して実行することをお勧めします。この方法は、Silverlightまたは同様のオブジェクトを使用した攻撃に対してWebサイトを完全に保護するものではありませんが、特にPDFファイルのアップロードが許可されている場合に、Adobe FlashおよびPDFオブジェクトの使用リスクを軽減できます。
Flash/PDF(crossdomain.xml)またはSilverlight(clientaccesspolicy.xml)のクロスドメインポリシーファイルは、使用されておらず、FlashまたはSilverlightアプリケーションがWebサイトと通信するためのビジネス要件がない場合は、削除する必要があります。
クロスドメインアクセスは、信頼され、アクセスを必要とする最小限のドメインセットに制限する必要があります。アクセスポリシーは、特に「uri」属性の値でワイルドカード文字が使用されている場合、弱いまたは安全でないと見なされます。
Silverlightアプリケーションに使用される「crossdomain.xml」ファイルは、ドメイン属性でワイルドカード("*")文字のみを受け入れることができるため、弱いと見なされるべきです。
corssdomain.xmlおよびclientaccesspolicy.xmlファイルでは、ブラウザキャッシュを無効にする必要があります。これにより、Webサイトは必要に応じてファイルを簡単に更新したり、Webサービスへのアクセスを制限したりできます。クライアントアクセスポリシーファイルがチェックされると、ブラウザセッション中はその効果が持続するため、キャッシュ無効化がエンドユーザーに与える影響は最小限です。これは、ターゲットWebサイトのコンテンツとポリシーファイルのセキュリティおよび複雑さに基づいて、低リスクまたは情報提供レベルのリスク問題として提起できます。
CORSヘッダーは、静的または一般にアクセス可能なデータに対してのみ有効になるようにレビューされるべきです。そうでない場合、「Access-Control-Allow-Origin」ヘッダーには承認されたアドレスのみを含める必要があります。「Access-Control-Allow-Credentials」などの他のCORSヘッダーは、必要な場合にのみ使用する必要があります。「Access-Control-Allow-Methods」や「Access-Control-Allow-Headers」などのCORSヘッダー内の項目は、不要な場合はレビューして削除する必要があります。
注:「Referer」ヘッダーの使用は解決策にはなりません。このヘッダーは、例えばAdobe ReaderとPDFを使用してPOSTリクエストを送信することで設定できるためです(「objects」ディレクトリ内の「xfa-manual-ContentHijacking.pdf」ファイルを参照)。更新:「referer」ヘッダーの設定はAdobeによって対処されています。ただし、そのバイパスを見つけない限りは。
最新の更新情報やヘルプについては、プロジェクトページを参照してください:https://github.com/nccgroup/CrossSiteContentHijacking
NCC GroupのSoroush Dalili(@irsdl)
JPGファイルをアップロードするだけでもクロスドメインデータハイジャッキング(クライアントサイド攻撃)につながる可能性があります! https://soroush.secproject.com/blog/2014/05/even-uploading-a-jpg-file-can-lead-to-cross-domain-data-hijacking-client-side-attack/
複数のPDF脆弱性 - ステロイド上のテキストと画像 http://insert-script.blogspot.co.at/2014/12/multiple-pdf-vulnerabilites-text-and.html
Silverlightを使用したHTTP通信とセキュリティ http://msdn.microsoft.com/en-gb/library/cc838250(v=vs.95).aspx
Silverlightのクロスドメインおよびクライアントアクセスポリシーファイルの説明 http://www.devtoolshed.com/explanation-cross-domain-and-client-access-policy-files-silverlight
クロスドメインポリシーファイル仕様 http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html
HTTPストリーミング用のcrossdomain.xmlファイルの設定 http://www.adobe.com/devnet/adobe-media-server/articles/cross-domain-xml-for-streaming.html
google.comでのCVE-2011-2461の悪用 http://blog.mindedsecurity.com/2015/03/exploiting-cve-2011-2461-on-googlecom.html