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

PrivacyBadger is missing blocking of HTML5 cookieless tracking (ping attributes) #587

Closed
charlesprogrammr opened this issue Aug 25, 2015 · 8 comments · Fixed by #941
Closed
Labels
enhancement help wanted privacy General privacy issues; stuff that isn't about Privacy Badger's heuristic

Comments

@charlesprogrammr
Copy link

With HTML5 came a new attribute to allow tracking of which links on a page are followed, which means we don't even have to click them. The attribute in question is called the _'ping' attribute_, and I don't see anything anywhere that addresses its abilities. PrivacyBadger should strip these attributes from each and every page to stop the use before its use becomes widespread.

@michael-oneill
Copy link

A very good point. Here is a description of it http://www.w3schools.com/TAGs/att_a_ping.asp

From: charlesprogrammr [mailto:notifications@github.com]
Sent: 25 August 2015 19:37
To: EFForg/privacybadgerchrome privacybadgerchrome@noreply.github.com
Subject: [privacybadgerchrome] PrivacyBadger is missing blocking of HTML5 cookieless tracking (#587)

With HTML5 came a new attribute to allow tracking of which links on a page are followed, which means we don't even have to click them. The attribute in question is called the 'ping' attribute, and I don't see anything anywhere that addresses its abilities. PrivacyBadger should strip these attributes from each and every page to stop the use before its use becomes widespread.


Reply to this email directly or view it on GitHub #587 .

@cooperq cooperq added this to the Privacy Badger 2.0 milestone Aug 27, 2015
@cooperq
Copy link
Contributor

cooperq commented Aug 27, 2015

Seems worth doing, I doubt this would even break anything we care about.

@charlesprogrammr
Copy link
Author

Thanks, Michael. Thanks, Cooper.

@gunesacar
Copy link
Collaborator

I checked how ping requests appear in onBeforeRequest listeners and found that tabID and the frameID of the ping requests are set to -1.

So PB can't know which tab and frame the pings belong to and thinks that they come from an internal tab since they satisfy the tabId < 0 condition in _isTabChromeInternal.

Ping requests have details.type = ping, so it's easy to distinguish them from other requests. PB could block all pings to tracking domains, but I can't think of a way to exclude pings of tabs that PB is disabled on.

Following Chrome bugs should be the root cause:
https://crbug.com/522124
https://crbug.com/522129

Not sure, what to do about that.

@cooperq
Copy link
Contributor

cooperq commented Sep 22, 2016

Hmm interesting. Another option would be to block all ping requests. @gunesacar @michael-oneill how much do you think this would break stuff?

@michael-oneill
Copy link

I doubt if it would break anything the user would care about, though it might stop some data going to the collectors. This is another situation where per-site user consent would work. If DNT header is not 0 in the beacon request, block it.

gunesacar added a commit to gunesacar/privacybadgerchrome that referenced this issue Sep 25, 2016
With this change PB will block requests from whitelisted tabs until
the following Chrome bugs are fixed and landed:
https://crbug.com/522124 (landed in dev channel)
https://crbug.com/522129
@gunesacar
Copy link
Collaborator

Here are some use cases I ran into:

Yet, I agree with @michael-oneill; blocking pings shouldn't break any critical functionality.

@gunesacar
Copy link
Collaborator

This block-all-the-pings approach only needs to be there until the Chrome bugs are fixed (then we'll know which tab/frame/origin is the initiator).

The good news is, one of the Chrome bugs is already fixed and landed in the dev channel. Motivated me to send a PR, but feel free to ignore if you think we better wait or not happy with the following behavior:

  1. PB will block all pings sent by open tabs until #522124 is landed (already landed in Chrome dev)
  2. PB will block all pings sent on onunload events until #522129 is landed
  3. Once the fixes are landed, PB will treat pings as any other request

gunesacar added a commit to gunesacar/privacybadgerchrome that referenced this issue Sep 28, 2016
With this change, PB will block requests from whitelisted tabs until
the following Chrome bugs are fixed and landed:
https://crbug.com/522124 (landed in dev channel)
https://crbug.com/522129
cooperq pushed a commit that referenced this issue Oct 6, 2016
With this change, PB will block requests from whitelisted tabs until
the following Chrome bugs are fixed and landed:
https://crbug.com/522124 (landed in dev channel)
https://crbug.com/522129
@ghostwords ghostwords added the privacy General privacy issues; stuff that isn't about Privacy Badger's heuristic label Nov 30, 2017
@ghostwords ghostwords changed the title PrivacyBadger is missing blocking of HTML5 cookieless tracking PrivacyBadger is missing blocking of HTML5 cookieless tracking (ping attributes) Nov 30, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement help wanted privacy General privacy issues; stuff that isn't about Privacy Badger's heuristic
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants