Apple Safari の WebKit に脆弱性:same-origin ポリシー違反による情報漏洩

Safari bug leaks your Google account info, browsing history

2022/01/17 BleepingComputer — Safari の WebKit エンジンに搭載されている、IndexedDB API の実装に問題が発見された。この欠陥を悪用された場合、リアルタイムでの不正な閲覧活動や、ユーザーの個人情報などが漏洩する可能性がある。IndexedDB は、広く使われているブラウザの API であり、容量制限のない汎用性の高いクライアント・サイドのストレージ・システムである。

一般的に、IndexedDB は Web アプリケーションのデータをキャッシュし、オフラインで閲覧するために導入されるが、モジュール/開発ツール/ブラウザ拡張機能においても、機密情報の保存に用いられる。IndexedDB は、クロスサイト・スクリプティング攻撃によるデータ漏洩を防ぐために、same-origin ポリシーに従い、それぞれのデータにアクセスできるリソースを制御している。

しかし、FingerprintJS のアナリストは、macOS の Safari 15 で使用されている WebKit 実装において、IndexedDB API が same-origin ポリシーに従っていないことを発見し、機密データの漏洩につながるとしている。このプライバシー侵害のバグは、最新の iOS/iPadOS においても、同じブラウザ・エンジンを使用している Web ブラウザにも影響を与える。

Safari 15 の問題点

iOS/iPadOS/macOS の Safari 15 における IndexedDB の実装は、same-origin ポリシーに違反することで、同じセッションで作成されたデータベース名を、任意の Web サイトがドローすることを許してしまう。通常、このデータベース名は、Web サイト固有のユニークなものであるため、本質的に閲覧履歴を他者に漏らすのと同じ結果を生じる。さらに悪いことに、データベース名の中には、ログイン後のユーザー固有の識別子を示唆するものもあるため、この API の漏えいにより、ユーザーの特定につながる可能性が生じる。

影響と緩和策

アナリストによると、この欠陥によりユーザーを特定するには、YouTube や Facebook などの人気 Web サイトや、Google Calendar/Keep などのサービスにログインしてから、アクセスする必要がある。これらのサイトにログインすると、新しい IndexedDB データベースが作成され、その名前に Google User ID が付加される。複数の Google アカウントを使用している場合には、それぞれに個別のデータベースが作成される。

FingerprintJS のレポートでは、「IndexedDB を使用している Web サイトがどれだけあるのか、そして、その Web サイトが使用しているデータベースにより、なにが一意に特定できるのかを把握するために、Alexa のアクセス数上位 1000 の Web サイトのホームページをチェックした。その結果、30以上の Web サイトが、追加のユーザー・インタラクションや認証を必要とすることなく、ホームページ上でインデックス付きデータベースと、ダイレクトにやり取りしていることが判明した。ある Web サイトはサブページにおいて、特定のユーザー・アクションの後で、または、ページの認証された部分で、このデータベースと対話するため、現実のシナリオではかなりの件数になると思われる」と述べている。

サブリソースが UUID (Universally Unique Identifiers) データベースを作成するケースでは、Safari のトラッキング防止システムが介入し、情報の漏洩をブロックしている。このポジティブなサイド・ミティゲーション効果は、アド・ブロック機能の拡張機能を使用している場合に更に高まる。

Safari 15 のプライベート・モードも影響を受けるが、各ブラウジング・セッションは1つのタブに制限される。したがって、流出する可能性のある情報の範囲は、その1つのタブを通じて訪問した Web サイトに限定される。なお、この欠陥は WebKit の問題であるため、このエンジンを使用しているブラウザ (Brave や Chrome for iOS など) にも、同じ脆弱性が存在することになる。

この脆弱性は、2021年11月28日に WebKit Bug Tracker に報告されたが、この記事を書いている時点では対処されていない。セキュリティ・アップデートが利用可能になるまでの間、この問題を軽減する方法の1つとして、すべての JavaScript をブロックすることが挙げられているが、数多くの Web ページで機能的な問題を引き起こす可能性がある。WebKit を使用していない Web ブラウザに切り替えることが唯一の解決策だが、それが可能なのは macOS のみとなる。つまり、iOs/iPadOS では、すべての Web ブラウザーが影響を受ける。

WebKit の、この脆弱性ですが、参照元の FingerprintJS にも CVE は記載されていません。お隣のキュレーション・チームに聞いてみましたが、2021年10月の Apple アップデートに CVE-2021-30890 と CVE-2021-30887 がありますが、そこには WebKit の記載がなく、その後の Ubuntu と Debian のアドバイザリで、同じ CVE が WebKit だとされているようです。ただし、 時間軸で見てみると、この IndexedDB API と same-origin の件とは別問題のようです。なお、WebKit に関連するポストとしては、2021年7月の「Google: ロシアン・ハッカーたちが Safari ゼロデイで LinkedIn ユーザーを狙う」や、9月の「Apple iOS/macOS の2つのゼロデイ脆弱性が FIX」などがありました。

%d bloggers like this: