Tor users, beware: 'Scheme flooding' technique may be used to deanonymize you
- Reference: 1620999125
- News link: https://www.theregister.co.uk/2021/05/14/browser_fingerprinting_flaw/
- Source link:
That means, for example, if you browse the web using Safari, Firefox, or Chrome for some websites, and use the Tor browser to anonymously view others, there is a possibility someone could link your browser histories across all those sessions using a unique identifier, potentially deanonymize you, and track you around the web.
Doing this is non-trivial, it can be very inaccurate or unreliable, and so this is more of a heads up than anything else.
[1]
[2]
[3]
Konstantin Darutkin, senior software engineer at FingerprintJS, said in a [4]blog post that the company has dubbed the privacy vulnerability "scheme flooding." The name refers to abusing [5]custom URL schemes , which make web links like "skype://" or "slack://" prompt the browser to open the associated application.
"The scheme flooding vulnerability allows an attacker to determine which applications you have installed," explains Darutkin. "In order to generate a 32-bit cross-browser device identifier, a website can test a list of 32 popular applications and check if each is installed or not."
Visiting the [6]schemeflood.com site using a desktop (not mobile) browser and clicking on the demo will generate a flood of custom URL scheme requests using a pre-populated list of likely apps. A browser user would typically see a pop-up permission modal window that says something like, "Open Slack.app? A website wants to open this application. [canel] [Open Slack.app]."
[7]
But in this case, the demo script just cancels if the app is present or reads the error as confirmation of the app's absence. It then displays the icon of the requested app if found, and moves on to its next query.
The script uses each app result as a bit to calculate the identifier. The fact that the identifier remains consistent across different browsers means that cross-browser tracking is possible, which violates privacy expectations.
The technique has been successfully tested on Chrome 90 (Windows 10, macOS Big Sur), Firefox 88.0.1 (Ubuntu 20.04, Windows 10, macOS Big Sur), Safari 14.1 (macOS Big Sur), Tor Browser 10.0.16 (Ubuntu 20.04, Windows 10, macOS Big Sur), Brave 1.24.84 (Windows 10, macOS Big Sur), Yandex Browser 21.3.0 (Windows 10, macOS Big Sur), and Microsoft Edge 90 (Windows 10, macOS Big Sur). Opera was not tested.
[8]Would be so cool if everyone normalized these pesky data leaks, says data-leaking Facebook in leaked memo
[9]Cracked copies of Microsoft Office and Adobe Photoshop steal your session cookies, browser history, crypto-coins
[10]Brave buys a search engine, promises no tracking, no profiling – and may even offer a paid-for, no-ad version
[11]What's CNAME of your game? This DNS-based tracking defies your browser privacy defenses
[12]Brave browser leaks visited Tor .onion addresses in DNS traffic, fix released after bug hunter raises alarm
The Register initially could not get a result from Safari on macOS Big Sur because the test failed to complete. Ironically, given what's going on in the [13]Epic v. Apple trial at the moment, the Safari test froze when it could not find "com.epicgames.launcher://test". But after clearing cookies and storage in Safari, we did manage to run the demo PoC and generate consistent fingerprint.
There have been some reports of inconsistent results and Darutkin has acknowledged that browser settings/flags, slow hardware or VMs, a slow internet connection, or user gestures during the PoC demo may skew the app count.
[14]
The various affected browsers should defend against scheme flooding but they don't. "Weaknesses in these safety mechanisms are what makes this vulnerability possible," explains Darutkin. "A combination of CORS policies and browser window features can be used to bypass it."
For example, Chrome, alone among the major browsers, has implemented scheme flood protection that requires user interaction to launch a custom scheme resource. However, Chrome extensions aren't bound by this policy because they need to be able to open custom URLs like "mailto://" links without interaction. So opening a PDF file with the built-in Chrome PDF Viewer extension resets the scheme flood prevention flag and enables the abusive app count.
The issue has been [15]reported to the Chromium team which is currently looking at ways to address the problem.
In Firefox and Safari, scheme flooding works because the browser loads different internal pages depending upon whether the requested app is present or absent, which is all the information needed for that bit in the 32-bit app-count identifier. The situation is similar for the Tor browser, which is based on Firefox code, but requires the use of iframe elements to check app presence – and also time. It can take minutes to fingerprint a user.
As far as browser fingerprinting goes, counting apps isn't necessary when visiting a website can reveal [16]a large number of software and hardware characteristics. But browser makers should address scheme flooding nonetheless.
FingerprintingJS includes this disclaimer with Darutkin's blog post to clarify that the sort of fingerprinting enabled by [17]its JavaScript library is not the same as the fingerprinting made possible with the scheme flooding vulnerability:
"FingerprintJS does not use this vulnerability in our products and does not provide third-party tracking services. We focus on stopping fraud and support modern privacy trends for removing third-party tracking entirely. We believe that vulnerabilities like this one should be discussed in the open to help browsers fix them as quickly as possible." ®
Get our [18]Tech Resources
[1] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_security/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=2&c=2YJ6emecV@iefDawMCckbkwAAANE&t=ct%3Dns%26unitnum%3D2%26raptor%3Dcondor%26pos%3Dtop%26test%3D0
[2] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_security/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44YJ6emecV@iefDawMCckbkwAAANE&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0
[3] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_security/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=3&c=33YJ6emecV@iefDawMCckbkwAAANE&t=ct%3Dns%26unitnum%3D3%26raptor%3Deagle%26pos%3Dmid%26test%3D0
[4] https://fingerprintjs.com/blog/external-protocol-flooding/
[5] https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/protocol_handlers
[6] https://schemeflood.com/
[7] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_security/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44YJ6emecV@iefDawMCckbkwAAANE&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0
[8] https://www.theregister.com/2021/04/20/facebook_data_breach/
[9] https://www.theregister.com/2021/04/13/cracked_copies_of_microsoft_office/
[10] https://www.theregister.com/2021/03/03/brave_buys_a_search_engine/
[11] https://www.theregister.com/2021/02/24/dns_cname_tracking/
[12] https://www.theregister.com/2021/02/22/in_brief_security/
[13] https://www.theregister.com/2021/05/12/ios_lock_in_epic_trial/
[14] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_security/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=3&c=33YJ6emecV@iefDawMCckbkwAAANE&t=ct%3Dns%26unitnum%3D3%26raptor%3Deagle%26pos%3Dmid%26test%3D0
[15] https://bugs.chromium.org/p/chromium/issues/detail?id=1208903
[16] https://amiunique.org/
[17] https://github.com/fingerprintjs/fingerprintjs
[18] https://whitepapers.theregister.com/
Re: web links like "skype://" or "slack://"
ftp:// ? (or more usefully sftp://
The whole point is that it's a protocol definition - it's explicitly there to enable more than just http, otherwise it wouldn't be needed at all.
Re: web links like "skype://" or "slack://"
But the protocol should be implemented in the browser (as ftp protocol is), not passed off to a completely different application. IMO this should include "mailto://" - either the browser should bring up a "not available" message or should implement an outgoing mail client in the browser itself (or browser add-on) rather than opening the OS default mail client.
Re: web links like "skype://" or "slack://"
Don't forget "mailto://", the most useful of the bunch.
Problem already solved
If you're seeing this message, that means JavaScript has been disabled on your browser, please enable JS to make this app work.
Sure, hold your breathe while I get right on that...
I think many who take privacy really seriously will be running this kind of stuff in separate Jails, Chroots or VMs. So none of these "fake urls" will work anyway.
Just munging it all together on your main install to wreak havok is a little bit 90's ;)
Isn't that the point though?
The fact you (or the privacy conscious) don't have these apps but I do, is what would make our "fingerprints" different. Therefore this could still be used to differentiate your cohorts interactions from mine.
The fact the app is detected or not is the trigger. I think the article was trying to say that a bit of JS shouldn't be able to determine that fact, one way or another, however, not having the apps is no real defence.
Happy to be corrected.
The Tor foundation can say anything they want but privacy is not something you get using Tor.
In fact using Tor lights you as a Christmas tree, gets your real Ip banned and probably gets you on government watchlists while we are at it.
https://duckduckgo.com/?q=tor+is+not+private
The tor site makes it extremely clear that tor is not of itself sufficient to ensure anonymity. However you are completely incorrect to say that it is likely to get your real IP address banned - the destination site is highly unlikely to know what your IP address is. It might get an online *account* banned. It may well also get you flagged with law enforcement as a "person of interest" if your ISP monitors and logs all connections made via a tor entry node, though the more people who use tor at least occasionaly the less this will be the case. There was a time when anyone sending any encrypted data over the Internet would be flagged as a potential ne'er-do-well. But these days almost all web sites use SSL so encrypted traffic is the norm rather than the exception.
Pretty unreliable
The browser I am typing this into gave different results each time I tried it. In most cases it claimed it found 23 out of the 24 it looked for - but a different 23 each time (and most of the apps are definitely not installed on this Linux system).
Another much more locked down browser I use for looking at links I am investigating (like ones I suspect are phishing) was (ironically) more stable - it gave me the same 22 out of 24 each time (although, again, most of those apps are not really present).
My Tor Browser config gave a completely repeatable 0 out of 24. Of course, without JS turned on it didn't work at all.
However, the point remains that this is a real tracking vulnerability. And the unreliability on my system may be due to unusual timings or other things which could be fixed in the javascript.
Re: Pretty unreliable
It gives me different results in Firefox and Safari, and several of the programs were ones I've never even heard of, much less installed.
Additional shortcomings
Not mentioned are two major additional shortcomings that make this all but useless in practice: first, most browser instances will support the default collection of URI schemes shipped with it (because there's no guarantee that everyone, or even anyone, will install third-party extensions that support others), which means most sessions will resolve to the same fingerprint. So maybe it should be called Bertillon numbers instead. Second, there's no real reason these should work across browsers: each browser can have its own collection of extensions installed and even expose a different set of supported schemes to different user profiles. They are relying on desktop environment (mis-)features and a shotgun approach to extension installation by third-party (mal-)software that are easily defeated by users willing to do some trivial work. Which admittedly probably has considerable overlap with the set of users who wouldn't install this crap in the first place, but still.
Bottom line: there's one more highly ineffective and inefficient way to fingerprint users who have consciously chosen to take zero interest in their own privacy by installing a fleet of third-party crapware and letting it shit all over their entire accounts. This is surely the very least of their many problems, and for the rest of us it's not a real problem at all.
Does not work
This doesn't really work. For a start I see a bunch of popup windows appear in both Firefox and Edge so I can see it happen and could prevent it.
The cross-browser fingerprint doesn't work - I see different identifiers in Firefox and Edge. Firefox missed that I have MS Word installed. Edge thought I have all 24 tested apps installed when I only have 10 installed. Both results are repeatable.
web links like "skype://" or "slack://"
These things should absolutely be forbidden and blocked by default.
I do not want a browser to be able to launch anything on my computer. A browser's job is to allow me to browse the Web, not my application list.