クリックジャッキングって?


こんにちは。宮垣です。

昨今、セキュリティ問題のニュースが世間を賑わすことが多くなってきていますが、
今回は、クリックジャッキング対策について書きたいと思います。

最近では、セキュリティチェックベンダーのチェック項目にも、よく含まれています。

クリックジャッキングとは

「悪意のあるサイト上の特定箇所をクリックさせ、別サイトの設定情報を変更させる」

攻撃手法の事です。

攻撃者は、悪意のあるサイトにiframeで別サイトを埋め込み、
それを視覚的に見えないよう工夫することで、ユーザーが気づかないうちに、
別サイトの設定情報を変更することを期待しています。

仮に、その別サイトが個人情報の公開・非公開を設定できるものであった場合、
悪意のあるサイトで公開状態にさせられ、攻撃者にその個人情報が取得されてしまいます。

図1:ユーザーが攻撃を受けるまで遷移図
Clickjacking
--------------------------------------------------------------------------------------------------
※前提:サイトAには、クリックのみで設定情報を変更できる項目がある

  1. ユーザーAが、サイトAにログインする。
  2. ユーザーAが、悪意を持つユーザーが準備したサイトBを閲覧する
    (※そのサイトBでは、特定箇所のクリックを促す表記がしている)
  3. ユーザーAが、サイトBの特定箇所のクリックする。
  4. 3の操作により、意図せずサイトAの設定情報を変更してしまう。

--------------------------------------------------------------------------------------------------

クリックジャッキング対策

対策方法として、Web サイトから返されるHTTP レスポンスヘッダに、
「X-Frame-Options」 ヘッダを含めておくことで、ブラウザがこの値を解釈し、
クリックジャッキングを防止する(iframe内の表示を制御)手法があります。

ヘッダの値としては、

  • DENY:フレーム内のページ表示を全ドメインで禁止
  • SAMEORIGIN:フレーム内のページ表示を同一ドメイン内のみ許可
  • ALLOW-FROM uri:フレーム内のページ表示を指定されたドメインに限り許可

があり、用途に応じて設定が可能です。

サーバー側(Apache)で対応する場合

httpd.confに以下の内容を記載する。

※ mod_headersモジュールが有効になっていること。
※ virtualhost単位でも設定が可能。

プログラム側で対応する場合

・PHPの場合
header()でレスポンスヘッダに出力できます。

・Javaの場合

javaのfilter処理での対応も可能でowaspfilterのサンプルも公開されています。

対策後のブラウザの挙動

図2:ブラウザ側でのエラー画面
※DENY設定のページをiframeで読み込んだ場合

Browsercompare

まとめ

それほど多くはないと思いますが、iframeで呼び出されることを前提としたサイトであった場合、
この設定を行うと、呼び出し先から参照できなくなりますので、設定前には十分な現状把握が重要です。

2年前のIPAのレポートによると、この対策が実施されているサイトは、
全体の約5%程度しかない状況であったため、この記事が、対策検討の機会につながればと思います。

また、IPAのサイトにもクリックジャッキングの詳細や対策が紹介されていますので、詳細を知りたい方はこちらをご覧ください。
IPAテクニカルウォッチ 知らぬ間にプライバシー情報の非公開設定を公開設定に変更されてしまうなどの『クリックジャッキング』に関するレポート


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です