ホームページの脆弱性診断 その2
前回は簡単・無料で脆弱性診断ができるツール「OWASP ZAP」をご紹介しました。
※前回記事はこちら
今回はお仕事で何サイトか簡易診断した際に、よく検出された脆弱性について、その説明と対策方法をご紹介します。
その前に、OWASP ZAP での診断実行についてですが、今回はクイックスタートにて検査しました。
ブラウザと連動させ、コンテキストを追加して・・・
っていう、本格的な使い方については、私もまだ数回しか行ったことがないため、
わかりやすく説明できるようになってからまた記事を書きます。
OWASP ZAPを起動します
※結構時間かかりますが、フリーズではありません。気長に待ちましょう。
とりあえず、「現在のタイムスタンプで・・・」の選択でOKです。
右上項目のURL欄に診断するサイトのURLを入力します。
※くれぐれも関係のないサイトへのアタック(攻撃)には使わないでくださいね。
当サイトの脆弱性については、対策後に記事にします。
よく検出される脆弱性
今まで診断したサイトでほぼ確実に検出された脆弱性について、ご紹介します。
X-Frame-Optionsヘッダーの欠如
リスク:Medium
説明:「クリックジャッキング」攻撃を防止するためのX-Frame-OptionsヘッダーがHTTPレスポンスに含まれていません。
対策:.htaccess へ Header always append X-Frame-Options SAMEORIGIN(同一ドメイン内からのiframeのみ許可)もしくは、Header always append X-Frame-Options DENY を記載することで対策可能です。
X-Content-Type-Optionsヘッダの設定ミス
リスク:Low
説明:ウェブブラウザの中には、HTML内にContent-Typeとして指定してあった場合でも、HTTPレスポンス全体を検査(sniffing)してコンテンツタイプを独自に判断し、「Content-Type」を無視した動作を行うものが存在します。このsniffingを防止するのが「X-Content-Type-Options」です。
対策:.htaccess へ Header always set X-Content-Type-Options “nosniff” を記載することで対策可能です。
WebブラウザのXSS防止機能が有効になっていません。
リスク:Low
説明:ウェブブラウザのXSS防止機能が有効になっていない、またはウェブサーバーからのHTTPレスポンスヘッダ ‘X-XSS-Protection’ が無効になっています。
対策:.htaccess へ Header always set X-XSS-Protection “1; mode=block” を記載することで対策可能です。
Cross-Domain JavaScript Source File Inclusion
リスク:Low
説明:別ドメインから1つ以上のスクリプトファイルが含まれています。
対策:検出されたコードを確認し、問題ないコード(GoogleAnalyticsのトラッキングコード等)の場合は対策不要です。
不要なスクリプトコードが検出される場合は、念のために削除しておいた方がよいです。
まとめ
上記の対策の際に追加したコードは下記です。
1 2 3 4 5 |
<ifModule mod_headers.c> Header always append X-Frame-Options SAMEORIGIN Header always set X-Content-Type-Options "nosniff" Header always set X-XSS-Protection "1; mode=block" </IfModule> |
もし同じ脆弱性が検出される場合は、参考にしていただければと思います。
次回は、他に検出された脆弱性と対策をご紹介します。
特にMovableTypeサイトの脆弱性は少し厄介でした。