実演動画あり!クリックジャッキングとは

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

クリックジャッキングとは、利用者が一見しただけでは分からないようにWebページを重ねて表示して巧みにクリック操作を誘導することで、重ねて見えないようにしてある問題のあるWebアプリケーションに対して、ユーザーの意図していない処理を実行させる行為のことを指します。

このような行為を許してしまう問題のことをクリックジャッキング脆弱性と呼び、この問題に対してクリックを促す攻撃のことをクリックジャッキング攻撃といいます。なお、クリックジャッキング脆弱性は受動的攻撃に分類されるため、攻撃者は罠を仕掛けて被害者がクリックするのを待ちます。

クリックジャッキング攻撃の仕組み

クリックジャッキング攻撃の流れは、別の記事で紹介したクロスサイト・リクエスト・フォージェリ攻撃とほとんど同じです。

  • クリックジャッキング攻撃の概要

クリックジャッキング攻撃の流れ

  1. 被害者が問題のあるWebサイトにログインします。
  2. ログイン状態を維持したまま、別のWebサイトを閲覧します。
  3. 攻撃者が用意した罠のWebページを閲覧します。この時に巧妙にクリックを促す表示をします。
  4. 被害者が気付かずにクリックすることで、問題のあるWebサイトにセッション情報が付与されたリクエストが送信されます。
  5. 問題のあるWebアプリケーションでは、被害者からのHTTPリクエストを受理するため、利用者の不利益となる処理が完了します。

概要だけを見るとクロスサイト・リクエスト・フォージェリ攻撃とほぼ同様に見えますが、問題が発生する原因や攻撃が成立する条件などが異なっています。

クリックジャッキング攻撃が成立する条件

  • クリック操作のみだけで完遂できる処理がある
  • Cookieでセッション管理を行なっている

被害事例

クリックジャッキング脆弱性が広く認知された2009年ごろにTwitterやFacebookといった世界的に有名なWebサービス上において攻撃が確認されました。以下は確認されている有名な事例となります。

  • Twitterでの事例

2009年1月ごろ、「Don’t Click」という簡易的なボタンをクリックしたTwtterユーザーが意図しない投稿をしてしまうという事象が相次ぎました。このことで具体的な被害を受けたユーザーはいませんでしたが、この悪ふざけの原因となったのはクリックジャッキングの問題です。

  • Facebookでの事例

2009年10月ごろFaccebookとは一見無関係に見える罠ページでクリックを行なったユーザーが、意図せずに良いねボタンを押しているという現象がおきました。これはFacebookにクリックジャッキング脆弱性があったことを悪用して行われていました。

脆弱性の解説動画

クリックジャッキングが起こる原因

クリックジャッキングは、前述した攻撃が成立する条件に加えて、frameタグやiframeタグを重ねて表示することを許容しているWebサイトで発生します。なお、実際の攻撃の際には以下のようなイメージで巧妙にクリックを誘導します。

  • 表示される罠ページの概要

クリックジャッキング攻撃への対策手法

クリックジャッキング攻撃は、前述した通り、frameタグやiframeタグを重ねて表示できることが原因で発生します。そのため、該当タグを用いて重ねて表示できないようにすることで攻撃を防止することができます。

必須対策

以下のいずれかのHTTPレスポンスヘッダを付与します。

1. X-Frame-Optionsヘッダを付与する

以下のようにX-Frame-Optionsヘッダを出力します。この設定をWebアプリケーション全体で行うことでフレームタグの表示が抑止できるため、クリックジャッキング攻撃を防止することが可能になります。

【設定例】

X-Frame-Options: DENY
設定値設定内容
DENYフレームタグの表示を禁止する
SAMEORIGIN同一オリジン内のWebページであればフレームを通して表示可能

2. Content-Security-Policyヘッダを付与する

以下のようにContent-Security-Policy(CSP)ヘッダを出力します。この設定もフレームタグの表示を抑止するため、クリックジャッキング攻撃を防止できます。

【設定例】

Content-Security-Policy: default-src 'self’

なお、CSPヘッダはフレームタグだけではなく画像データやスクリプトファイルなど、設定したWebページで読み込まれる全てのリソースに対してポリシーを設定できます。そのため、外部からリソースを読み込みたい場合には、別途、ポリシーの設定が必要になるため、詳細については以下のリンク先をご覧ください。

【参考:Content Security Policy (CSP)】

https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP

推奨対策

抜本的な対策にはなりませんが、重要な処理を行う画面ではパスワードの再入力などを促すことで、クロスサイト・リクエスト・フォージェリ(CSRF)対策と同様に一定の効果が見込めます。可能であればWebサイトの仕様に併せて、上記の実装を検討するのが望ましいと言えます。

クロスサイト・リクエスト・フォージェリ(CSRF)について知りたい方はこちらもぜひご参照ください。

まずは手軽にツールで脆弱性診断

上述の対策手法が重要となる一方で、脆弱性が混入されていないかを検知する事も重要となります。そのためには脆弱性診断を受診する必要があり、クリックジャッキングの脆弱性についても脆弱性診断を通じて発見する事が出来ます。

脆弱性診断とは何かについて詳しく知りたい⽅は脆弱性診断とは(エンジニア向け)脆弱性診断とは(⾮エンジニア向け)もぜひご参照ください。

脆弱性診断ツール「Securify Scan」では、クリックジャッキングの脆弱性検知も対応しております。脆弱性検知やセキュリティレベルを強化したい企業様はぜひ弊社の脆弱性診断ツール「Securify Scan」を活用ください。

無償でのトライアル実施も行っておりますので、お気軽にお問い合わせください。

Webアプリケーションの
継続的セキュリティを簡単に実現
Securify

ブログ一覧へ戻る

サービスに関するご質問・ご相談など
お気軽にお問い合わせください