Preventing Pool-Party Attacks
brave.com
brave.com
This [0] is a 1 year old referenced wiki page in the article, which itself is a reference to a 3 year old Chromium bug [1].
The issue is, as some commenters mentioned, one process in another tab hogging all the sockets can make determine the timing on a new socket that is requested.
If the socket's timing is data dependent, then you can infer what the data is.
That's basically XS-search attacks [2]. [1] uses the example of 'https://mail.yahoo.com/d/search/keyword=', where the keyword "Amazon Purchase" consumes a socket and takes a longer amount of time due to our socket hogging vs. if we didn't hog it. This timing dependency lets us know across tabs that the victim buys stuff off Amazon.
In some cases, you can deterministically force the victim to execute this search query, and thus, the side channel.
[0]: https://xsleaks.dev/docs/attacks/timing-attacks/connection-p...
[1]: https://bugs.chromium.org/p/chromium/issues/detail?id=843157
[2]: https://xsleaks.dev/
More generously, I'd say they were giving the matter a more accessible name to raise consciousness about it and because they intend to do significant future work addressing it. There is a marketing angle to this: they might then claim to be the most private browser on this basis. However, given they are cooperating with other browser dev teams on this, if the danger of bypassing anti-fingerprinting measures is as serious as they say, this seems quite legitimate.
“Pool-party” attacks work by manipulating pools of browser resources which are limited (i.e., the browser restricts how many of the resource websites can open or consume) and unpartitioned (i.e., different contexts consume resources from the same pool). While the examples focused on in this work utilize limited-but-unpartitioned pools of network connections, browsers include many other limited-but-unpartitioned resource pools that could be similarly exploited, such as pools of file handles, subprocesses, or other resource handles.
A “pool-party” attack occurs when parties operating in distinct contexts (contexts the user expects to be distinct and blinded from each other) intentionally consume and query the availability of the limited resources in a resource pool, to create a cross-context communication channel. Each context can then use the communication channel to pass an identifier, allowing each party to link the users behavior across the two contexts. We note again that most commonly the two contexts considered here are two different websites running in the same browser profile, but could also be the same (or different) websites running in different browser profiles.
Seems like it would, for the resources to stay allocated. If that's the case, it's kind of a "hm, neat, fix the partitioning" to me rather than something that needs its own name and hoopla.
I'll stick to Firefox anyway :)
On top of network-level filtering!
How I wish all advertising networks worked like that.
Oh, yeah? They may aggregate or otherwise anonymize data but there is absolutely reporting to advertisers. https://github.com/brave/brave-browser/wiki/Security-and-pri...
They call it 'ad confirmations' and spend a lot of time trying to convince you that its all private. Its not all private to Brave itself, which is an advertising network.
And read again, the page states clear that Brave does not learn anything about the user.
The confirmation system is mostly to avoid client fraud. Not having such a system is against the interest of the users (they would lose reward-generating impressions to fraudsters) and to publishers (who currently pay Google/Facebook/Twitter whatever they claim to have printed).
Yes, it is an ad network. But as I said before, the problem is not with ads, it's the tracking and the industry practices. [0] we should be rooting for them to disrupt the industry, not just shrugging it off and hoping that the incumbents suddenly have a change of heart.
What is so difficult to understand?
You are talking about their 3PA (Privacy-preserving Product Analytics) telemetry system, which has nothing to do with the ads.
Personally, I'm willing to pay for a Browser that does not also need an ad network to support it.
To quote Brave "The goal is to show you privacy respecting ads that are relevant to the user in the right context. This is done by "matching" an ad that is (ideally) catered to you based on your browsing activity". https://support.brave.com/hc/en-us/articles/360055013431-Why...
It is clearly about you.
This is why there is the need to confirmation, so that Brave (and the publisher) can have a way to count how many ads were served and how much BAT is owed to each participant. At no moment it means that Brave or the publishers get any of your information.
(Is there any more false misconception that you would like to have debunked, or are you just trying to earn the reputation for your username?)
There is no activity logging and there is no "sharing". No one can prove who is the owner of the device that got the ad confirmation. No one can point at you after seeing an ad. All that is known is that advertiser X needs to pay for the confirmation Y. You don't need to reveal anything about yourself to be able to prove you have the confirmation. That's the whole point of double-blinded (or zero-knowledge) signatures.
Stop misrepresenting everything about how the system works, you are being incredibly dishonest.
What happens when you click on a Brave ad and it takes you to an advertiser's landing page? That advertiser gets to learn all kinds of things about your browser. Brave's obfuscation only goes so far, and they know how to work-around their own solution. Trust them if you'd like but I don't. I don't need yet another chromium browser.
Brave offers nothing that I cannot get elsewhere and includes an ad network. I think its Brave that is being dishonest, Brave cares about telling you a story and showing you ads, its marketing.
There are plenty of things to criticize about Brave, but what you are pointing out is a non-issue. You keep misrepresenting the information, I don't know if due to ignorance, bias or dishonesty. I want to believe it is only ignorance, because that is the easiest one to fix. Would you at least consider the possibility that you are assuming malice without any strong evidence?
Ok, now go with the other 28 people that think the same and see if you can hire one developer.
Or let's start much lower in the stack: let me know of ONE web service that is based on open standards and that you are paying right now.
Yeah, and my point is that people don't pay for software unless it gives them something (aka "value") that is not available in the free alternatives.
> I'm still not sure what you are getting at.
In one sentence: There is no sustainable business that can rely only on the people interested in paying for a browser solely for privacy reasons.
When Google places ads for its own products in better places than their customers that are paying for ad space we call that anti-competitive. When Brave blocks web ads and then offers their own ads instead you cheer it on, this is the same kind of anti-competitive practice.
Not everything needs to be free in exchange for ads/tracking/marketing.
> Google places ads (...) in better places than their customers (...) we call that anti-competitive. When Brave blocks web ads then offers their own ads (...) is the same kind.
No, not at all. On Google's case, they are getting money from an advertiser and giving them a worse value. They also take a lot of money from them based on fraudulent impressions which are hard to contest.
Brave has two separate actions: one, to block ads on the webpage. The other, to serve ad notifications from their own network.
The first is an action that is done by the user, for their own benefit. They could be using Brave, or they could be someone using uBlock on Firefox, it doesn't matter. When Brave blocks an ad on a page, they block for the benefit of the user, not for their own. As a matter of fact, only recently I realized that Brave's default blocking behavior is not as aggressive as I'd like, they still don't block first-party ads.
It's on the latter that Brave makes their money, and when they do their job well they are delivering more value to their customers (the advertisers) and for the end-users who opted-in and want to have a share of the revenue. The only ones losing value on this are those that insist on using ad networks with third-party scripts and cookies. To those I say good riddance.
Yes, Brave flips this and puts the burden on creators and make it more difficult for them to track the users, even if involuntarily. As an user and as a creator, I prefer it like this.
So instead, this approach has different adversaries sharing the fractional information they've gathered about this user and collaborate to build a stronger profile to positively identify the user.
The problem as I understand it is when you have two separate contexts, neither of which can unique identify you by themselves, and they want to test whether you are in fact the same user and furthermore send information between each other. The two contexts are usually either (1) two different websites, or (2) two different browsing contexts (two profiles or one is a private browsing / incognito session) on one site. The two contexts have a server-side communication channel to coordinate the attack. The two together may still not be able to uniquely identify you, but that's not the attack -- they just want to learn if you're the same user.
I haven't read the paper, but I imagine it to work like this: say you have a global maximum of 100 WebSocket connections allowed alive at once. Context 1 opens up WebSockets until opening a new one fails. Then it tells the other context "hey, watch this." Using a shared clock, it closes one of the sockets for 1 second, reopens one for 1 second, etc., producing a string of 1s and 0s. The other context reads this string by attempting to open a socket of its own for a millisecond before closing it. (This is all hypothetical, there are probably flaws all over this.) If the probe succeeds, that's a 0, else it's a 1. You pass across a randomly-generated UUID or something.
If you're using separate profiles, the advertiser (attacker) can now permanently remember that those profiles are actually the same person. You have a happy tracker, sad user.
To defeat it, you need to partition the maximum limit, which means you either allow massive overcommitting, or you artificially restrict everything to a small value. It looks like they're arguing for overcommitting, using the argument that this will cause the attack to degrade the user's experience enough that they'll stop using the site, which means it'll stop being used.
(To mitigate it, it seems like you could slow down the cross-context resource accounting, to make the bit rate too slow to be useful? But it probably doesn't take many bits.)
Let’s just say that most of the websites that require resources from a bunch of domain names are already a good heuristic for ad-infested pages.
But it is bad that you then decided to add a post to that effect.