MacOSのChromeで、XSS Auditorを無効にする方法(2016年3月以降)

XSSの演習用に、Google ChromeのXSSフィルタ機能 XSS Auditorを無効にする方法を紹介します。

その方法

次のようにターミナルで入力することで、XSS Auditorを無効にしたChromeを起動することが出来ます。

open -na Google\ Chrome --args --disable-xss-auditor --user-data-dir="/tmp/chrome"

この方法では、新規アカウントでChromeを起動するので、通常使用しているアカウントの情報が漏れません。

またこの方法では、多重起動をしますので、通常使用するアカウントでChromeを起動したままで、別ウィンドウを開きます。

/tmp/chromeの部分は、新規アカウントのディレクトリです。適当なフォルダを設定してください。/tmpディレクトリ以下を指定するとMacOSの再起動時にクリアされます。

概要

体系的に学ぶ安全なWebアプリケーションの作り方」という本で、XSSの動作を演習することが出来ます。しかし、最近のGoogle ChromeやSafariでは「XSS Auditor」というXSSを防止する機能が働き、演習を進めることが出来ません。

Chrome で XSS Auditorを閲覧者側から無効にするには、起動時のオプションを追加するしかありません。指定するタブのみ無効にしたり、起動中に「設定」メニューから無効にすることは現在のところ出来ません。オプションは、–args引数に続いて指定します。–disable-xss-auditorというオプションでXSS auditorを無効にできます。

また、Chrome 49 (2016/3)以降では、XSS Auditorを無効にする場合は、使用するユーザディレクトリを起動オプションに明示しなくてはいけなくなりました。ユーザディレクトリは、–user-data-dirで指定します。

方法詳説

そういうわけで、まずはターミナルを開きます。

ターミナルから単純にChromeを起動するには次のようにします。

open -a Google\ Chrome

このコマンドは、アプリケーションディレクトリ中のChrome(/Applications/Google Chrome)を起動するという意味です。

さらに、多重起動を許可するため、openにnオプションをつけます。

open -na Google\ Chrome

次に、オプションを指定します。

open -na Google\ Chrome --args --disable-xss-auditor --user-data-dir="/tmp/chrome"

これで冒頭で紹介したコマンドになりました。

動作テスト

試しに、XSSで利用者のセッションIDを攻撃者にメールで通知する演習を実行しましたが、正しくXSSが実行されメールを受信することができました。(ローカル環境です。)

体系的に学ぶ 安全なWebアプリケーションの作り方」という本は、PHPでサイトを作っているけれどセキュリティ対策って何すればいいの?とりあえずhtmlspecialcharsで出力しとけばよいんでしょ?別に盗まれて困る情報を扱ってないなら気にしなくていいんでしょ?などと思っている方にお勧めの本です。

わかりやすく解説してあり、すらすら読めてしまいます。

これまでWeb上の情報を調べて対策をしてきましたが、この本で「体系的に学」んでからは、「ここまで対策しておけばここまでは防げる」ということがはっきり分かって安心できるようになりました。

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

以上、MacOSのChromeで、XSS Auditorを無効にする方法(2016年3月以降)でした。