Huang and Jackson 説明 iframeに依存せず、ポップアンダーウィンドウに依存するクリックジャッキングの方法。この攻撃は現在も関連していますか、それともポップアップブロッカーによって阻止されていますか?サイトがそれを防ぐ方法はありますか?
攻撃は次のように機能します。ウィンドウが現在のウィンドウの後ろに開かれ、ユーザーはダブルクリックするよう求められます。最初のクリックでポップアンダーが前面に表示され、2回目のクリックでユーザーが意図しない操作が実行されます。
ステップ1:ユーザーはボタンを2回クリックするよう求められます:
ステップ2:ワンクリック後、ウィンドウがページ上に配置され、ボタンクリックが別のページで処理されるようにします。
これは現在のブラウザでも可能ですか?これを防ぐためにユーザーまたはサイトができることはありますか?
私はFirefoxでTab Mix Plusプラグインを使用して、すべてのポップアップ/新しいウィンドウをタブに変えるように構成しています。これにより、JavaScriptがタブをフォアグラウンド/バックグラウンドに移動することも防止されます。
さらに、スクリプトがウィンドウのサイズと位置を変更できないように構成することもできるため、正確な配置は不可能です。
他のブラウザにも同様のプラグインが存在する場合があります。
ブラウザには通常、内部ポップアップのクリックジャッキング保護が含まれています。たとえば、何をしているかを理解せずにダウンロードしたファイルを誤って開かないようにするためです。
ただし、説明するシナリオでは、保護の責任は[アクセスを許可]ボタンをホストするサイトにあります。 (この場合、Google)100%はありません ばかユーザープルーフソリューション。したがって、残念ながらこれの一部は、一般的なフィッシング対策の取り組みでなければなりません。 (Googleは悪意のあるサイトをデータベース化しようとしますが、これは反動システムです。)
クリックジャッキングの最も単純な形式は、もちろんページnavigation、または2つのクリックの最初のクリックによってトリガーされるプレーンポップアップです。ポップアップブロッカーは、ユーザーのクリックによってポップアップが直接トリガーされた場合は有効になりません。もちろん、ポップアップブロッカーはプレーンナビゲーションを停止しません。
サイトがそれを防ぐ方法はありますか?
Googleには、承認ボタンが機能し始めるまでの最小時間は含まれていますか?
Googleのページが2回目のクリックをキャッチするほど高速に読み込まれない場合があります。
pop-underテクニックは、ページが事前に読み込まれていることを確認するための賢い方法です。
self.focus()
を呼び出して、悪意のあるサイトを前面に表示します。popup.focus()
を前面に表示すると、2回目のクリックで[許可]がヒットします。それはあなたが説明したシナリオですが、同じ起源のポリシーのため、実際には機能しません(ありがたいことに)、ポップアップが別のサイトにある場合、悪意のあるサイトが.focus()
を呼び出すのを防ぎます。
残念ながら、次のように機能します
self.focus()
を呼び出して、「悪意のあるポップアップ」を前面に表示します。self.close()
を使用して「悪意のあるポップアップ」を取り除き、次に2回目のクリックで[許可]をクリックします。サイトがそれを防ぐ方法はありますか?
本当に簡単なのは、history.length == 1
を確認することです。その場合、ポップアップで開かれたことがGoogleに認識されます。これは包括的な緩和策ではありません。
Googleは、Visibility API、および/またはself.onfocus
およびself.onblur
イベントのいずれかを使用して、クリックが有効になるまでの最小時間を要求できます。 これは包括的な保護になると思います。しかし、ブラウザのサポートの対象となります。
Googleのロゴが他のポップアップによって非表示にされ、それによってユーザーをだますより複雑なシナリオを想像できます。
これを防ぐためにユーザーができることはありますか?
信頼できないサイトをダブルクリックしないように注意してください。実際、疑わしいサイトには近づかないでください。 ☺