Review 000-tor-browser.js and 001-base-profile.js for 102
`browser/app/profile/000-tor-browser.js` may contain some old stuff that we could/should remove. Also do any work outlined in https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/32759 # `001-base-profile.js` Convention: **bold** = we need to follow up. - [x] `intl.locale.requested` - [x] `browser.search.update` - [x] `browser.rights.3.shown` - **Remove!** 😈️ (see comments) - [x] `startup.homepage_welcome_url`, `startup.homepage_welcome_url.additional` - S131 might be interested - [x] `browser.aboutwelcome.enabled` - [x] `startup.homepage_override_url` - [x] `app.update.promptWaitTime` - [x] `app.update.staging.enabled` - [x] `browser.slowStartup.{notificationDisabled,maxSamples,samples}` - **Remove!** 😈️ (see comments) - [x] `browser.disableResetPrompt` - [x] `browser.privatebrowsing.autostart` - [x] `browser.cache.disk.enable` - [x] `permissions.memory_only` - [x] `network.cookie.lifetimePolicy` - [x] `security.nocertdb` - [x] `dom.storage.next_gen` - **Remove!** 😈️ - [x] `browser.download.useDownloadDir` - **Remove the related checkbox?** --> #40656 - [x] `browser.download.manager.addToRecentDocs` - [x] `signon.rememberSignons` - **Remove the related checkbox?** --> #40656 - [x] `browser.formfill.enable` - **Remove the related checkbox?** --> #40656 - [x] `signon.autofillForms` - **Remove the related checkbox?** --> #40656 - [x] `browser.sessionstore.privacy_level` - [x] `browser.privatebrowsing.forceMediaMemoryCache` - [x] `media.memory_cache_max_size` - [x] `dom.security.https_only_mode` - **Add reference to the issue** - [x] `dom.security.https_only_mode.upgrade_onion` - **Move to `000-tor-browser.js`** - **Add reference to the issue** - [x] `security.ssl.require_safe_negotiation` - [x] `security.ssl3.dhe_rsa_aes_128_sha`, `security.ssl3.dhe_rsa_aes_256_sha`, `security.ssl3.ecdhe_ecdsa_aes_256_sha`, `security.ssl3.ecdhe_ecdsa_aes_128_sha`, `security.ssl3.ecdhe_rsa_aes_128_sha`, `security.ssl3.ecdhe_rsa_aes_256_sha`, `security.ssl3.rsa_aes_128_sha`, `security.ssl3.rsa_aes_256_sha` - [x] `browser.send_pings` - https://kb.mozillazine.org/Browser.send_pings - Still a thing, didn't even know about this thing from the specs - [x] `geo.enabled` - Completely disable geolocation - Even part of legal terms! - Usage is through static prefs - [x] `geo.provider.network.url` - Still used, but not sure we have a good reason to reassign it, since we are disabling geolocation in general (defense in depth?) - **Keep it, or delete it?** - **My resolution: be coherent with the rest and keep it** - [x] `browser.search.suggest.enabled` - Still used, and synchronized with `about:preferences#search` (**remove it from there?**) --> #40656 - [x] `browser.safebrowsing.*` - All of them are still used - There are also additional preferences `browser.safebrowsing.provider.*` with URLs, see `modules/libpref/init/all.js` - Like `geo.provider.network.url` confuses me a little bit - [ ] `extensions.ui.lastCategory` - Still used, but I don't have a clue on why we use it, especially since when you go to `about:addons` you override it. - **To be checked again** - [x] `datareporting.healthreport.uploadEnabled` and `datareporting.policy.dataSubmissionEnabled` - Used also in `DisableTelemetry` in `browser/components/enterprisepolicies/Policies.jsm`! - that function also sets `toolkit.telemetry.archive.enabled`, **should we add it, too**? - "This can only be enabled if `unified` is on." - **My resolution: add it** - [x] `toolkit.telemetry.unified`, `toolkit.telemetry.enabled`, `toolkit.telemetry.updatePing.enabled` - Still used, see https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/internals/preferences.html - **That document contains a few preferences for GeckoView**. - It is especially about [the streaming API](https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/internals/geckoview-streaming.html), which is an alternative mode to the regular one, disabling it doesn't seem to disable telemetry - **My resolution: ignore them** - [x] `default-browser-agent.enabled` (Windows only) - Seems to be still used, and it's [telemetry for engagement/marketing purposes](https://firefox-source-docs.mozilla.org/toolkit/mozapps/defaultagent/default-browser-agent/index.html): it checks users' default choices, even though they aren't Firefox. - It is also disk leak, since it schedules as a Windows task, and it needs to copy data to the registry! - [x] `identity.fxaccounts.enabled` - Disables Firefox account/sync. Still many occurrences in the code. - [x] `services.sync.engine.*` - Still used, but there are a few new preferences: - `services.sync.engine.bookmarks` - `services.sync.engine.history` - `services.sync.engine.passwords` - `services.sync.engine.addresses` - `services.sync.engine.creditcards` - They are synchronized with a `sync.inc.xhtml` panel, which we **should be sure it is disabled** - Should we keep them, and **add the new ones**, even though we find it's possible to completely opt out the synchronization with a more generic pref (like `identity.fxaccounts.enabled`)? - As usual, is it to be seen as a defense in depth? - **My resolution: add them for now, and remove them in the future, if we decide we don't actually need them** - [x] `browser.region.network.scan` - "Include wifi data in region request." - Already disabled by default, but being explicit here seems a good idea - [x] `browser.region.network.url`, `browser.region.update.enabled` - Still used, but unlike the previous ones, have other defaults - `toolkit/modules/Region.jsm` also contains `browser.region.local-geocoding` (already `false`), **should we add it explicitly?** - **My resolution: yes add it** - [x] `browser.tabs.remote.separatedMozillaDomains` - Allows Mozilla-controlled webpages to access privileged features. Still used and we need to keep it empty. - See https://firefox-source-docs.mozilla.org/dom/ipc/process_model.html#privileged-mozilla-content - [ ] `browser.urlbar.dnsResolveSingleWordsAfterSearch` - "Did you mean to go to $host?" - https://firefox-source-docs.mozilla.org/browser/urlbar/preferences.html - Is S131 browser expected to be able to access the LAN? In case **we might move this to Tor Browser-only**. - **Beware of possible fingerprinting**: this question is asked with a notification box, which will make the letterbox change (related: #41433) - [x] `messaging-system.rsexperimentloader.enabled` - Still used in toolkit/components/nimbus/lib/RemoteSettingsExperimentLoader.jsm - The same file also has `app.shield.optoutstudies.enabled`, **should we add it**? - They are used in the same `if` in `init` - **My resolution: added, to be coherent with other prefs** - Notice that you don't enable opting out, if you want to opt out you have to set it `false` 😐️ - Anyway, it's already `false` currently, so yet another defense in depth - [x] `trailhead.firstrun.branches` - **Remove!** 😈️ (see comments) - [x] `browser.newtabpage.activity-stream.asrouter.userprefs.cfr.{addons,features}` - See above, too - [x] `network.trr.resolvers` - **Seems an old preference, and new `network.trr.*` exist**, including one to set `https://mozilla.cloudflare-dns.com/dns-query` as the default TRR provider (see StaticPrefLiast.yaml`) - Compare with Firefox 78 and #40048. - **My resolution: changed to `network.trr.default_provider_uri`** - [x] `network.trr.exclude-etc-hosts` - Still used, but **we should explain** why `false` actually is the right value for us - [x] `security.pki.crlite_mode` - Might be interesting, though. The problem is telemetry/downloads from Mozilla (see #40048) - [x] `signon.management.page.breach-alerts.enabled` - "Firefox displays critical alerts in the Lockwise password manager when a website is breached." (#40048) - Still used, disabled to prevent sending telemetry/data to Mozilla - [x] `extensions.fxmonitor.enabled` - Old pref for Firefox 78 (#40048), used in `browser/components/fxmonitor/FirefoxMonitor.jsm`, but then disabled in https://bugzilla.mozilla.org/show_bug.cgi?id=1696550 and removed in https://bugzilla.mozilla.org/show_bug.cgi?id=1712838 - **Remove!** 😈️ - [x] `signon.management.page.mobileAndroidURL` and `signon.management.page.mobileAppleURL` - Part of lockwise :coffin:, removed with b67b613817b790bfdb0a2e2155b9c8c4f5a61eb2 - **Remove!** 😈️ - [x] `signon.recipes.remoteRecipes.enabled` - Still used - [x] `dom.serviceWorkers.enabled` and `dom.push.enabled` - Still used - [ ] `webgl.disable-fail-if-major-performance-caveat`, `webgl.enable-webgl2` - Still used - **How do they help against fingerprinting?** - [x] `gfx.downloadable_fonts.fallback_delay` - #27258 - [ ] `browser.startup.homepage_override.buildID` - **How does it help against fingerprinting?** I guess it was added to the user-agent back then, but now Firefox always show the spoofed date. Or is it used also for telemetry? - We have a patch to `browser/components/BrowserContentHandler.jsm` realted to this pref (the updater). **Shall we review it?** - `modules/libpref/Preferences.cpp` contains a list of preferences that are fingerprintable, and therefore removed from child processes, should we have a look at them, too (especially `extensions.lastAppBuildId`). - [x] `browser.link.open_newwindow.restriction` - Bug #9881: Open popups in new tabs (to avoid fullscreen popups) - https://kb.mozillazine.org/Browser.link.open_newwindow.restriction - Still valid - [ ] `media.benchmark.vp9.threshold` - "Set video VP9 to 0 for everyone (bug #22548)" - **Is this still a valid reason?** - Used as a static pref - [ ] `dom.enable_resource_timing` - "Bug #13024: To hell with this API" - Luckily enough timings are much more limited as a default, and 8 years ago was before spectre/meltdown. **Check again the status of this, and add more reasons for which we should keep this?** - Used as a static pref - [x] `privacy.resistFingerprinting` - Lol. **We should move this as the first one of the category?** - **My resolution: done it** - [x] `privacy.resistFingerprinting.block_mozAddonManager` - Thanks Mozilla :slight_smile: . - [ ] `dom.webaudio.enabled` - #13017 - Still used, also as a static pref - **S131: what are the relations between this and WebRTC?** - [x] `dom.webmidi.enabled` - Done for 102 in #41398. - [ ] `dom.w3c_touch_events.enabled` - **WIP**, see #28535 - [x] `dom.vr.enabled` - Still valid; `false` by default also in Firefox (see `StaticPrefList.yaml`), but we disabled it explicitly in case Mozilla enabled it without us noticing. - Not reviewed, too, probably - #21607 - [ ] `security.webauth.webauthn` - Reference: #26614, but **if I understand correctly, this has never been audited!** Disabled because we didn't audit, but then now followed up - Possible problem: we don't want this _for Android_ because it depends on a proprietary dependency (that however might be replaced with a GPLv3 one) - In any case, the preference is still valid - [ ] `dom.postMessage.sharedArrayBuffer.withCOOP_COEP` - Still valid (used as a static pref) - **Can we open #40016 again**? I'm not satisfied by the way it was closed. - Maybe related: #17412, but problems might have been solved, see [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements) - Also related: #40177 - [ ] `security.remote_settings.intermediates.enabled` - Still used. Interestingly enough, this is `true` by default only on Android - Disabled in #30682, but **gk opened #40099 to follow up** - [x] `dom.use_components_shim` - Wow, `Components.interfaces` for sites is still a thing on Firefox :see_no_evil: - Related: legacy/trac#2874 - [x] `privacy.resistFingerprinting.letterboxing` :slight_smile: - [x] `dom.netinfo.enabled` - **Change the comment as Thorin suggested** :slight_smile: - The default is also `false` - [x] `network.http.referer.defaultPolicy` - It sets the value that is already the default, but it does it only for non-PBM sessions (it takes for granted that PBM also has the same value). The reason was that it hasn't always been the default, see (#32948). - **Should we explicitly tell to do so in all modes?** Or at least, should we update the description to tell it's a defense in depth? - **My resolution: yes** - [x] `network.http.referer.XOriginTrimmingPolicy` - Recently updated, see #17228. - [ ] `media.videocontrols.picture-in-picture.enabled` - **Disabled only because not yet audited** - See #40147 and #40148 - [x] `network.http.referer.hideOnionSource` - **Move to `000-tor-browser.js`** - Original issue: #22320 - [x] `network.http.windows-sso.enabled` - #40463 - **We should remove the related checkbox in `about:preferences`** --> #40656 - [ ] `dom.enable_event_timing` - #40383 - Minimum is 16ms and rounded by 8ms; **if we decided that we lost the war against time measurements we could even re-enable this**. - [x] `dom.textMetrics.actualBoundingBox.enabled`, `dom.textMetrics.baselines.enabled`, `dom.textMetrics.emHeight.enabled`, `dom.textMetrics.fontBoundingBox.enabled` - Not sure of the original issue, but it seems it arrived with 91.2 ESR update. In any case, it's enough obvious why we need them :wink: - [x] `pdfjs.enableScripting` - Added recently (#40424), **we should add the reference also to the file** - [x] `javascript.options.large_arraybuffers` - https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/40177#note_2758404 - Basically, don't expose 32-bit. Unless there's another way to do so now. - [x] `browser.display.use_system_colors` - Added recently, but might need more work in the future, see #40057 - [x] `privacy.firstparty.isolate` - [ ] `privacy.partition.network_state` - https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/40308#note_2723512 - **Check again and/or update the comment** - [x] `network.cookie.cookieBehavior` and `network.cookie.cookieBehavior.pbmode` - [ ] `network.predictor.enabled` - **_temporarily_ disabled** #16633 and #21657 - [ ] `privacy.purge_trackers.enabled` - **Update the issue number to the correct one** (#40220) - **Check what GeckoView does** (see the issue) - Not sure on why we don't want this... - [x] `network.dns.disablePrefetch` - **Do we need also `network.dns.disablePrefetchFromHTTPS`**? - **My resolution: yes**, even policies disable both - [x] `network.protocol-handler.*` - More details in https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/25559#note_2846617 - [x] `network.proxy.allow_bypass` - [x] `network.http.tailing.enabled` - [x] `network.http.http2.*` - [x] `network.gio.supported-protocols` - **Add the reference to the bug number** (#23044) - [ ] `media.peerconnection.enabled` - **S131: This is for WebRTC, should we move it to Tor Browser?** - [ ] `media.gmp-provider.enabled`, `media.gmp-manager.url.override` and `media.gmp-manager.updateEnabled` - They are okay, but **we might use them for S131 stuff**, so we should add them to our notes somewhere - There's also a related ticket: #15910 (**add it to the pref file - added**) - [ ] `browser.eme.ui.enabled`, `media.gmp-widevinecdm.visible`, `media.gmp-widevinecdm.enabled`, `media.eme.enabled`, `media.mediadrm-widevinecdm.visible` - All still used, **but to track for S131, too** - However, I wouldn't remove them and add them back to Tor Browser, I would keep them and then remove in S131's branch, so that base-browser remains unencumbered - [x] `devtools.webide.autoinstallADBExtension`, `devtools.webide.enabled` - **Remove!** 😈️ (see comments, basically webide isn't a thing anymore) - [x] `devtools.debugger.chrome-debugging-host` - [x] `network.file.disable_unc_paths` - [x] `network.file.path_blacklist` - Cannot find our related issue, but found c6cbbca92205d461e1b9869fd39a79362fc0e9c1. However, everything is explained in Bugzilla (and wow, I didn't know about `file:///net`). - [x] `svg.disabled` - [x] `mathml.disabled` - [x] `svg.context-properties.content.allowed-domains` - [ ] `security.ssl.enable_false_start` - Still a thing, **but I think we could review the TLS preferences** - Couple of related issues: #18274 #28536 - [x] `network.http.connection-retry-timeout` - We set 0, which means "do not use a second connection" - **Only Tor Browser**, if still needed (see legacy/trac#7656) - **Moved, and follow up in the performance issue** (#32759) - [x] `network.manage-offline-status` - To avoid phoning home? I found the related bug #18945, but not the exact reason. - [x] `network.captive-portal-service.enabled` and `network.connectivity-service.enabled` - Still used, and okay both for Tor Browser and base-browser. S131 might want something different, and maybe customize `network.connectivity-service.IPv{4,6}.url` - [x] `dom.push.serverURL` - **Add the reference to the issue** (#18801) - [x] `extensions.autoDisableScopes` - "If the add-on is a foreign install and is in a scope where add-ons that were dropped in should default to disabled then disable it" - We use scope 0, i.e., we don't disable any addon (why? Is this because of HTTPS-E :coffin: and NoScript?) - [x] `extensions.bootstrappedAddons` - **Already obsolete in 68** (#30845). - [x] `extensions.checkCompatibility.4.*` - **Remove!** 😈️ - [ ] `extensions.databaseSchema` - It's still recognized, for XPI stuff... But why are we using it? **I'd like to remove it, if possible**. - [ ] `extensions.enabledScopes` - We allow also `SCOPE_APPLICATION`, **is it for NoScript?** Default scope is profile, otherwise, but I am not sure on how the whole thing works, since Mozilla bundles addons, after all, like the screenshots - [ ] `extensions.pendingOperations` - This is used by Firefox to do things, **why are we setting its default, that Firefox will change it anyway?** - [x] `extensions.getAddons.showPane`, `extensions.htmlaboutaddons.recommendations.enabled` - Still used, the former has even a policy - [ ] `extensions.webextensions.restrictedDomains` - **I'd like a second audit on it, opened an issue to follow-up** (#41445) - [x] extensions.postDownloadThirdPartyPrompt - Show the prompt to install addons even though they are "recommended by Mozilla" - Recommended by Thorin in #40177 - [x] `intl.multilingual.downloadEnabled` - [x] `browser.uiCustomization.state` - #13318, #13378, #16510 - [x] `security.cert_pinning.enforcement_level` - [x] `security.osclientcerts.autoload` - Great move: https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/33534#note_2683533 - [x] `security.family_safety.mode` - [x] `security.enterprise_roots.enabled` - [x] `security.certerrors.mitm.priming.enabled` - [x] `gfx.offscreencanvas.domain-enabled`, `gfx.offscreencanvas.domain-allowlist` - [x] `browser.share_menu.allow` - [x] `browser.urlbar.suggest.topsites` - [x] `browser.urlbar.update1.{interventions,searchTips}` - **Remove!** 😈️ (see comments) - [x] `corroborator.enabled` - **Add the reference to the issue** (#40048) - [x] `taskbar.grouping.useprofile` - "If marked as such in prefs, use a hash of the profile path for the id instead of the install path hash setup by the installer." - S131 might want a different value (provided it's still useful, after we disable the items) - [x] `browser.taskbar.lists.enabled`, `browser.taskbar.lists.frequent.enabled`, `browser.taskbar.lists.tasks.enabled`, `browser.taskbar.lists.recent.enabled` - Good, but for ESR115 we'll have to test the new things about private mode that arrived recently # `000-tor-browser.js` - [x] `app.update.notifyDuringDownload` - [x] `app.update.url.manual` - [x] `app.update.url.details` - [x] `app.update.badgeWaitTime` - [x] `app.releaseNotesURL` - [x] `app.releaseNotesURL.aboutDialog` - [x] `app.feedback.baseURL` - [x] `browser.shell.checkDefaultBrowser` - [x] `network.proxy.socks` - [x] `network.proxy.socks_port` - [x] `network.proxy.socks_remote_dns` - [x] `network.proxy.no_proxies_on` - [x] `network.proxy.allow_hijacking_localhost` - [x] `network.proxy.type` - [x] `network.proxy.failover_direct` - Used as a static pref - [x] `network.security.ports.banned` - [x] `network.dns.disabled` - [x] `network.http.max-persistent-connections-per-proxy` - [ ] `browser.uiCustomization.state` - **Should we make sure it's only in one place?** I.e., delete the one from `001-base-profile.js` once we add the one in `000-tor-browser.js`? (but I haven't compared them, yet) - [x] `browser.uiCustomization.state` - [x] `network.http.http3.enabled` - [x] `torbrowser.version` - [ ] Review the old torbutton/torlauncher preferences (we have another issue for that)
issue