brave/adblock-lists

List first-id.fr as a bounce tracker

Opened this issue · 7 comments

Hi,

I suggest adding the domain first-id.fr (and its host gate.first-id.fr) as a bounce tracker in https://github.com/brave/adblock-lists/blob/master/brave-lists/debounce.json

This company offers a service to publishers to exploit First-Party cookies, via a bounce, as Third-Party identifier vectors.
-> https://www.first-id.fr/

It is more and more used in France, with very big publishers. Brave should block it.
Note: in order not to break the navigation, the bounce should be kept, but the cookies droped in the first-id.fr domain should be deleted, otherwise, it might cause infinite 302 loops.

pes10k commented

@Ktbzaman thank you for the issue! Can you provide an example of a page that uses this bounce tracking service and / or an example of the bounce-tracking URL format they use?

Sure, this bounce tracker is well known in France and used by many top-tier publishers (hence Brave should definitely identify it and block it).
By the way, I tested the Bounce Mitigation in Chrome's Privacy Sandbox and saw that it effectively detects it. I don't know if that can help.

Anyway, here are a list of publishers using first-id.fr :

A very easy way to see it's being used is to check for a first-party cookie in the publisher domain named "firstid".

A good protection against bounce trackers is to let them do their things but then delete their cookies. This is what Chrome's Privacy Sandbox is doing.

As for an example of a complete bounce-tracking URL they use: https://gate.first-id.fr/?redirectHost=https%3A%2F%2Fwww.allocine.fr%2Ffirst-id%2F&redirectUri=%2Fseries%2F

pes10k commented

flagging @ryanbr on this. If this looks good to include, lets merge it in

This one is not straightforward because the full destination URL is not contained within a single parameter:

$ curl --head -L 'https://gate.first-id.fr/?redirectHost=https%3A%2F%2Fwww.allocine.fr%2Ffirst-id%2F&redirectUri=%2Fseries%2F'
HTTP/2 302 
location: https://www.allocine.fr/first-id/?firstId=778313ba32bd437fcde4534ed1b664a4&redirectUri=%2Fseries%2F

HTTP/2 301 
location: https://www.allocine.fr/series/

HTTP/2 200 

Instead, the redirectHost and the redirectUri are combined server-side (in a very obvious way of course) to produce https://www.allocine.fr/first-id/?firstId=778313ba32bd437fcde4534ed1b664a4&redirectUri=%2Fseries%2F. If we simply redirected to the redirectHost URL, it would not be the same destination URL as following the full redirect chain and we would end up on the homepage of the site instead (via https://www.allocine.fr/first-id/?firstId=778313ba32bd437fcde4534ed1b664a4).

So we'd need to add support for combining these two parameters in the debouncer before we can create a working rule for this.

pes10k commented

at one point I think we had regex support, though i dont remember if it got pulled. If we do have regex support, we could probably stitch things together that way. If not then maybe worth P3'ing adding it in

Or maybe, just letting the bounce happen and drop all first-party cookies in the first-id.fr domain at a given frequency (like every hour)?
If Brave maintains a blacklist of tracker domains, this looks to be an easy and safe way to block such techniques (once their cookie is dropped, their ID is useless, it will change all the time for all domains).

@Ktbzaman I think what you're describing is the unlinkable bouncing feature.