|
@@ -1,6 +1,24 @@
|
|
|
From: uazo <uazo@users.noreply.github.com>
|
|
|
Date: Wed, 23 Mar 2022 08:37:47 +0000
|
|
|
-Subject: Partition dns requests by top-frame nik
|
|
|
+Subject: Partition DNS requests by top-frame NIK
|
|
|
+
|
|
|
+Chromium does not provide isolation of DOH requests (see related issue).
|
|
|
+This would easily allow DoH servers to reconstruct user navigation by device,
|
|
|
+especially if TLS Resumption is enabled.
|
|
|
+The patch fixes the problem by associating the DoH request to the top frame NIK,
|
|
|
+but in any case separating it with an additional layer because it is marked as a DNS
|
|
|
+request (IsDns in the NetworkIsolationKey).
|
|
|
+The patch adds two new flags:
|
|
|
+* kSplitDnsByNetworkIsolationKey, active by default
|
|
|
+* kLogSplitDnsByNetworkIsolationKey which allows check functionality (via a "DNS:" filter in logcat)
|
|
|
+
|
|
|
+Once the split is active the number of open connections to the DoH server will increase
|
|
|
+(which can be detected with apps like PCAPdroid) but the overhead seems manageable for
|
|
|
+any type of upstream DoH server.
|
|
|
+
|
|
|
+See also:
|
|
|
+* https://bugs.chromium.org/p/chromium/issues/detail?id=1082311
|
|
|
+* https://github.com/bromite/bromite/pull/1974
|
|
|
|
|
|
---
|
|
|
chrome/browser/about_flags.cc | 12 ++++++++++++
|
|
@@ -50,12 +68,12 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
|
|
|
|
|
|
+const char kSplitDnsByNetworkIsolationKeyName[] = "DNS Requests Partitioning";
|
|
|
+const char kSplitDnsByNetworkIsolationKeyDescription[] =
|
|
|
-+ "Partitions the dns requests by (top-level site) to "
|
|
|
-+ "disallow dns cross-site tracking.";
|
|
|
++ "Partition DNS requests by (top-level site) to "
|
|
|
++ "disallow DoH cross-site tracking.";
|
|
|
+
|
|
|
-+const char kLogSplitDnsByNetworkIsolationKeyName[] = "Log DNS Requests Partitioning";
|
|
|
++const char kLogSplitDnsByNetworkIsolationKeyName[] = "DNS Requests Partitioning logging";
|
|
|
+const char kLogSplitDnsByNetworkIsolationKeyDescription[] =
|
|
|
-+ "Log requests done by dns";
|
|
|
++ "Log DNS requests and their effective partitioning";
|
|
|
+
|
|
|
const char kSplitCacheByNetworkIsolationKeyName[] = "HTTP Cache Partitioning";
|
|
|
const char kSplitCacheByNetworkIsolationKeyDescription[] =
|