web-dev-qa-db-ja.com

ブラウザは、あるタブに読み込まれたページが他のタブのデータにアクセス/インターセプト/挿入することを許可しますか?

このロイターのビデオ から聞いて驚いた。あるタブにロードされたページが、別のタブにロードされた別のページにアクセスしたり、データを挿入したりすることが可能だった。

TL; DW(遅すぎる;見ていない)ビデオのインタビュイーは、オンラインバンキングをしているとき、ユーザーがブラウザーを終了することを示唆していますすべてのウィンドウ)、バンキングページ/タブだけを開いて新しいブラウザセッションを開始します。申し立てによると、悪意のあるサイトは、あなたの銀行サイトが開いているかどうかをチェックし、それらのサイトにコマンドを挿入することができます。

誰かがこの主張を確認および/または拒否できますか?ウィンドウ/タブ間に親子関係がない場合にのみ可能ですか?

14
jairo

非常に一般的な実装は、同じプロセスでセッションを共有することです。例:タブAで銀行口座にログインしています。URLをコピーして(同じブラウザウィンドウの)タブBに貼り付けると、ログインしたままになります。開始時の状況は異なるはずです。ブラウザーの別のプロセスで、URLを別のブラウザーウィンドウに貼り付けます。

タブAで開いたWebサイトAが他のタブからセッションにアクセスできるということですか?答えは簡単です:いいえ、 同じオリジンポリシー。悪意のあるWebサイトが他のWebサイトに干渉することはありません(近くのタブで開いている場合でも)。

別のアイデアは、タブAで開いたWebサイトからデータ/コンテンツを盗むことです。 XMLHttpRequest。 XMLHttpRequestは銀行へのリンクを開き、機密コンテンツをスキャンして攻撃者に送信します。まあ、このシナリオはまだ架空のものです。どうして?ここで同じ答え: 同じオリジンポリシー 再び。ただし、このシナリオでは成功の可能性が高まる可能性があります(たとえば、IEまたはMSXML 3.0 [http/https]のゾーンポリシー))。ただし、IMOはまだほとんどありません。

さて、この文脈で言及すべき主な危険は次のとおりです。

  • CSRF
  • タブナッピング

CSRF

簡単なシナリオを見てみましょう。 CSRF保護のない銀行にログインしています。その間、別のタブに切り替えます(または、銀行のWebサイトでタブを閉じます-ここで最も重要なことは、ログアウトしていないこと、セッションが破棄されていないこと、そしてまだログインしていることを示しています)。別のタブはHTTPリクエストを銀行に送信します。 Webサイトは、要求がスクリプトによって生成されたか、人間によって生成されたかを認識していないため、それを受け入れます。そのため、不正なコマンド/リクエストが銀行に送信されました。

タブナッピング:

これはかなり新しい種類のフィッシング攻撃です。タブがアクティブ(フォーカスされている)かどうかを検出するJSスクリプトが通常のサイトに配置されています。別のタブに切り替えます。次に、JSがファビコンとタイトルを置き換えます(現在は、銀行のファビコンとタイトルと同じように見えます)。偽のタブをクリックすると、変更されたコンテンツが表示されます(銀行のWebサイトと同じように見えます)。

10
p____h

これは、ブラウザによって実装されているセキュリティ対策に大きく依存します。実は? ChromeまたはFirefoxまたはOperaは、この種の攻撃を防ぐ可能性があります。これは、何年も前の問題でしたが、今は一般的にはそうではありません。ただし、ブラウザのセキュリティバグを見つけ、それを悪用してこれを実行する必要があります。

デフォルトでは、Chromeは同じタブプロセスの親/子タブをグループ化しますが、各タブグループは、この種の問題を防ぐために、分離されたサンドボックスプロセスで実行されます。 FirefoxとOperaには同様のセキュリティ対策が講じられていると思いますが、詳しくコメントするのに十分な知識がありません。

これが心配で、Chromeを使用している場合は、新しいプライベートブラウジングウィンドウ(Ctrl+Shift+N)そしてそこで銀行業務を行います。これにより、chromeが新しい分離されたタブプロセスを生成します。プライベートブラウジングモードでは、デフォルトですべての拡張機能が無効になっています。つまり、情報へのアクセスで実行される唯一のJavaScriptは、銀行のウェブサイト自体。

2
Darth Android

ビデオのアドバイスはまったくナンセンスではありませんが、友人や家族に強調したいことではありません。ただし、ビデオの説明は少し混乱する可能性があります。

ブラウザは、あるタブのページが別のタブで開いているページを攻撃することを防ぐように特別に設計されています(2つの異なるドメインからのものと想定)。特定のセキュリティメカニズムはsame-Originポリシーとして知られています。したがって、一般的に言えば、通常、あるタブで開いているページは別のタブで開いている別のサイトを攻撃できないと想定できます。ただし、2つの重要な例外があります。

  1. ブラウザーに脆弱性がある場合、すべての賭けは無効になります。ブラウザーにパッチが適用されていない脆弱性がある場合、1つのページの悪意のあるページがこの脆弱性を悪用し、ブラウザーの制御を取得し、他のページを攻撃する可能性があります。

    ブラウザベンダーは、このような脆弱性を回避するために最善を尽くしますが、時々それが起こります。最新のブラウザー(Chrome、Firefox、またはIEの最新バージョン)を使用している場合、このような脆弱性は比較的まれです。古いバージョンを使用している場合は、問題が発生する可能性があります。

    ブラウザをシャットダウンして、銀行のサイトをロードしただけでブラウザを起動しても、この種の攻撃に対する防御にはなりません。

  2. Webサイトに脆弱性がある場合、この種の攻撃の影響を受ける可能性があります。銀行サイトbank.comに、クロスサイトリクエストフォージェリ(CSRF)脆弱性と呼ばれる特定の種類の脆弱性があるとします。次に、あるタブでbank.comページを開いており、別のタブでevil.comのページを開いている場合、evil.comのページは、銀行のCSRF脆弱性を悪用してバンキングセッションを攻撃する可能性があります地点。

    うまくいけば、妥当なオンラインバンキングサイトはCSRFの脆弱性を回避するように設計する必要があります。そのため、セキュリティの高いサイトではこれがまれであることを期待しています。しかし、それは起こります。 (そして、それは低グレードのサイトでははるかに一般的です。)

    ブラウザーをシャットダウンし、銀行をロードしただけでブラウザーを起動すると、この種の攻撃から防御できます。

したがって、これらすべてを考慮に入れると、おそらくオッズは、ブラウザーをシャットダウンして銀行サイトだけで起動するというこのビジネスを行う必要はないでしょう。それが役立つかもしれないいくつかの状況があることを私は理解していますが、それらはかなり制限されています。


オンラインバンキングの安全性を確保する方法についてアドバイスを求められた場合は、以下をお勧めします。消費者の場合:

  • 詐欺または不正な取引が発生した場合に、全体を保証する銀行を選択してください。米国では、ほとんどの銀行がこの方針を消費者口座に適用しています。

  • オペレーティングシステムで自動更新をオンにします。 OSを最新の状態に保つようにしてください。

  • 最新のブラウザーを選択して、最新の状態に保ちます(ほとんどのブラウザーは、最近、自動的に更新されます)。特に偏執的になりたい場合は、Chromeがセキュリティで高い評価を得ています。

  • 推測されにくいパスワードを選択してください。

  • Windowsにウイルス対策プログラムをインストールします(妥当な無料のA/V製品があります)。

以上です。さらに慎重になりたい場合は、追加の手順を実行できます。SecuniaPSIをインストールして、その推奨事項に従います。オンラインバンキング用にLinux LiveCDを起動することもできます。

あなたがビジネスの場合、オンラインバンキングのセキュリティ確保ははるかに困難です。銀行は通常、詐欺に対して払い戻しを行わないためです。悪者があなたのお金をすべて盗み、それが悪すぎると、あなたは負けます。あなたは本当にそれが必要かどうか自分自身に慎重に尋ねたくなるでしょう。もしそうなら、私は多くの偏執的なステップを使うことを勧めます:あなたがオンラインバンキングをする必要があるたびにLiveCDを起動します。銀行との取引制限を確立します。 RSA SecurIDまたは携帯電話を使用してトランザクションを確認するような2要素認証を有効にすることを検討してください。オンラインバンキングのみに使用する別のマシンを購入することを検討してください(電子メールではなく、Webブラウジングではなく)。

1
D.W.