Web開発
WebKitのIPおよびDNSリーク、プロキシブラウザとiCloud Private Relayに影響
IP and DNS Leaks in WebKit Affecting Proxy Browsers and iCloud Private Relay (mysk.blog)
要約
iOSおよびmacOSのWebKitベースブラウザは、プロキシサーバー経由で全Webトラフィックをルーティングするように設定できますが、DNSプリフェッチ、WebAuthn関連オリジンリクエスト、WebTransportの3つのWebKit機能がプロキシ設定をバイパスし、デバイスから直接トラフィックを送信することが判明しました。これにより、ユーザーの実際のネットワークが露呈します。これらのリークはAppleのiCloud Private Relayにも影響を与えますが、VPNはシステムレベルでトラフィック全体をトンネリングするため影響を受けません。これらの問題はすべてPsylo 1.3.1で修正されています。
全文翻訳
WebKitのIPおよびDNSリーク、プロキシブラウザとApple iCloud Private Relayに影響 2026-08-04 Talal Haj Bakry および Tommy Mysk iOSおよびmacOSのWebKitベースブラウザは、プロキシサーバー経由で全Webトラフィックをルーティングするように設定できます。これは、iOS上のTorブラウザや当社のPsyloが機能する方法です。3つのWebKit機能(DNSプリフェッチ、WebAuthn関連オリジンリクエスト、WebTransport)を発見しましたが、これらは設定されたプロキシをバイパスし、デバイスから直接トラフィックを送信するため、ユーザーの実際のネットワークが露呈します。同じリークは、AppleのiCloud Private Relayにも影響を与えます。すべてはPsylo 1.3.1で修正されています。目次概要# 当社のプルーフオブコンセプトウェブサイト leaks.psylo.app がリークを検出しますWebKitベースのブラウザは、iOSおよびmacOSでプロキシサーバー経由で全Webトラフィックをルーティングするように構築できます。これは、iOS上のすべてのプロキシブラウザ、iOS Torブラウザ、および当社のブラウザであるPsyloが機能する方法です。ウェブページが行うすべてのネットワーク接続は、設定されたプロキシを通過するはずなので、ウェブサイトはプロキシのIPアドレスしか認識しません。プロキシ設定をバイパスし、デバイスから直接トラフィックを送信する3つのWebKit機能を発見しました。DNSプリフェッチは、デバイスの通常のDNSパスを介してホスト名を解決するため、プロキシの代わりにユーザーの実際のDNSサーバーが明らかになります。iOS 26.0以降で利用可能です。WebAuthn関連オリジンリクエストは、オペレーティングシステムの認証情報サービスに、デバイスから直接検証ファイルをフェッチさせます。これにより、デバイスの実際のIPアドレスが露呈します。iOS 18.0以降で利用可能です。WebTransportは直接HTTP/3接続を開き、プロキシをバイパスするため、デバイスの実際のIPアドレスも露呈します。iOS 26.4以降で利用可能です。これらのリークは、AppleのiCloud Private Relayにも影響を与えます。VPNは、デバイスの全ネットワークトラフィックをシステムレベルでトンネリングするため、影響を受けないことに注意する必要があります。これらの問題について、Tor ProjectおよびOnion Browser on iOSの開発者に連絡しました。リークをテストするには、プルーフオブコンセプトウェブサイト leaks.psylo.app にアクセスしてください。Psylo 1.3.1で修正済み: Psyloは現在、dns-prefetchヒントをブロックし、WebTransportとWebAuthnをデフォルトで無効にしています。これらの機能を本当に必要とするウェブサイトの場合、各機能はサイロごとのトグルを介して再度有効にできます。この明示的なオプトインにより、プライバシーのトレードオフはユーザーの手に委ねられます。詳細は、Psylo 1.3.1で導入された緩和策を参照してください。背景# iOSおよびmacOSでのプロキシ設定# iOS 17およびmacOS 14で導入されたWKWebsiteDataStore.proxyConfigurationsにより、WebKitベースのブラウザは、アプリケーションレベルで全Webトラフィックをプロキシサーバー経由でルーティングできます。このAPIは、iOS上のプロキシブラウザの基盤です。ウェブページが行うすべてのネットワーク接続は、設定されたプロキシを通過するはずなので、ウェブサイトはプロキシのIPアドレスしか認識しません。PsyloユーザーからのDNSリーク報告# この調査は、特定のウェブサイトを訪問したときにのみDNSリークに気づいたPsyloユーザーからのバグ報告から始まり、すぐに調査を開始しました。Psyloは、各サイロからのすべてのトラフィックをMysk Private Proxy Network(またはユーザーが設定したカスタムプロキシ)経由でルーティングするため、DNSクエリはすべてプロキシサーバーから発生し、デバイスから発生することはありません。また、これが一部のウェブサイトのみに影響し、すべてではないのは奇妙に思えました。さらに深く掘り下げたところ、DNSリークの原因と、実際にはデバイスの実際のIPアドレスを露呈するさらに2つのリークを発見しました。これら3つのリークはすべてWebKit内にあり、WKWebsiteDataStore.proxyConfigurations によって提供されるプロキシ設定をバイパスします。AppleのApp Storeポリシーでは、すべてのiOSブラウザがWebKitを使用することを義務付けているため、このAPIをプロキシに使用するiOSブラウザはすべて、すべてのiOS TorブラウザおよびPsyloを含め、影響を受けます。これらのリークは、AppleのiCloud Private Relayにも存在します。一方、VPNは、デバイスの全ネットワークトラフィックがシステムレベルでVPN経由でトンネリングされるため、これらの問題の影響を受けません。iCloud Private Relay# iCloud Private Relayは、iCloud+加入者向けのAppleのプライバシー機能です。有効にすると、Safari(およびSafariのみ)のWebトラフィックとDNSクエリを、単一の当事者(Appleでさえ)があなたとあなたが訪問するサイトの両方を知ることができないように設計された2ホップリレーを介してプロキシします。判明したところによると、この記事で説明されている3つのリークすべてが、WebKitの標準的なページロードプロセス外で発生します。これは、Private Relayが同じリークの影響を受けることを意味します。1. DNSプリフェッチ# DNSプリフェッチにより、ウェブサイトはブラウザに、ホスト名を必要になる前に解決するように要求できます。そのため、後でそのホスト名に接続する必要がある場合、ルックアップはすでに完了しており、接続が速く開始されます。これは<link rel=