Coders Conquer Security:シェアして学ぶシリーズ - クリックジャッキング

2019年2月14日発行
ジャープ・カラン・シン著
ケーススタディ

Coders Conquer Security:シェアして学ぶシリーズ - クリックジャッキング

2019年2月14日発行
ジャープ・カラン・シン著
リソースを見る
リソースを見る

スージーは、2日後に迫った嫌なレポートから逃れるためにメールを開きました。すると、受信トレイに無料でiPadがもらえるというリンクが表示されていた。そのリンクをクリックすると、「無料でiPadを手に入れるにはここをクリックしてください!」という大きなバナーのページがあるウェブサイトにアクセスします。ボタンをクリックしても、特に何も起こらない。問題は、何かが起こったということだ。

受信箱に戻ってみると、すべてのメールが削除されていることに気がつきました。彼女はどのメールにも「削除」を押していない。どうしたんだ?

メールサイトがクリックジャッキングされた。クリックジャッキングは、ユーザーを騙して意図しない行動を取らせるもので、深刻な問題に発展する可能性があります。

ここでは、クリックジャッキングがどのような仕組みで、なぜ危険なのか、そして開発者がどのようにしてそれを防ぐことができるのかを見ていきましょう。

クリックジャッキングの理解

クリックジャッキングは、「UIリドレス攻撃」とも呼ばれ、攻撃者がWebページ上のいくつかの透明なレイヤーを使って、ユーザーを騙し、ユーザーが意図しないボタンやリンクをクリックさせることで発生します。

車の中で虫が動かなくなったことはありませんか?虫は外に飛び出そうと、窓に向かって猛烈に飛んできます。虫の意図は、木や外気に見えるところに飛んでいくことであり、ガラスが行く手を遮っていることには気づかない。

クリックジャッキングは、ユーザーが虫で、あなたのウェブサイトが道を塞ぐガラスであることを除けば、デザイン的には似ています。ユーザーは無料のiPhoneのような欲しいものを見つけます。攻撃者は、無料のiPhoneの広告の上に、あなたのサイトを透明なフレームの中に配置します。ユーザーが「無料」とされている賞品を手に入れるためにボタンをクリックすると、実際にはあなたのサイトのボタンをクリックしていることになり、意図しない動作を行ってしまいます。

クリックジャッキングが危険な理由

クリックジャッキングで攻撃者は何ができるのか?それは、対象となるウェブサイトの機能に大きく依存します。

攻撃者は、ユーザーにソーシャルメディアで攻撃者のサイトを「いいね!」や「シェア」してもらうことができます。多くの人が利便性のためにソーシャルメディアのアカウントにログインしたままにしているので、これは簡単に実行できます。

あなたのサイトがフレーム内に設置できる場合、ボタンをクリックすることで機密性の高い操作が完了してしまい、これが攻撃のベクトルとして機能してしまいます。例えば、ユーザがiPadを無料で手に入れようとクリックしたにもかかわらず、代わりにサイトのアカウント設定を変更して、アカウントの安全性を低下させてしまうような場合です。この種の攻撃は、Adobe Flashプラグインの設定ページに対して発生しました。この設定は、透明なフレームの中に配置され、ユーザーを騙して、Flashアニメーションがマイクやカメラにアクセスできるようにします。これにより、攻撃者は被害者を録音することができ、プライバシーの重大な侵害となります。

メールクライアントがサイトにハメられ、ユーザーがメールボックス内のすべてのメールを削除したり、攻撃者が管理するメールアドレスにメールを転送したりする可能性があります。

要するに、ユーザーは自分が何をクリックしているのか分からないので、何でも納得してクリックすることができるのです。それがソーシャルシェアであれ、マルウェアのダウンロードであれ、可能性は無限大です。

クリックジャッキングに対抗するには

クリックジャッキングは防ぐことができます。クリックジャッキングを防ぐには、サイトにコンテンツ・セキュリティ・ポリシー(CSP)を設定することをお勧めします。frame ancestors」というHTTPレスポンスヘッダを使用することで、サイトのフレーム化を制御することができます。

  • "frame-ancestors none"-他のサイトがあなたのサイトをフレームに入れることはできません。これは推奨される設定です。
  • "frame-ancestors self"-サイト内のページは、サイト内の他のページによってのみ囲まれます。
  • "frame-ancestors self <uri list=""> - Your site can be framed by the sites in the URI lists and no others.</uri>

CSP のフレーム・アンセスタは、現在すべての主要ブラウザでサポートされていません。そのようなブラウザでは、"X-Frame-Options" HTTPヘッダを予備のオプションとして使用してください。

  • DENY - 誰もあなたのサイトをフレームできません。これは推奨される設定です。
  • SAMEORIGIN - CSPの「self」と同じです。自分のコンテンツをフレーム化することはできますが、他の人はできません。
  • ALLOW-FROM <uri> - Allow the specified URI to frame your content.</uri>

クリックジャックされないために

クリックジャッキングとは、巧妙で誤解を招くような攻撃のことで、貴社の製品が攻撃者に操作されてしまうと、風評被害や収益の損失につながる可能性があります。クリックジャッキングについての詳細は、無料のラーニングリソースをご覧ください。

コンテンツ・セキュリティ・ポリシーと「X-Frame-Options」ヘッダーを使用して、他の人があなたのサイトを悪意のある方法で使用するのを防ぎましょう。攻撃者がユーザーを操作することを許してはいけません。クリックジャックされないようにしましょう。

リソースを見る
リソースを見る

著者

Jaap Karan Singh

もっと知りたい?

セキュアコーディングに関する最新の知見をブログでご紹介しています。

当社の豊富なリソースライブラリは、安全なコーディングアップスキルに対する人間的なアプローチを強化することを目的としています。

ブログを見る
もっと知りたい?

開発者主導のセキュリティに関する最新の研究成果を入手する

ホワイトペーパーからウェビナーまで、開発者主導のセキュアコーディングを始めるために役立つリソースが満載のリソースライブラリです。今すぐご覧ください。

リソース・ハブ

Coders Conquer Security:シェアして学ぶシリーズ - クリックジャッキング

2024年1月22日発行
Jaap Karan Singh著

スージーは、2日後に迫った嫌なレポートから逃れるためにメールを開きました。すると、受信トレイに無料でiPadがもらえるというリンクが表示されていた。そのリンクをクリックすると、「無料でiPadを手に入れるにはここをクリックしてください!」という大きなバナーのページがあるウェブサイトにアクセスします。ボタンをクリックしても、特に何も起こらない。問題は、何かが起こったということだ。

受信箱に戻ってみると、すべてのメールが削除されていることに気がつきました。彼女はどのメールにも「削除」を押していない。どうしたんだ?

メールサイトがクリックジャッキングされた。クリックジャッキングは、ユーザーを騙して意図しない行動を取らせるもので、深刻な問題に発展する可能性があります。

ここでは、クリックジャッキングがどのような仕組みで、なぜ危険なのか、そして開発者がどのようにしてそれを防ぐことができるのかを見ていきましょう。

クリックジャッキングの理解

クリックジャッキングは、「UIリドレス攻撃」とも呼ばれ、攻撃者がWebページ上のいくつかの透明なレイヤーを使って、ユーザーを騙し、ユーザーが意図しないボタンやリンクをクリックさせることで発生します。

車の中で虫が動かなくなったことはありませんか?虫は外に飛び出そうと、窓に向かって猛烈に飛んできます。虫の意図は、木や外気に見えるところに飛んでいくことであり、ガラスが行く手を遮っていることには気づかない。

クリックジャッキングは、ユーザーが虫で、あなたのウェブサイトが道を塞ぐガラスであることを除けば、デザイン的には似ています。ユーザーは無料のiPhoneのような欲しいものを見つけます。攻撃者は、無料のiPhoneの広告の上に、あなたのサイトを透明なフレームの中に配置します。ユーザーが「無料」とされている賞品を手に入れるためにボタンをクリックすると、実際にはあなたのサイトのボタンをクリックしていることになり、意図しない動作を行ってしまいます。

クリックジャッキングが危険な理由

クリックジャッキングで攻撃者は何ができるのか?それは、対象となるウェブサイトの機能に大きく依存します。

攻撃者は、ユーザーにソーシャルメディアで攻撃者のサイトを「いいね!」や「シェア」してもらうことができます。多くの人が利便性のためにソーシャルメディアのアカウントにログインしたままにしているので、これは簡単に実行できます。

あなたのサイトがフレーム内に設置できる場合、ボタンをクリックすることで機密性の高い操作が完了してしまい、これが攻撃のベクトルとして機能してしまいます。例えば、ユーザがiPadを無料で手に入れようとクリックしたにもかかわらず、代わりにサイトのアカウント設定を変更して、アカウントの安全性を低下させてしまうような場合です。この種の攻撃は、Adobe Flashプラグインの設定ページに対して発生しました。この設定は、透明なフレームの中に配置され、ユーザーを騙して、Flashアニメーションがマイクやカメラにアクセスできるようにします。これにより、攻撃者は被害者を録音することができ、プライバシーの重大な侵害となります。

メールクライアントがサイトにハメられ、ユーザーがメールボックス内のすべてのメールを削除したり、攻撃者が管理するメールアドレスにメールを転送したりする可能性があります。

要するに、ユーザーは自分が何をクリックしているのか分からないので、何でも納得してクリックすることができるのです。それがソーシャルシェアであれ、マルウェアのダウンロードであれ、可能性は無限大です。

クリックジャッキングに対抗するには

クリックジャッキングは防ぐことができます。クリックジャッキングを防ぐには、サイトにコンテンツ・セキュリティ・ポリシー(CSP)を設定することをお勧めします。frame ancestors」というHTTPレスポンスヘッダを使用することで、サイトのフレーム化を制御することができます。

  • "frame-ancestors none"-他のサイトがあなたのサイトをフレームに入れることはできません。これは推奨される設定です。
  • "frame-ancestors self"-サイト内のページは、サイト内の他のページによってのみ囲まれます。
  • "frame-ancestors self <uri list=""> - Your site can be framed by the sites in the URI lists and no others.</uri>

CSP のフレーム・アンセスタは、現在すべての主要ブラウザでサポートされていません。そのようなブラウザでは、"X-Frame-Options" HTTPヘッダを予備のオプションとして使用してください。

  • DENY - 誰もあなたのサイトをフレームできません。これは推奨される設定です。
  • SAMEORIGIN - CSPの「self」と同じです。自分のコンテンツをフレーム化することはできますが、他の人はできません。
  • ALLOW-FROM <uri> - Allow the specified URI to frame your content.</uri>

クリックジャックされないために

クリックジャッキングとは、巧妙で誤解を招くような攻撃のことで、貴社の製品が攻撃者に操作されてしまうと、風評被害や収益の損失につながる可能性があります。クリックジャッキングについての詳細は、無料のラーニングリソースをご覧ください。

コンテンツ・セキュリティ・ポリシーと「X-Frame-Options」ヘッダーを使用して、他の人があなたのサイトを悪意のある方法で使用するのを防ぎましょう。攻撃者がユーザーを操作することを許してはいけません。クリックジャックされないようにしましょう。

弊社製品や関連するセキュアコーディングのトピックに関する情報をお送りする許可をお願いします。当社は、お客様の個人情報を細心の注意を払って取り扱い、マーケティング目的で他社に販売することは決してありません。

フォームを送信するには、「Analytics」のCookieを有効にしてください。完了したら、再度無効にしてください。