yamory Blog

悪意あるサイトにこっそり誘導 クリックジャッキング

クリックジャッキング (クリックジャック攻撃)とは、被害者にクリックさせたい URL やサービスの機能を、他のサイトの表示で覆い隠すことにより、視覚的に騙してクリックを行わせる攻撃手法です。

この攻撃により、悪意のあるサイトを訪問したユーザーがページ上をクリックしてしまうと、他のサイト上にある個人情報の流出や、データの破壊などの不利益を被ってしまう恐れがあります。

この脆弱性が 2002 年に報告されて以来、 Twitter や Facebook などの SNS を含む様々なサービスでクリックジャッキングの悪用が報告されています。
また、パソコンだけではなく、スマートフォンを使っていてもクリックジャッキングに出くわす可能性はあります。

このような被害者のアクションをトリガーとして攻撃が実施される脆弱性は、受動的攻撃と呼ばれています。

本記事ではクリックジャッキングの概要から、攻撃の仕組み、対策方法について解説していきます。

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

クリックジャッキングは、Web サイト上に隠蔽・偽装したリンクやボタンを設置し、サイト訪問者を視覚的に騙してクリックさせ、悪意のあるサイトへ誘導させる攻撃手法です。
文章にすると、難しく思われるかもしれませんが、原理は非常に簡単です。

クリックジャッキングは、ユーザーの環境へ実際に表示させる Web ページと、その上にかぶせる形で配置される透明な Web ページのふたつの要素で構成されています。
このふたつのページを重ねることでクリックジャッキングの攻撃環境は作られます。

罠ページ上に透明にされたページをiframeで重ねておくことで、ユーザーはリンクをクリックすると意図しない操作を実行してしまいます。
クリックジャッキングの仕組み

具体的には、iframe(インラインフレーム)という、指定した URL をフレームの内側に表示させることのできる HTML タグなどを利用して、透明なページを通常のウェブページの上にかぶせます。
あとは、ユーザーが興味を持つような要素を用意することで、リンクをクリックさせるという仕組みです。

透明なページには、悪意のあるサイトへのリンクが付いているため、ユーザーは知らず知らずのうちに意図しないアクセスをしてしまいます。
この意図しないアクセスとは「退会ボタンのクリック」であったり、「購入ボタンのクリック」などが該当します。

また、通常の Web ページのほうを透明化し、悪意のある Web ページの方を実際に表示させているというパターンもあります。

このように、クリックジャッキングの細工が施されている Web ページではユーザーに見えている表示内容とサイト本来の表示内容が異なっています。
そのため、危険に気がつくことが難しく、さまざまな種類の被害に遭ってしまう危険性があります。

クリックジャッキングによる被害

クリックジャッキングによる被害は、主に「ログインしなければ利用できないサービスを意図せずに操作してしまう」という形で引き起こされます。
なぜなら、「退会」「購入」「フォロー」などの重要な動作は、ログインを行なっていないと利用できないケースしかないためです。

訪問者の被害事例としては以下のようなものがあります。

  • (被害者となるサイトの)退会ボタンをクリックしてしまう
  • Web サイト上ののコンテンツを自分が望んでいないのに共有してしまう
  • SNS で特定のアカウントのフォローや投稿をしてしまう
  • インターネットバンキング上などで不正に送金をさせられる
  • アカウントや端末を乗っ取られる
  • マルウェアをダウンロードさせられる

クリックジャッキングによる被害のバリエーションは非常に幅広く、様々な被害事例が報告されているのが特徴です。
発生頻度はそれほど多くないものの、個人情報の取得に関わる攻撃もあるため危険な攻撃と言えるでしょう。

クリックジャッキングへの対策方法

クリックジャッキングの具体的な対策は、利用者の立場によって変わってきます。
ここでは、「ブラウザで閲覧するユーザー側の対策」と「Web サイト管理者側の対策」に分けてそれぞれ解説していきます。

ブラウザで閲覧するユーザー側の対策

クリックジャッキングの対策は基本的にサイトの管理者側に求められることがほとんどですが、サイトの閲覧をするユーザー側でできる緩和策もあります。

古いブラウザでは「Web サイト管理者側の対策」で実施された対策が機能しない場合があるため、ブラウザを常にアップデートすることもユーザー側で対策できることのひとつと言えます。

また、過去に特定のブラウザにおいて、クリックジャッキングを悪用する事で、さらなる攻撃が行えた例がありました。

そのため、ブラウザを最新にアップデートすることは、クリックジャッキングやその他の問題に対する有効な手段にもなります。

Web サイト管理者側の対策

Web サイトを運営する管理者ができる対策はいくつか存在します。

そもそもクリックジャッキングの対策は、ユーザーよりも管理者側でできる対策の方が多いため、管理者は責任を持ってサイトの運営を行う意識が必要となります。

特に、会員登録制のサイトやログイン機能のあるサイトの場合は個人情報を保有しているため注意が必要です。
加えて、Web ブラウザ上でユーザーが投稿、編集が行える機能がある場合も気をつけましょう。

管理者は、クリックジャッキングの対象とされやすい部分を把握した上で、サイトの運用をしていく必要があります。

ここでは管理者ができる具体的な対策方法を 3 つご紹介します。

X-Frame-Options を導入する

管理者ができる対策のひとつ目は、X-Frame-Options を導入することです。
この方法は簡単かつ、クリックジャッキングに対して最も効果を発揮します。

X-Frame-Options とは、運営する Web ページ内に外部から埋め込まれた他の Web ページを表示させるか否かを指定できるパラメータのことで、X-Frame-Options を導入すると、外部からの iframe, embeb などのページ呼び出しがブラウザでブロックできます。

そのため、クリックジャッキングを仕掛けようとしているサイトからの不正な iframe 呼び出しを防ぐことが可能となります。

ヘッダの値としては、以下の 2 つの設定値があります。

  • DENY:フレーム内のページ表示を全ドメインで禁止
  • SAMEORIGIN:フレーム内のページ表示を同一ドメイン内のみ許可

DENY は、iframe などで埋め込まれた Web ページの表示をすべて拒否するように設定できます。自社のウェブサイトで iframe を利用していないという場合は DENY の設定値を利用するのがよいでしょう。

SAMEORIGIN は、アドレスバーに表示されているドメインと同じドメインを持った Web ページのみの表示を許可するという設定値です。
DENY よりは柔軟性が高いといえますが、許可されるのは同一ドメインのみであるという点にご注意ください。

X-Frame-Options を利用する際は、いくつか注意点があります。

まず、複数のドメインを使い分けている Web ページの場合は設定が複雑になるという点があげられます。
特にドメインについて iframe などを使っている場合は X-Frame-Options が設定できないので、他の対策を考えましょう。

また、HTML ファイルに meta 要素で X-Frame-Options を設定しても有効にはならないという点にも注意が必要です。

以下は、HTTP Response Header に、X-Frame-Options を設定する例になります。

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

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

# フレーム内のページ表示を全ドメインで禁止したい場合
Header always append X-Frame-Options DENY

# フレーム内のページ表示を同一ドメイン内のみ許可したい場合
Header always append X-Frame-Options SAMEORIGIN

# ※ mod_headersモジュールが有効になっている必要があります。
# ※ virtualhost単位でも設定が可能です。

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

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

// フレーム内のページ表示を全ドメインで禁止したい場合
header('X-Frame-Options: DENY');

// フレーム内のページ表示を同一ドメイン内のみ許可したい場合
header('X-Frame-Options: SAMEORIGIN');

Javaの場合

// フレーム内のページ表示を全ドメインで禁止したい場合
response.addHeader("X-Frame-Options", "DENY" );

// フレーム内のページ表示を同一ドメイン内のみ許可したい場合
response.addHeader("X-Frame-Options", "SAMEORIGIN" );

X-Frame-Options が有効に働いているかの確認は非常に簡単です。

確認を行う際は、X-Frame-Options を有効にしたサイトに対し、別のドメインから <iframe src=”対象ドメイン”> という呼び出しが可能かをチェックします。

X-Frame-Options が SAMEORIGIN の場合は、合わせて、対策を有効にしたドメインから自身を参照する形で iframe の呼び出しができるかを確認すると良いでしょう。

対策ができている場合は、iframe の呼び出しがブロックされ何も表示されません。対策ができていない場合は、iframe での呼び出しが成功します。

Content Security Policy を導入する

2 つ目の対策は、Content Security Policy の frame-ancestors を導入する方法です。

Content Security Policy の frame-ancestors を利用することで X-FRAME-OPTIONS とほぼ同じような対策を行うことができます。

Content Security Policy はクリックジャッキング以外にも、クロスサイトスクリプティングやインジェクション攻撃による情報漏えい対策にも有効とされています。

また、複数のドメインの表示を許可するように指定できるなど、X-FRAME-OPTIONS よりも細かな設定が行えるという特徴があります。

Content Security Policy を利用する際の注意点として、古いブラウザでは一部サポートされていないことがあげられます。

また Content Security Policy の設定を誤ると、これまでと同様のページ表示にならないことや、JavaScript がブロックされたりなど、正しい対策・動作にならないこともあるため注意して導入する必要があります。

進化するクリックジャッキングと対策への意識

ここまで読まれた方の中には、クリックさせたい要素(退会ボタンなど)が小さい場合、実際に被害者にクリックを行わせるのは難しいのではないか?と思われた方もいるかもしれません。

しかし、カーソルジャッキングと呼ばれるような、クリックさせたい要素自体をマウスに追従させる形で表示する方式など、攻撃の成功率を高める手法が年々開発・発表されています。

そのため「〜だから安全だろう」という安易な考え方を取らず、危険に対しての対策を実施した上で開発を行うことが重要となります。

また、日々進化するサイバー攻撃に対して常にアンテナを張り、最新の情報をキャッチできるよう意識することも大切です。

さいごに

今回はクリックジャッキングの攻撃手法から対策方法について解説しました。

クリックジャッキングは、どのユーザー、どのサイト管理者であっても被害に遭う可能性を秘めている攻撃であるということをご理解いただけたかと思います。

クリックジャッキングは、管理者側での対応により防げるケースも多く存在します。
サイトを運営する際は、日頃から高いセキュリティ意識を持ち、ユーザーを事故に巻き込まないように務めることも大切なことでしょう。

また、Web サイトに限らず、システム開発、アプリケーション開発などの場合でも、高い安全意識を持って運用をしていく必要があります。

yamory はオープンソースソフトウェアの脆弱性と、その脆弱性に関連する攻撃情報のモニタリングをすることができる脆弱性管理ツールです。
お使いの Web アプリケーションで危険となりうる脆弱性を自動的に検出できるため、よりセキュアなシステム構築の助けになるかと思います。

無料でトライアルもできますので、ぜひ一度お試しください。

オープンソース脆弱性管理ツール yamory

  • 利用中のOSSを抽出し
    脆弱性を自動スキャン
  • 脆弱性への対応優先度を自動で分類
  • 組織規模に合わせたプランを選択可能

フリー

¥0

個人向け

1チームまでの開発チーム作成

yamory を使いはじめる

プロ

有料料金はお問い合わせください

中〜大規模組織向け

無制限の開発チーム作成

開発チームを俯瞰できるセキュリティチーム機能

危険な脆弱性の Slack 連携通知機能

Jira Cloud と連携

シングル・サインオン(SSO)連携*

* SSO 連携は無料トライアルではご利用できません。プロプラン契約後からご利用できます。

30日間の無料トライアルを開始