2019.04.05
時代が進むにしたがってクリックジャッキングの手口はさらに巧妙化しており、詐欺などの被害に遭う人が増えてきています。クリックジャッキングに引っかかってしまわないためには、その仕組みと対策方法を知ることで被害に遭うリスクを最小限に抑えていく必要があるでしょう。今回は、クリックジャッキングの仕組みと対策方法について解説します。
クリックジャッキングとは、iframe(インラインフレーム)で表示させた透明なページを通常のウェブページの上にかぶせるという手法のことです。ウイルスに感染させるような悪意のあるウェブサイトへのリンクが透明に表示されているので、ユーザーは知らないうちにリンクをクリックしてしまうことになります。なお、iframeとは指定のURLをフレームの内側に表示させることのできるHTMLタグの一種です。
クリックジャッキングによって、ユーザーは個人情報の流出やデータの破壊などの不利益を被ってしまう恐れがあります。インターネットを利用するうえでウェブブラウザは必ず使う必要のあるツールであり、世界中の人が常にクリックジャッキングの被害を受けるリスクにさらされているのです。そして、ユーザーにとって脅威であると同時に、クリックジャッキングはサイトを運営する企業や政府機関などにとっても大きな脅威となります。特に、顧客の個人情報を大量に所有しているような企業の場合は、情報漏えいによる被害の拡大を防ぐという意味でもしっかりと対策を行っておく必要があるでしょう。
クリックジャッキングによる被害を防ぐためにも、まずは基本的な仕組みを押さえておきましょう。攻撃者がクリックジャッキングによる攻撃を成立させるためには、ウェブサイトのユーザーを視覚的にだますことで意図したポイントをクリックさせる必要があります。ユーザーを視覚的にだます方法として、攻撃者はユーザーに悪意あるウェブページを閲覧させます。この悪意あるウェブページは、主に2つの要素から構成されています。それが、ユーザーのパソコン上に実際に表示させるウェブページと、その上にかぶせる形で配置される透明なウェブページの2つです。これら2つのウェブページを重ね合わせることで、ユーザーに意図していない操作をさせるよう仕向けているのです。
まず、通常のウェブページに悪意のあるウェブページを透明化してかぶせるという手口でユーザーをだますパターンが挙げられます。このケースでは、透明化したウェブページに悪意のあるサイトへのリンクが貼られており、ユーザーはこのリンクをクリックするように誘導されてしまうのです。例えば、普段から使っているサイトから正規のリンク先へジャンプするつもりでクリックしたら、予期していたものとはまったく異なる不審なサイトに飛んでしまったというようなことが起こり得るでしょう。
反対に、通常のウェブページのほうを透明化し、悪意のあるウェブページのほうを実際に表示させているというパターンもあります。ユーザーが目にすることになる悪意のあるウェブページには、指定箇所をついクリックしたくなるような工夫が施されているでしょう。また、このウェブページの上には、プログラミングによって透明化された、普段から利用している通常のウェブページが配置されています。
すなわち、悪意のあるウェブページによってユーザーが指定箇所をクリックするように誘導し、結果的に通常のウェブページ上の操作を行わせるということです。例えば、悪意のあるウェブページで無害なリンクとして表示されているはずの箇所をクリックしたら、ECサイトで高額な商品を購入していたというケースも起こり得るでしょう。また、意識しないまま設定が変更されることによって情報が公開されてしまう恐れもあります。このように、クリックジャッキングの細工が施されているウェブページではユーザーに見えている表示内容とサイト本来の表示内容が異なっています。そのため、予測できないさまざまな種類の被害に遭ってしまう恐れがあるのです。
クリックジャッキングによる被害は、主にログインしなければ利用できないサービスを意図せずに操作してしまうという形で引き起こされます。自分が望んでいないコンテンツをウェブサイト上で共有させられたり、プライバシーにかかわる情報を公開するように操作させられたりする恐れがあるでしょう。また、サービスを勝手に退会させられる、ブログやSNSなどで意図していない投稿をしてしまうといった被害も引き起こされています。インターネットバンキング上などで不正に送金をさせられることで、実際に金銭上の被害を受けるケースもあります。
この他に、クリックジャッキングによってパソコンを通常どおりに使用できなくなってしまうという被害にも気を付けなければなりません。中には、CD-ROMアタックのようにパソコンの光学ドライブを延々と開閉させてハードウェアの損傷を招くという攻撃もあります。ウィンドウ無限表示型といわれるブラウザを意図せずに開いてしまうことで、いつまでも同じウィンドウが開き続けるような場合もあるでしょう。さらに、CPUやメモリリソースを消耗させてパソコンの処理性能を悪化させるために、JavaScriptを無限に実行させるというタイプの攻撃にも注意が必要です。このように、クリックジャッキングによる被害のバリエーションは挙げ始めればきりがないほど豊富にあるのです。
クリックジャッキングの対策を行うべきなのは、ウェブサイトを運営する管理者側だけではありません。実際に被害を受けることになるユーザー側についても、クリックジャッキングを防ぐ方法を押さえておくべきだといえるのです。ユーザーができる対策として、まずはJava ScriptやFlashなどをブラウザで無効にしておくという方法が挙げられます。これによって、クリックジャッキングのために仕込まれた不正なウェブページを表示させるためのコードが機能しなくなります。すなわち、ユーザーをだますための透明なウェブページがそもそも表示されなくなるので、クリックジャッキングの被害に遭うことがなくなるのです。
なお、Java Scriptを無効にする操作はブラウザ上からしか行うことができません。Google ChromeやSafariなど、利用するブラウザに応じた設定方法を事前に確認しておきましょう。また、ブラウザやOSに対してセキュリティアップデートを適用させるというのも効果的な方法の一つです。セキュリティシステムは時の経過につれてほころびが見え始めるものです。クリックジャッキングなどのインターネット上で行われる悪事に対抗するためにも、常に最新のバージョンにアップデートするということを心がけましょう。
企業がサイト運営を行ううえで、特にクリックジャッキングに注意する必要があるウェブサイトにはいくつかの種類があります。まず、会員登録制のサイトやログイン機能のあるウェブサイトは運営方法に気を付ける必要があるでしょう。また、ウェブブラウザ上でユーザーについての情報を投稿したり、編集、追加などが行えたりするウェブサイトについても同様です。これらのウェブサイトの中でも、ユーザーが情報を設定するウェブページや、退会、投稿を行うウェブページについては特に対策が必要となります。
クリックジャッキングの対象とされやすいのはウェブサイトのどのような部分なのかということを把握したうえで、管理者は対策を行っていかなくてはならないのです。それでは、ウェブサイトの管理者にできる具体的な対策にはどういった種類のものがあるのでしょうか。
サイト運営におけるクリックジャッキング対策の1つ目は、X-FRAME-OPTIONSを導入するということです。X-FRAME-OPTIONSとは、運営するウェブページ内に外部から埋め込まれた他のウェブページを表示させるか否かが指定できるパラメータのことです。つまり、X-FRAME-OPTIONSを使用すればiframeなどで透明化された悪意のあるウェブページを除外することができるということになります。X-FRAME-OPTIONSには主に2つの設定値があり、それがDENYとSAMEORIGINです。DENYでは、iframeなどで埋め込まれたウェブページの表示をすべて拒否するように設定できます。自社のウェブサイトではiframeなどをまったく利用していないという場合はDENYの設定値を利用するのがよいでしょう。
一方、SAMEORIGINとはアドレスバーに表示されているドメインと同じドメインを持ったウェブページのみの表示を許可するという設定値のことです。DENYよりは柔軟性が高いといえますが、許可されるのは同一ドメインのみであるという点には注意が必要でしょう。なお、X-FRAME-OPTIONSにはALLOW-FROM originという設定値もあります。ALLOW-FROM originでは、あらかじめ指定しているドメインのウェブページであれば自由に表示させることができます。ただし、ウェブブラウザの中にはALLOW-FROM originに対応していないものもあるので、正常に作動するかどうかをあらかじめ確認しておきましょう。
X-FRAME-OPTIONSを利用するときはいくつかの注意点にも気を付けなくてはなりません。まず、複数のドメインを使い分けているウェブページの場合は設定が複雑になるという点が挙げられます。特に、あるドメインについてiframeなどを使っているのであればX-FRAME-OPTIONSが設定できないので、他の対策を考える必要があります。例えば、クリックジャッキングで狙われやすい部分であるユーザーの操作を別のウィンドウで行わせることでリスクを下げることができるでしょう。
また、設定を変更するときは必ずパスワードを入力させるなど、クリックだけで一連の操作を完了させないような工夫を施すのも効果的な方法だといえます。そして、HTMLファイルにmeta要素でX-FRAME-OPTIONSを設定しても有効にはならないという点にも注意が必要です。なお、meta要素とはHTML文書内に記述されるウェブページの内容を定義付ける要素のことです。
クリックジャッキングを防ぐためのツールとして、2つ目に挙げられるのがContent Security Policyです。Content Security PolicyはWeb技術の標準化を目指している非営利団体であるW3Cが推奨している規格で、X-FRAME-OPTIONSとほとんど同じような対策を行うことができます。クリックジャッキングだけでなく、盗聴やクロスサイト・スクリプティングなどによる情報漏えいの対策にも有効だとされているシステムです。また、複数のドメインの表示を許可するように指定できるなど、X-FRAME-OPTIONSよりも細かな設定が行えるという特徴があります。
Content Security Policyを利用する際の注意点として、クリックジャッキング対策機能が正常に作動するウェブブラウザの数が少ないということが挙げられます。また、Content Security Policyは本来、クリックジャッキングによる攻撃に対処するための専用システムではありません。そのため、運営するウェブサイトの情報セキュリティポリシーを考慮し、最低限必要な機能にはどのようなものがあるのかということを把握したうえで導入する必要があります。
3つ目のクリックジャッキング対策は、Java ScriptのWindowオブジェクトを利用するという方法です。Java ScriptのWindowオブジェクトには、window.topとwindow.selfという2つのプロパティがあります。window.topは表示されるウェブページの最上位の位置を取得するためのもので、window.selfはJava Scriptが記載されたウェブページの位置を取得するためのものです。この2つのプロパティによって、クリックジャッキング攻撃を受けても悪意のあるウェブページにつながるinframe要素が表示されないようにすることができるのです。
ただし、ユーザーのウェブブラウザでJava Scriptが有効になっていなければシステムが機能しないという点には注意が必要でしょう。また、この対策については複数の回避方法が研究されています。そのため、すべての回避方法を考慮したうえでウェブサイトを複雑に設計する必要があります。
最後に、4つ目のクリックジャッキング対策として、ブラウザサイドの対策について紹介します。クリックジャッキングにおいては、ウェブページを細工するためにz-indexやopacityなどのコードが主に使用されることになります。これらのコードが表示される事態を避けるためには、「NoScript」を利用する方法が効果的です。Firefoxの拡張機能である「NoScript」には、フレームの不透明度を変更してウェブページを可視化する「Opacize」や、透明化されたiframeでのクリックを防ぐ「ClearClick」などの対策技術が搭載されています。ただし、「NoScript」を利用する際は安全なサイトであってもクリックジャッキング攻撃だと判断されてしまうことがあるという点に注意しましょう。
クリックジャッキングの手口にはさまざまなものがあり、ユーザーはどのような被害を被ることになるのかということを知っておくことが大切です。また、ウェブサイトの運営者はX-FRAME-OPTIONSなどを利用して効果的な対策を行っていく必要があります。今回紹介した内容を参考にしながら、クリックジャッキングの被害を受けにくいサイトを構築することでユーザーからの信頼を勝ち取っていきましょう。