
James Kettleの研究に基づく(James Kettle)
CORStestは、Cross-Origin Resource Sharing(CORS)の設定ミスを見つけるためのquick & dirtyなPython 3ツールです。入力として、ドメイン名またはURLのリストを含むテキストファイルを受け取ります。現在、特定のOriginリクエストヘッダーを送信し、Access-Control-Allow-Originレスポンスヘッダーをチェックすることで、以下の潜在的な脆弱性を検出します:
nullオリジンを強制することで、任意のサイトがアクセスできるこれらの脆弱性/設定ミスはコンテキストに依存することに注意してください。ほとんどのシナリオでは、Access-Control-Allow-Credentials headerが存在する場合にのみ攻撃者に悪用される可能性があります(-qフラグを参照)。
usage: corstest.py [arguments] infile
positional arguments:
infile File with domain or URL list
optional arguments:
-h, --help show this help message and exit
-c name=value Send cookie with all requests
-p processes multiprocessing (default: 32)
-s always force ssl/tls requests
-q quiet, allow-credentials only
-v produce a more verbose output
Alexaトップ750サイト(Access-Control-Allow-Credentialsあり)の設定ミスを検出するCORStestの使用例:

このCORStestをAlexa トップ100万サイト に対して実行した結果は以下の通りです:

絶対数はかなり低いことに注意してください。テストした1,000,000のウェブサイトのうち、メインページでCORSが有効であり、設定ミスの分析が可能だったのはわずか3%だったためです。このテストは、まともな回線(DSL)で約14時間かかりました。高速なインターネット接続をお持ちの場合は、並列プロセス数を -p50 以上に増やしてみてください。
CORS設定ミスの技術的な背景については、こちらの優れたブログ記事を読むか、こちらのトークをご覧ください。CORStestを用いた大規模なCORS設定ミスの評価はこちらに文書化されています。