DuckDuckGo の Android ブラウザで重大な脆弱性が最近発見され、ユーザーはユニバーサル クロスサイトスクリプティング(UXSS)攻撃にさらされています。
ブラウザの AutoConsent JS ブリッジに見つかったこの欠陥により、信頼されていないソースからの悪意のあるコードが信頼されたウェブページで実行される可能性があります。
セキュリティ研究者 Dhiraj Mishra が HackerOne を通じて脆弱性を報告しました。その後、ブラウザの最近のアップデートでパッチが当てられています。
AutoConsent JS ブリッジの役割
この問題は、クッキー同意ポップアップを自動的に処理するために設計された AutoconsentAndroid Java ブリッジに由来しています。このブリッジはウェブページの読み込み時にウェブページに注入されます。
この脆弱性が存在するのは、このブリッジがメッセージの出所を検証したり認証トークンを要求したりすることなく、クロスオリジンアイフレームを含むウェブページ上の任意のフレームからのメッセージを受け入れるためです。
ブリッジがメッセージを受け取ると、その評価ハンドラーは webView.evaluateJavascript(...) メソッドをトリガーします。
Android WebView では、このメソッドはメインのトップレベルドキュメントのコンテキストで提供された JavaScript を実行します。
ブリッジがメッセージの出所を検証できないため、攻撃者はウェブページに悪意のある隠されたアイフレームを埋め込むことができます。その後、このアイフレームは AutoconsentAndroid ブリッジにメッセージを送信できます。
ブリッジはプロキシとして機能し、信頼されていないアイフレームからの悪意のある JavaScript を受け取り、信頼されたトップレベルのウェブページに属しているかのように実行します。
これは 同一オリジンポリシー(SOP)の直接的な違反です。SOP は、あるウェブサイトのスクリプトが別のウェブサイトのデータにアクセスするのを防ぐための基本的なセキュリティ概念です。
影響とコンセプト実証
研究者は脆弱性を実証するための簡単なコンセプト実証(PoC)を提供しました。PoC では、攻撃者が制御するアイフレーム(iframe.html)が JavaScript ペイロードを AutoconsentAndroid ブリッジに送信します。
ペイロードはトップレベルの被害者ページ(victim.html)上のテキストを「Victim Page」から「PWNED by iFrame」に変更します。
これは同一オリジンポリシーをバイパスでき、サブフレームがメインページを変更できることを確認しています。
UXSS はブラウザクラスの重大な脆弱性と考えられています。これにより、ユーザーインタラクションを必要とせずに異なるオリジン全体で任意の JavaScript を実行できます。攻撃者はこの欠陥を利用して以下のことができます:
- クッキーとセッショントークンを盗む。
- メインページ上の機密データにアクセスまたは変更する。
- ユーザーが訪問するあらゆるウェブサイトに悪意のあるコンテンツを注入する。
CVSS スコア 8.6(高)を獲得したこの脆弱性は、ブラウザのデフォルト設定で到達可能です。
DuckDuckGo は com.duckduckgo.mobile.android アプリの最近のリリースで欠陥にパッチを当てています。
ユーザーは潜在的な攻撃から保護されることを確認するために、DuckDuckGo ブラウザを最新バージョンに更新することを強くお勧めします。
翻訳元: https://gbhackers.com/uxss-vulnerability-in-duckduckgo-browsers/