いつも見ているWebページをクリックしただけなのに、突然見知らぬサイトに移動したり、パソコンやスマホがおかしな動作を始めたり…。こんな困った事象を引き起こすのが「クリックジャッキング」です。
この記事ではクリックジャッキングが起こる仕組みや、その対策方法について説明しています。過去には著名なSNSにてクリックジャッキングの被害が続出しました。ここでWebの利用や提供における環境設定をいま一度確認してみませんか。
クリックジャッキングとは
クリックジャッキングとは、Webページに透明なページをかぶせて、ユーザーを意図しない操作に誘導する行為です。「クリックジャッキング」の名のとおり、クリック操作をジャッキング(乗っ取り/奪取)してユーザーに不利益をもたらすため、サイバー攻撃の一つの手法に数えられています。
クリックジャッキングでは、正規のページでクリック操作が必要な要素(リンクやボタン)のある位置に、まったく別のページの要素をかぶせます。ユーザーは正規のページで操作したつもりが、実はそこに重ねたサイトのリンクやボタンをクリックすることになるのです。そこで不正なページに遷移したり、勝手なSNS操作が行われるといった被害を受けてしまいます。
クリックジャッキングの手口
クリックジャッキングを招く不正なページは、Webページ作成でごく普通に用いられるプログラム言語の「HTML」と「CSS」を使って仕掛けられます。
HTMLタグの「iframe」を使うと、Webページ内に特定のページを表示するスペースを設置できます。通常はページの一部分に表示させるものですが、クリックジャッキングを狙う攻撃者は画面いっぱいに表示させて不正なページで一面を覆います。その後、CSSで不正ページを見えなくする透過加工をして、ユーザーに存在を気づかせないようにします。
CSSは時間経過で見た目を変える設定もできるため、アクセスしてからしばらくした後、誤クリックを誘発させる手法もクリックジャッキングに近いといえます。たとえば、サイトにアクセスした直後は何も表示させず、後から広告を表示する手法がそれにあたります。
クリックジャッキングの影響
クリックジャッキングで引き起こされるものとして、次のようなものがあります。
- 意図しないWeb操作
- 自動プログラムの発動
ユーザーは意図しないクリック操作により、本人の意思によらず特定のWebサイトやサービスに誘導されたり、自動プログラムを発動させてしまうことがあります。その結果、物的、財産的、またプライバシーの侵害などの被害をこうむります。具体的な被害例として、以下があげられます。
- フィッシングサイトに誘導
- マルウェア感染
- 非公開情報の漏えい
- SNSの強制操作(プロフィール変更、アカウントフォロー、リンクシェアの投稿)
- 意図しない物品の強制購入
- ブラウザのウインドウを無限に開け続ける動作
- Webカメラやマイクの作動
- CD-ROMドライブの開閉動作を続けてハードウェア破損を誘発
- JavaScriptのループ実行で処理リソースを枯渇させ動作不能に
クリックジャッキングの対策
クリックジャッキング対策には、ユーザーでもできるものと、サービス管理者で実施可能なものがあります。
ユーザーでできる対策
一般ユーザーができるクリックジャッキング対策は、Webブラウザの設定です。
Webブラウザでの対策
そもそもブラウザ上でしかクリックジャッキングは発現しないので、ブラウザの設定や脆弱性の排除により、一定の対策は可能です。具体的にはブラウザにJavaScriptを無効にする設定をしたり、常に最新版のブラウザを利用することがあげられます。後者に関して、古いバージョンのブラウザでは、サイト側で設定したセキュリティ対策が機能しないことがあり、結局不正サイトの出現を許す可能性があるからです。
しかし、この2つだけではクリックジャッキングを完全に防ぐことはできません。なぜならクリックジャッキングはCSSだけでも実行可能だからです。そうなると、しっかりセキュリティ対策をしていて、信頼が置けるサイトしか利用しないのが一番の対策になってしまいます。
サイト管理者で実施すべき対策
サイト訪問者に安心して利用してもらえるよう、管理者側でクリックジャッキング対策を実施しましょう。
ここではクリックジャッキング対策として、3つの方法を紹介します。簡単に説明すると、WebサーバーにHTTPレスポンスヘッダーの設定をしたり、Java Scriptで不正サイトを表示させない仕組みにします。
やや専門的になりますので、運用管理実務に経験やご興味がある方にご一読をおすすめします。
HTTPレスポンスヘッダーの設定
ユーザーリクエストに対し、Webサーバーから返される情報のなかに「HTTPレスポンスヘッダー」があります。このHTTPレスポンスヘッダーに特定のパラメータを挿入することで、セキュリティを向上させることができます。
X-Frame-Options
X-Frame-OptionsをHTTPレスポンスヘッダーに入れて送信する設定にして、他サイトからのframe要素やiframe要素によるコンテンツ表示を制限します。この設定方法は2つあります。
- Webサーバーの設定ファイル内に記述
- Webプログラムで指定
それぞれの記述例は次のとおりです。
- Apacheサーバーの場合
「httpd.conf」内に以下を記述
Header always append X-Frame-Options ※ - PHPの場合
header(‘X-Frame-Options: ※’);
※に入れられる値は3種類あり、それぞれの効果は以下のとおりです。
- DENY :すべてのページでフレーム内の表示をしない
- SAMEORIGIN :同じドメインのページのみフレーム内の表示を許可
- ALLOW-FROM uri :指定ドメインのページに限ってフレーム内の表示を許可
Content Security Policy
Content Security Policy(CSP)は「W3C(Webの標準化団体)」が勧告する規格で、クリックジャッキング対策のほか、さまざまな脅威による被害リスクを低減する仕組みです。CSPを利用することで、サーバー側からブラウザに対し動作可能なスクリプトの制限ができます。
具体的には、CSPにおける「frame-ancestors」設定にて、frame要素やiframe要素によるコンテンツ表示を制限できます。CSPでは表示を許可するサイトを複数指定できるなど、X-Frame-Optionsより細かい設定が可能です。
なお、CSPは一部の古いブラウザには適用されないため注意しましょう。
JavaScriptのWindowオブジェクトでの対策
JavaScriptで他のページを表示できない設定にして、クリックジャッキングに対抗する方法もあります。簡単にいうと、自社サイトのページを必ず一番手前に表示させるようにすれば、iframe要素を使って別のページを重ねて表示させることが困難になります。
具体的にはJavaScriptの「Windowオブジェクト」を用いて、「window.self(このコードが入っているページの位置)」を「window.top(最前面に表示)」にするよう指定し、自社ページを最前面に表示させます。
ただし、ユーザーのブラウザでJavaScriptが有効でないと意味がないうえ、この方法をすり抜ける研究がいくつもなされているといわれており注意が必要です。
まとめ
クリックジャッキングはユーザーをだまし、意図しないクリック操作に誘導する不正な行為です。クリックジャッキングが起こらないようにブラウザの設定やWebページの表示設定を改めて確認し、Webページやサービスが安全に利用できるように努めましょう。