Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Aggressive fingerprinting mode removal #31229

Closed
arthuredelstein opened this issue Jun 22, 2023 · 14 comments · Fixed by brave/brave-core#20316
Closed

Aggressive fingerprinting mode removal #31229

arthuredelstein opened this issue Jun 22, 2023 · 14 comments · Fixed by brave/brave-core#20316

Comments

@arthuredelstein
Copy link

arthuredelstein commented Jun 22, 2023

We are considering removing aggressive fingerprinting mode, to reduce unneeded complexity in browser code and in the UI. To do this, we would need to work out which protections from aggressive mode to drop, and which ones to fold into default fingerprinting mode. Current protections in aggressive mode include:

Tasks

No tasks being tracked yet.
@davidcollini
Copy link

It would be nice to have Dark Mode protection as an option in the shields settings

@davidcollini
Copy link

davidcollini commented Sep 27, 2023

What's the plan for the other settings? Is there no possibility that we can keep them in default mode, but disable them for sites that break?

Also it doesn't seem like User Agent farbling should break that many sites for a regular user

@davidcollini
Copy link

I can't wait for the blog post to see how these are resolved, I'm quite curious

@stephendonner
Copy link

Hi @arthuredelstein ! Mind adding a testplan here, when you get a chance? Thanks! Adding QA/Blocked and QA/Test-Plan-Required just until we've got that, and then we'll be fully unblocked 👍

@stephendonner stephendonner added QA/In-Progress Indicates that QA is currently in progress for that particular issue and removed QA/Blocked QA/Test-Plan-Required labels Nov 16, 2023
@stephendonner
Copy link

stephendonner commented Nov 16, 2023

Verification PASSED using

Brave | 1.62.73 Chromium: 119.0.6045.163 (Official Build) nightly (x86_64)
-- | --
Revision | 522e9147d931744b1641084046c197caf7b341f0
OS | macOS Version 11.7.10 (Build 20G1427)

New Defaults - PASSED

brave://settings/Shields Shields' Advanced Controls
Screen Shot 2023-11-22 at 11 11 28 AM Screen Shot 2023-11-22 at 11 12 02 AM

https://dev-pages.bravesoftware.com/fingerprinting/strict-mode.html - PASSED

Steps:

  1. installed both 1.60.118 and 1.62.73
  2. launched Brave (release)
  3. ran the tests on https://dev-pages.bravesoftware.com/fingerprinting/strict-mode.html and https://dev-pages.brave.software/fingerprinting/strict-mode.html by clicking Generate Values
  4. noted the results
  5. compared 1.60.118 to 1.62.73

Confirmed identical results for the farbled values shown (values are the same for each version, not between versions, to be clear)

1.60.118

example example
Screen Shot 2023-11-22 at 11 17 10 AM Screen Shot 2023-11-22 at 11 17 17 AM

1.62.73

example example
Screen Shot 2023-11-22 at 11 18 51 AM Screen Shot 2023-11-22 at 11 19 07 AM

Upgrades from 1.60.x - PASSED

Shared Steps:

  1. installed 1.60.118
  2. launched Brave (release)
  3. opened brave://settings/shields
  4. ensured Block fingerprinting value was set appropriately for each Standard, Disabled, and Strict case
  5. shut down Brave
  6. installed 1.62.59
  7. renamed Brave-Browser user profile --> Brave-Browser-Nightly
  8. launched Brave (nightly)
  9. set brave://flags/#brave-show-strict-fingerprinting-mode to Disabled
  10. click Relaunch
  11. opened brave://settings/shields
brave://flags brave://version
Screen Shot 2023-11-22 at 11 07 01 AM Screen Shot 2023-11-22 at 11 13 11 AM

Block fingerprinting - Strict, may break sites - PASSED

1.60.118 1.62.73
Screenshot 2023-11-16 at 2 07 34 PM Screen Shot 2023-11-22 at 11 11 28 AM

Block fingerprinting - Standard - PASSED

1.60.118 1.62.73
Screenshot 2023-11-16 at 1 48 59 PM Screen Shot 2023-11-22 at 11 11 28 AM

Block fingerprinting - Disabled - PASSED

1.60.118 1.62.73
Screen Shot 2023-11-22 at 10 47 57 AM Screen Shot 2023-11-22 at 11 07 10 AM

@MadhaviSeelam
Copy link

Verification PASSED using

Brave | 1.62.105 Chromium: 120.0.6099.71 (Official Build) beta (64-bit)
-- | --
Revision | f72c783bcd52110d026061575b4bef28ccb547f7
OS | Windows 11 Version 22H2 (Build 22621.2715)
  1. Install 1.62.105
  2. launched Brave
  3. opened brave://flags in a new tab
  4. disabled #brave-show-strict-fingerprinting-mode flag
  5. opened brave://settings/shields
  6. navigated to brave.com site and clicked on Shields

Confirmed Block fingerprinting toggle is enabled as a default

Confirmed Block fingerprinting toggle is enabled as a default in Per site Shields setting

step 4 step 5 step 6
image image image

https://dev-pages.bravesoftware.com/fingerprinting/strict-mode.html - PASSED

Steps:

  1. installed both 1.61.101 and 1.62.105
  2. launched Brave (release)
  3. ran the tests on https://dev-pages.bravesoftware.com/fingerprinting/strict-mode.html and https://dev-pages.brave.software/fingerprinting/strict-mode.html by clicking Generate Values
  4. noted the results
  5. compared 1.61.101 to 1.62.105

Confirmed identical results for the farbled values shown (values are the same for each version, not between versions, to be clear)

1.62.105

example example
image image

1.61.101

example example
image image

Upgrades from 1.61.x - PASSED

Shared Steps:

  1. installed 1.61.101
  2. launched Brave (release)
  3. opened brave://settings/shields
  4. ensured Block fingerprinting value was set appropriately for each Standard, Disabled, and Strict case
  5. shut down Brave
  6. installed 1.62.105
  7. renamed Brave-Browser user profile --> Brave-Browser-Beta
  8. launched Brave (Beta)
  9. set brave://flags/#brave-show-strict-fingerprinting-mode to Disabled
  10. click Relaunch
  11. opened brave://settings/shields
brave://flags(default) brave://flags (disabled) brave://version brave://settings/shields
image image image image

Block fingerprinting - Strict, may break sites - PASSED

1.61.101 1.62.105 (a) 1.62.105 (b) 1.62.105 (c) 1.62.105 (d)
image image image image image

Block fingerprinting - Standard - PASSED

1.61.101 1.62.105 (a) 1.62.105 (b) 1.62.105 (c) 1.62.105 (d)
image image image image image

Block fingerprinting - Disabled - PASSED

1.61.101 1.62.105 (a) 1.62.105 (b) 1.62.105 (c) 1.62.105 (d)
image image image image image

@btlechowski
Copy link

Verified with

Brave 1.62.122 Chromium: 120.0.6099.144 (Official Build) beta (64-bit)
Revision cfddebe77d394064c472fda64afcd9fbed34ceb4
OS Linux

New Defaults - PASSED

brave://settings/Shields Shields' Advanced Controls
image image

https://dev-pages.bravesoftware.com/fingerprinting/strict-mode.html - PASSED

Steps:

  1. installed both 1.61.x and 1.62.x
  2. launched Brave (release)
  3. ran the tests on https://dev-pages.bravesoftware.com/fingerprinting/strict-mode.html and https://dev-pages.brave.software/fingerprinting/strict-mode.html by clicking Generate Values
  4. noted the results
  5. compared 1.61.x to 1.62.x

Confirmed identical results for the farbled values shown (values are the same for each version, not between versions, to be clear)

1.61.x

example example
image image

1.62.x

example example
image image

Upgrades from 1.61.x - PASSED

Shared Steps:

  1. installed 1.61.x
  2. launched Brave (release)
  3. opened brave://settings/shields
  4. ensured Block fingerprinting value was set appropriately for each Standard, Disabled, and Strict case
  5. shut down Brave
  6. installed 1.62.x
  7. renamed Brave-Browser user profile --> Brave-Browser-Beta
  8. launched Brave (beta)
  9. set brave://flags/#brave-show-strict-fingerprinting-mode to Disabled
  10. click Relaunch
  11. opened brave://settings/shields

Block fingerprinting - Strict, may break sites - PASSED

1.61.x 1.62.x
image image

Block fingerprinting - Standard - PASSED

1.61.x 1.62.x
image image

Block fingerprinting - Disabled - PASSED

1.61.x 1.62.x
image image

@GeetaSarvadnya GeetaSarvadnya added the QA/In-Progress Indicates that QA is currently in progress for that particular issue label Dec 28, 2023
@GeetaSarvadnya
Copy link

GeetaSarvadnya commented Dec 28, 2023

Verification PASSED on Vivo X70 Pro version 12 running Bravemonoarm64.apk_1.62.121

  1. Install 1.62.x
  2. launched Brave
  3. opened brave://flags in a new tab
  4. disabled #brave-show-strict-fingerprinting-mode flag
  5. opened brave://settings/shields
  6. navigated to brave.com site and clicked on Shields

Confirmed Block fingerprinting toggle is enabled as a default

Confirmed Block fingerprinting toggle is enabled as a default in Per site Shields setting

step 4 step 5 step 6
Screenshot_20231228_212920 Screenshot_20231228_210805 Screenshot_20231228_210848

https://dev-pages.bravesoftware.com/fingerprinting/strict-mode.html - PASSED

Steps:

  1. installed both 1.61.x and 1.62.x
  2. launched Brave (release)
  3. ran the tests on https://dev-pages.bravesoftware.com/fingerprinting/strict-mode.html and https://dev-pages.brave.software/fingerprinting/strict-mode.html by clicking Generate Values
  4. noted the results
  5. compared 1.61.x to 1.62.x

Confirmed identical results for the farbled values shown (values are the same for each version, not between versions, to be clear)

1.62.x

example example
Screenshot_20231228_211812 Screenshot_20231228_211907

1.61.x

example example
Screenshot_20231228_212005 Screenshot_20231228_212028

Upgrades from 1.61.x - PASSED

Shared Steps:

  1. installed 1.61.x
  2. launched Brave (release)
  3. opened brave://settings/shields
  4. ensured Block fingerprinting value was set appropriately for each Standard, Disabled, and Strict case
  5. shut down Brave
  6. installed 1.62.x
  7. renamed Brave-Browser user profile --> Brave-Browser-Beta
  8. launched Brave (Beta)
  9. set brave://flags/#brave-show-strict-fingerprinting-mode to Disabled
  10. click Relaunch
  11. opened brave://settings/shields

Block fingerprinting - Strict, may break sites - PASSED

1.61.x 1.62.x (a) 1.62.x (b) 1.62.x (c) 1.62.x (d)
Screenshot_20231228_212716 Screenshot_20231228_212848 Screenshot_20231228_212920 Screenshot_20231228_212933 Screenshot_20231228_213008

Block fingerprinting - Standard - PASSED

1.61.101 1.62.105 (a) 1.62.105 (b) 1.62.105 (c) 1.62.105 (d)
Screenshot_20231228_213059 Screenshot_20231228_213133 Screenshot_20231228_213159 Screenshot_20231228_213218 Screenshot_20231228_213233

Block fingerprinting - Disabled - PASSED

1.61.101 1.62.105 (a) 1.62.105 (b) 1.62.105 (c) 1.62.105 (d)
Screenshot_20231228_213321 Screenshot_20231228_213358 Screenshot_20231228_213421 Screenshot_20231228_213508 Screenshot_20231228_213526

@GeetaSarvadnya GeetaSarvadnya added QA Pass - Android ARM and removed QA/In-Progress Indicates that QA is currently in progress for that particular issue labels Dec 28, 2023
@Uni-verse Uni-verse added the QA/In-Progress Indicates that QA is currently in progress for that particular issue label Jan 19, 2024
@Uni-verse
Copy link
Contributor

Uni-verse commented Jan 19, 2024

Verified on Samsung Galaxy Tab S7 using version:

Brave	1.62.147 Chromium: 120.0.6099.234 (Official Build) (32-bit) 
Revision	3b25c3743150a54485dea24f0ceb1e69d6db51bc
OS	Android 13; Build/TP1A.220624.014; 33; REL
  1. Install 1.62.x
  2. Launched Brave
  3. Disabled #brave-show-strict-fingerprinting-mode flag in Brave://flags
  4. Open Brave Shields & privacy settings
  5. Navigate to any URL, open Shields panel
  • Ensured that Block Fingerprinting is enabled by default in Shields panel and in global settings.
  • Ensured that Block Fingerprinting is enabled for Standard and Strict mode on upgraded profile.
  • Ensured that Block Fingerprinting is disabled for Disabled mode on upgraded profile.

Feature Flag

Example Example Example
Screenshot 2024-01-19 at 6 15 39 PM Screenshot 2024-01-19 at 6 16 52 PM Screenshot 2024-01-19 at 6 18 30 PM

Farbling Test

First Test After restart
Screenshot 2024-01-19 at 6 31 45 PM Screenshot 2024-01-19 at 6 32 37 PM
Screenshot 2024-01-19 at 6 31 59 PM Screenshot 2024-01-19 at 6 32 25 PM

Upgraded Profile - Standard Mode

1.61.x Set Flag - 1.62.x Flag set - 1.62.x 1.62.x
Screenshot 2024-01-24 at 4 01 08 PM Screenshot 2024-01-24 at 4 03 11 PM Screenshot 2024-01-24 at 4 03 23 PM Screenshot 2024-01-24 at 4 03 38 PM

Upgraded Profile - Strict Mode

Example Example Example Example
Screenshot 2024-01-24 at 4 08 22 PM Screenshot 2024-01-24 at 4 11 32 PM Screenshot 2024-01-24 at 4 11 46 PM Screenshot 2024-01-24 at 4 12 11 PM

Upgraded Profile - Disabled

Example Example Example Example
Screenshot 2024-01-24 at 4 19 32 PM Screenshot 2024-01-24 at 4 16 28 PM Screenshot 2024-01-24 at 4 16 46 PM Screenshot 2024-01-24 at 4 16 56 PM

@Uni-verse Uni-verse added QA Pass - Android Tab and removed QA/In-Progress Indicates that QA is currently in progress for that particular issue labels Jan 24, 2024
@BenjaminAster
Copy link

@arthuredelstein Note that without aggressive fingerprinting protection, UNMASKED_RENDERER_WEBGL and UNMASKED_VENDOR_WEBGL from the WebGL WEBGL_debug_renderer_info extension will always return the true GPU info with no option to enable randomization of these values (see #10214). This is a pretty high-entropy source of fingerprintable information—shouldn't the current aggressive behavior (replacing the values with random gibberish) be folded into default fingerprinting mode? The entire canvas farbling is much less effective if websites can read the GPU type anyway.

@davidcollini
Copy link

@arthuredelstein Note that without aggressive fingerprinting protection, UNMASKED_RENDERER_WEBGL and UNMASKED_VENDOR_WEBGL from the WebGL WEBGL_debug_renderer_info extension will always return the true GPU info with no option to enable randomization of these values (see #10214). This is a pretty high-entropy source of fingerprintable information—shouldn't the current aggressive behavior (replacing the values with random gibberish) be folded into default fingerprinting mode? The entire canvas farbling is much less effective if websites can read the GPU type anyway.

If it's not put into default protections, this could potentially be a permission prompt that asks users if they want to let the website read their GPU info

@arthuredelstein
Copy link
Author

@BenjaminAster @davidcollini Thank you for these comments. We definitely want to have GPU protections in standard mode.

@BenjaminAster
Copy link

@arthuredelstein Thanks for the quick response! While I'm at it, I just opened #35646 where I have even more suggestions about anti-fingerprinting measures that I think Brave could still take.

@arthuredelstein
Copy link
Author

Thank you @BenjaminAster !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment