自己 XSS 攻撃とは
セルフ XSS(セルフクロスサイト スクリプティング)は、ウェブブラウザで悪意のあるコードを実行するようユーザーをだますソーシャル エンジニアリング攻撃の一種です。通常の XSS 攻撃とは異なり、攻撃者が悪意のあるコードを注入できるウェブ アプリケーションの脆弱性に依存するのではなく、自己 XSS 攻撃はユーザー自身の潜在的なコード実行アクションに依存します。
通常、自己 XSS 攻撃では、攻撃者がユーザーをだまして、ブラウザの DevTools コンソールに悪意のあるコードをコピーして貼り付けさせます。通常、攻撃者はなんらかの報酬を約束することでこれを実現します。たとえば、次のような場合が考えられます。
- コードを使用すると隠れた機能や仮想特典にアクセスできると約束している。
- コードがセキュリティ テストまたはバグ修正であるかのように装う。
- コードを使用すると、利益を得るためにウェブサイトをハッキングできると約束している。
コードを実行すると、攻撃者はアカウントを乗っ取ることができます。これにより、攻撃者は次のことができます。
- 名前、住所、クレジット カード番号などの個人情報を盗む。
- あなたの代わりに、不正なメッセージやコメントを投稿する。
- ソーシャル メディア アカウントを管理する。
- 他のユーザーにマルウェアを拡散する。
Chrome DevTools は自己 XSS 攻撃を軽減するためにどのように機能しますか?
ユーザーが DevTools にコードを貼り付けて実行できるようにすることは、本質的にリスクがあります。ただし、これは Chrome DevTools のコア機能の 1 つでもあります。そのため、潜在的なセルフ XSS 攻撃を軽減しつつ、ウェブサイトのデバッグのみを目的とするデベロッパーの作業を妨げないようにする必要がありました。
通常、デベロッパーは、ウェブ上のどこかで見つけてきたコードをコピーして DevTools に貼り付け、実行する前に、そのコードが何をするのかをざっと確認します。ほとんどのデベロッパーは、ウェブの怪しい場所で見つけてきたコードを実行することのセキュリティ リスクを十分に認識しています。
Chrome DevTools は、デベロッパーが何をしているかを把握していると想定しています。コードのコピーと貼り付けの際に、速度が低下したり、気を散らしたりしないようにする必要があります。
自己 XSS 攻撃の被害に遭うリスクは、デベロッパー以外のユーザーの方がはるかに高いと考えています。ユーザーの安全を守るために、危険な可能性がある操作を行っているときに中断することは許容され、有益であると Google は考えています。経験の浅いユーザーが DevTools にコードを貼り付けようとしていることが Chrome DevTools で検出されると、操作が停止し、警告が表示されます。
DevTools にセルフ XSS の警告が表示されるのはいつですか?
DevTools は、ユーザー プロファイルのコンソール履歴に基づいて、非常にシンプルなヒューリスティクスを使用して、自己 XSS の警告を表示するかどうかを判断します。
プロファイルのコンソール履歴に 5 つ以上のエントリがある場合、DevTools から警告やポップアップが表示されることはありません。コンソール履歴は、コンソールで入力して実行したコマンドのリストです。これらのコマンドは、コンソールにカーソルを置いて上矢印キーを繰り返し押すと表示されます。
自己 XSS の警告はどのように表示されますか?
経験の浅いユーザーが コンソールにコードを貼り付けようとすると、この操作はブロックされ、代わりにコンソールに警告が表示されます。
この警告を無視して貼り付けを有効にすることはできますが、その場合は「allow pasting」と入力する必要があります。
経験の浅いユーザーが DevTools のコードエディタ([ソース] パネルなど)にコードを貼り付けた場合、ユーザー エクスペリエンスは非常に似ています。警告ではなく、モーダル ダイアログが表示されます。
繰り返しますが、このダイアログを閉じるだけでは、貼り付けを有効にすることはできません。警告をオーバーライドするには、入力フィールドに「allow pasting」と入力する必要があります。
これは 1 回限りの設定ですか?
はい。貼り付けを許可すると、自己 XSS の警告は表示されなくなります。
これにより、有用性と煩わしさのバランスが取れた状態になることを願っております。手間をかけることで、ユーザーが警告を読む可能性が高まり、自己 XSS 攻撃が成功する可能性が低くなります。
Chrome DevTools には、Chrome プロフィールに自己 XSS 警告を表示するかどうかを指定するフラグが保持されます。そのため、新しいプロファイルを作成してすぐに DevTools にコードを貼り付けると、貼り付けがブロックされ、代わりに自己 XSS の警告が表示されます。
テスト自動化のために無効にできますか?
自動テストはどうでしょうか。多くのテストツールは、テストの実行ごとに新しい一時プロファイルを作成します。そのため、DevTools を使用して自動テストをデバッグする場合、最初は コンソールへの貼り付けがブロックされます。
この問題を回避するには、次のいずれかを行います。
テストと自動化用に特別に設計されたさまざまな Chrome である Chrome for Testing を使用します。自己 XSS の警告がオフになっています。
他の Chrome リリース チャンネルでは、
--unsafely-disable-devtools-self-xss-warnings
コマンドライン フラグを Chrome に渡して、自己 XSS の警告ダイアログを完全に無効にします。
まとめ
自己 XSS 攻撃を軽減するためのこの戦略について、どう思われますか?ご意見やご提案がございましたら、こちらのバグにコメントを追加するか、次のいずれかの方法でお問い合わせください。
特に、コンソール ログで自己 XSS 攻撃を警告するウェブサイトを運営している場合は、Google の取り組みの調整や、自己 XSS 緩和策の影響の測定について、ぜひご相談ください。
プレビュー チャネルをダウンロードする
デフォルトの開発用ブラウザとして Chrome の Canary、Dev、Beta を使用することを検討してください。これらのプレビュー チャンネルでは、最新の DevTools 機能にアクセスしたり、最先端のウェブ プラットフォーム API をテストしたりできます。また、ユーザーよりも早くサイトの問題を見つけることもできます。
Chrome DevTools チームに問い合わせる
次のオプションを使用して、DevTools の新機能、アップデート、その他のトピックについて話し合います。
- フィードバックや機能リクエストは crbug.com から送信してください。
- DevTools で [その他] > [ヘルプ] > [DevTools の問題を報告] を使用して、DevTools の問題を報告します。
- @ChromeDevTools にツイートします。
- DevTools の新機能に関する YouTube 動画または DevTools のヒントに関する YouTube 動画にコメントを残してください。