Cross domain tracking even with 3rd party cookies disabled.
State Informative (Closed)
Disclosed publicly 2018-08-07T22:46:40.235Z
Reported To
Weakness none

submitted a report to Brave Software .

Cross domain tracking
Default settings from Brave browser has 3rd party cookies disabled. Which I am assuming also disables 3rd part storage like IndexedDB etc. Because of this protection it is not possible for a 3rd party to track users across multiple domains.

But, Even though third-party cookies is disabled by default using Shared workers, a third-party is able to track the user across domains and websites.

If you visit the these three pages in three tabs, you will notice that as a third-party it can learn the movement of a user across domains, even though the user has disabled 3rd party cookies.

The third party script is being loaded from


Because of this protection it is not possible for a 3rd party to track users across multiple domains. The demo is not very clever, but a 3rd party with a large footprint on the web can use this to track substantial web browsing behaviour of the user.


  • 0 attachments:
kmodi Activities::Comment
Also, this exploit can also be used to track user cross domain in private tabs. (Not across private tab and normal tab).

chocolatechipmuffin Activities::Comment
Hi @kmodi, Thanks for your submission. We are currently reviewing your report and will get back to you once we have additional information to share. Regards, @chocolatechipmuffin

toml Activities::BugInformative
Thanks for the report. We're aware of various vectors which can allow for cross-site third-party tracking, and we track some of them at In particular, we're aware of the challenge faced by workers: In general, fingerprinting or third-party tracking vectors aren't in scope for bounties in our program. It's not that these issues aren't a problem for privacy on the Web, it's just that there's a fine line between disabling tracking vectors and keeping websites working. Because of the large potential for disappointment with otherwise-valid reports (like this one) we think that balancing those details is better suited for our product team than in bug reports.

kmodi Activities::Comment
Hi @toml : Thank for responding. I respect what ever is the bounty policy. But I do not agree with the reasoning behind "disabling tracking vectors and keeping websites working". For the following reasons: 1. This issue was not about "Service workers" but instead about "Shared workers" : 2. Can you site some example where disabling "Shared workers" includes site breakage. In my experience, it should not break much, specially as compared to breakage one might observe with 3rd parties disabled. Shared workers can still function but double-keyed with origin. 3. I reported the same issue with Chromium, which was fixed (My naive understanding is that Brave picks some portion from Chromium) so I guess this port is missing. Issue: 4. I tested the same on other popular browsers: a. Firefox b. Chrome / Chromium c. Opera All with third party cookies disabled, the worker functionality works, but tracking is not possible. So I think, Brave putting privacy first, should be able to do it as well. In any case, request you to make this report public, and since it does not need to be a private issue, we can open a ticket on

toml Activities::AgreedOnGoingPublic
I'm happy to make this public, and happy to work on this issue in public on our GitHub. Working in public is always preferable, where possible. I certainly agree that this is an issue we should work to fix. And indeed, double-keying cookies accessed by workers may well be the right fix. We do use a lot of code from Chromium, and are in the process of a big rewrite to use even more of Chromium rather than Muon, our security-focused Electron fork. If this is already fully resolved in Chromium then we probably just get that fix automatically. You can check our newer more-Chromium-based work at It's still pretty rough around the edges and certainly not ready for primetime. If this is already fixed there then problem solved, right?

toml Activities::ManuallyDisclosed