News for hackers. Stuff that matters.
Re:Browser Fingerprinting: A Survey by wongarsu on Monday May 06, 2019 @07:39AM (#19838441)
According to the paper the most useful attributes for browser fingerprinting are:

- User agent

- List of Plugins

- Screen resolution and color depth

- Canvas

- WebGL Renderer (~GPU Model)

Maybe Canvas can be fixed to a degree, but the others feel like things that will inherently be different. Firefox with the privacy.resistfingerprinting setting solves all of these at least partially (and more), but not without some usability tradeoffs.

Re:Browser Fingerprinting: A Survey by Jonnax on Monday May 06, 2019 @08:50AM (#19838916)
Browser plugins really need to go away. If it's not implementable normally then it shouldn't be on the web. In my opinion at least.

GPU models also should not be given, browsers need to abstract features and performance into something else. Like if I'm writing a WebGL app, I should just be able to test a few baselines configs.

User agent is a tricky one, Chrome on Android gives too much info because it's built by an advertising company.

Re:Browser Fingerprinting: A Survey by Abishek_Muthian on Monday May 06, 2019 @10:49AM (#19839919)
Even Firefox, Firefox Privacy on Android gives away android version in the User Agent. New Tor browser (android) fakes it, I remember even old Orfox used to give away device name as well & there used to exist an open issue to address it in their issue tracker.
Re:Browser Fingerprinting: A Survey by ekianjo on Monday May 06, 2019 @09:37AM (#19839251)
> Browser plugins really need to go away. If it's not implementable normally then it shouldn't be on the web. In my opinion at least.

So no more ad blockers?

Re:Browser Fingerprinting: A Survey by saagarjha on Monday May 06, 2019 @09:47AM (#19839331)
There’s a difference between plugins and extensions. Plugins add support for new types of media (think Flash, Java) while extensions are your adblockers and userscripts.
Re:Browser Fingerprinting: A Survey by Spivak on Monday May 06, 2019 @10:54AM (#19839979)
Plugins also provide support for new video codecs. Plugins are definitely the wrong place for it but I would be so happy to see codecs factored out of individual browsers.
Re:Browser Fingerprinting: A Survey by AgentME on Monday May 06, 2019 @07:10PM (#19844857)
That would make the list of supported video codecs a better fingerprinting mechanism.
Re:Browser Fingerprinting: A Survey by Ajedi32 on Monday May 06, 2019 @10:14AM (#19839568)
Is there any reason why we couldn't have all browsers on all platforms use the same user agent header? I realize some sites use the user agent as a crude form of feature detection, but it's my understanding that that's generally considered to be bad practice.
Re:Browser Fingerprinting: A Survey by dumbmatter on Monday May 06, 2019 @11:42AM (#19840410)
Sometimes there are browser bugs that are impossible to do feature detection for, in which case have no better option than looking at the user agent.

For instance, several versions of Firefox had a serious bug in shared workers, which appeared intermittently when users opened your site in multiple tabs https://stackoverflow.com/questions/51092596/feature-detecti... - I had to use the user agent to work around this.

Re:Browser Fingerprinting: A Survey by EastSmith on Monday May 06, 2019 @12:58PM (#19841322)
Sure, this is a fair use case. But then can't the browser tell the end user that someone wants to read this browser data so the user has a chance to say "no"?
Re:Browser Fingerprinting: A Survey by dredmorbius on Tuesday May 07, 2019 @07:35AM (#19848459)
Changing user-agent is virtually always possible, though a vanishingly small fraction of users will do so.

Bundling into adblockers or browsers directly would help.

Re:Browser Fingerprinting: A Survey by wongarsu on Monday May 06, 2019 @10:49AM (#19839908)
Apart from the difficulty of obscuring this information from JavaScript, it's politically impossible.

Chrome could change its header to the header of a competitor or a neural one, but has no reason to (Google's main business is delivering ads). For other big browsers like Firefox and Safari it would be a huge loss to change the header: they would vanish from browser market share statistics, and with that the business case to make websites work well with their browser dwindles. That in turn would reduce their actual market share. That only leaves the browser with a market share so tiny they are ignored by developers, and those browsers do often spoof the user agent header (or at least make it very convenient to do so).

Re:Browser Fingerprinting: A Survey by dwild on Monday May 06, 2019 @02:48PM (#19842509)
> GPU models also should not be given

You don't need the model to fingerprint it. It's performance is probably more than enough.

Re:Browser Fingerprinting: A Survey by dillondoyle on Monday May 06, 2019 @05:07PM (#19843883)
you can get both primitives values+settings in addition to entropy similar to canvas fingerprint using shaders which will render slightly different across different devices.
Re:Browser Fingerprinting: A Survey by modzu on Monday May 06, 2019 @08:58AM (#19838981)
thats like saying programs should go away if its not implementable by the OS. its just a different layer. browser plugins are tremendously useful

edit: also your comment seems to imply that plugins are used for websites trying to do something the browser doesnt support (ex flash) -- while this is sometimes done, most plugins add additional functionality for the user, ex adblockers, usability improvements, etc

Re:Browser Fingerprinting: A Survey by kalleboo on Monday May 06, 2019 @09:17AM (#19839108)
Plugins and extensions are different things.

The `navigator.plugins` used for fingerprinting is just for NPAPI/PPAPI stuff like Flash, Java, Silverlight. Just about all browsers are also in the process of deprecating support for them.

(it can also be possible to fingerprint browser extensions, but that is a bit trickier as it's not served up directly by the browser as a handy array)

Re:Browser Fingerprinting: A Survey by modzu on Monday May 06, 2019 @12:50PM (#19841212)
oh yes my bad, thanks. i was thinking extensions (maybe thanks to all the ff news!). wrt fingerpritning plugins, it seems to be the least of the issues and hopefully not an issue for long :)
Re:Browser Fingerprinting: A Survey by 3xblah on Monday May 06, 2019 @10:28AM (#19839698)
The first "attribute" is simply an HTTP header. As such it can be selected and changed by the user. The user may choose not to send a User-Agent header at all. IME, few sites actually require a User-Agent header in order to retrieve a page. Developers sometimes try to vary page content based on this header. For example, send a certain string containing the name of a "bot" and you might get nothing. The detection occurs before any content is returned.

The rest of these "attributes" are not HTTP headers, and occurs after the resource is fetched. We do not need to give away this information in order to retrieve the resource. The fingerprinting problem arises because the software we use to do the retrieval does far more than retrieve web pages. These other attributes cannot be detected unless the software used to retrieve the web page also includes other features that process what is retrieved, including a Javascript engine that runs code straight from the internet ("browser").

Looking to the authors of a popular browser to solve the problem they themselves have created. Is it rational to expect that this is where the solution will come from?

If one is willing to make some "useability tradeoffs" then one might use a simple http client to retrieve web pages instead of a popular browser. After the pages are retrieved, then one can use a popular browser to view them if desired; the browser need not have access to the internet. This is what I do. Not to avoid "fingerprinting" but just because it is faster and more robust.

With the help of a trivial program that transforms urls into http (I wrote one), one can retrieve the text/html of web pages, without requesting all the third party advertising cruft, with any tcp client such as netcat. HTTP pipelining becomes easy, making consumption of large quantities of information more efficient -- many pages, one connection. The two programs together form an "http client" with, relative to a popular browser, or even a program like curl, very low code complexity.

Whenever I see the "fingerprinting" debate come up, I always go through the same thought experiment: For situations where "fingerprinting" is a problem, web users all use the same simple http client. All send the same minimal headers. The web must accomodate users not the other way around.

Re:Browser Fingerprinting: A Survey by gruez on Monday May 06, 2019 @10:42AM (#19839833)
>The first "attribute" is simply an HTTP header. As such it can be selected and changed by the user.

Maybe if you have script disabled, but if you have javascript it's trivial to detect which browser you're on based on javascript implementation quirks alone.

>We do not need to give away this information in order to retrieve the resource.

You clearly haven't seen mandatory javascript sites.

Re:Browser Fingerprinting: A Survey by 3xblah on Monday May 06, 2019 @05:04PM (#19843862)
"Maybe if you have script disabled."

You are making the assumption that I am using a browser to retrieve the page. I can use a simple http client with no features such as JS to retrieve the page. I have full control over what headers I send and the contents of those headers.

"You clearly haven't seen mandatory javascript sites."

I have seen many sites that prod the user to enable JS yet still return the same text/html even when JS is disabled. Sometimes I am only after the content of the page: text, URLs pointing to images or other resources, URLs pointing to other sites, etc.

I have seen some sites where there is "no content" in the initial page fetched, with or without JS enabled. These are dummy sites, hollow shells, skeleton pages. The technique is simply misdirection. All the useful content is pulled from another site via a second request (JS triggering the request). Maybe this is a CDN. I simply read the JS or use a debugger to find this "endpoint". Then use the simple http client to request the content as usual. These dummy sites are not the majority of sites on the web, nor even the majority of sites posted to HN.

The endpoints supporting these "no content", dummy sites often deliver the text with fewer or no tags, without HTML. Maybe it is JSON. This makes it easier for me to format it the way I like it. What many HN readers may perceive as a growing nuisance I believe could be a blessing in disguise. I prefer delivery of content in a more "raw" format allowing the user to process it as she pleases client-side, with the software of her choice. This leaves no room for advertising. It is more efficient and the user becomes the creative one, deciding how she wants to present the content to her own eyes.

Re:Browser Fingerprinting: A Survey by muxator on Monday May 06, 2019 @08:00PM (#19845154)
Is this really your day-to-day way of browsing the internet? Like if you were web scraping all the time?

If so, I want to shake your hand, sir.

Re:Browser Fingerprinting: A Survey by 3xblah on Monday May 06, 2019 @08:37PM (#19845361)
For commercial use of the web, things like internet banking, purchasing, etc., I use what is "recommended". The popular web browser.

For non-commercial use of the web, I use what I want to use. A simple http client and/or text-only browser.

My day-to-day use of the internet is almost always 100% non-commercial.

I never want to use a Javascript-enabled browser for simply retrieving information from the web. For example, reading. This is non-commercial activity.

For simple information retrieval, I find a large, complex, popular, recommended "browser", a single, "do-everything" program, is overkill and, counterintuitively perhaps, such browsers loaded with "features" actually limit what I can do. Using smaller, simpler "one-purpose" programs to retrieve web pages allows me more flexibiilty. I can be more productive.

Using single-purpose programs, I also find the retrieval process to be more reliable and robust, not to mention more transparent. I know exactly what I am sending. Unlike the popular browsers, these programs are not fetching and running code from the internet automatically. I feel a greater sense of control.

Re:Browser Fingerprinting: A Survey by alkonaut on Monday May 06, 2019 @05:30PM (#19844084)
What plug-ins I have shouldn’t concern the server on the other end. Why does is it transferred?

Canvases should never be readable by the other end without explicit permission. Basically transmitting anything rendered to a canvas should be equivalent to using my web camera from an integrity standpoint.

Time zone, operating system (from a short list) and language is fine, because it’s not a lot of entropy and my ip is known anyway unless on a vpn.

Gl renderer/graphics card, desktop resolution - nah. The viewport dimension is all that should be known.

Basically the browser should by default have an entropy budget for my entire fingerprint that ensures I’m not personally identifiable.

Re:Browser Fingerprinting: A Survey by 9HZZRfNlpR on Monday May 06, 2019 @06:52PM (#19844748)
How can you not transfer the info about plugins? You test them the in front, can he done in million ways with JavaScript and send it to a server of your choice.
Re:Browser Fingerprinting: A Survey by username223 on Monday May 06, 2019 @12:36PM (#19841046)
> - User agent

This could be fixed with a bit of courage. Firefox could use "Firefox", Safari "Safari," etc. UA sniffing and UA strings are completely absurd at this point, and need to go away.

> - List of Plugins

JavaScript should not see this, especially not their versions.

The last three are harder to avoid for "responsive" web design. One attribute you didn't mention was the font list. There is no good reason for JavaScript to be able to see this. The model should be that the page requests a font, and the browser uses either that or its best try at a substitute.

Re:Browser Fingerprinting: A Survey by ken on Monday May 06, 2019 @12:51PM (#19841224)
It's a nice idea, but major sites still do user agent sniffing. Try setting your UA to one of those strings and visiting google.com -- the SERP looks like it came from 2009.

If Firefox tried that, it would instantly become that weird browser that makes Google look bad. The internet would be flooded with tips on how to set a custom UA that made it pretty again.

Re:Browser Fingerprinting: A Survey by username223 on Monday May 06, 2019 @02:20PM (#19842220)
> Try setting your UA to one of those strings and visiting google.com -- the SERP looks like it came from 2009.

I just tried, and it's great! I had forgotten that search could be so snappy and simple. The more likely outcome, unfortunately, is that Google would adjust its UA-sniffing to serve the same 2019 bloat to "Firefox."

Re:Browser Fingerprinting: A Survey by thejohnconway on Monday May 06, 2019 @08:32AM (#19838781)
Surely user agents could give out way less information (virtually none in fact?).
Re:Browser Fingerprinting: A Survey by wongarsu on Monday May 06, 2019 @08:54AM (#19838939)
You can't get around giving nearly the entirey of the User Agent string simply thorugh feature detection (well, except for the phone model when on mobile). Canvas and WebGL can be fixed by limiting their functionality, or at least that's what Firefox does in the aforementioned mode. Canvas could conceivably be fixed to just behave the same everywhere, but for WebGL you have to limit it to some common denominator to hide the GPU model, so privacy nessesitates less functionality. The list of plugins can be spoofed to be empty. Screen resolution (or more importantly, window size) has to be somewhat accurate because lots of websites use it for responsive design. Firefox can round the window size to the nearest multiple of 200x100 which doesn't break too many things, but that's still far from giving the same value for everyone.

https://wiki.mozilla.org/Security/Fingerprinting

Re:Browser Fingerprinting: A Survey by zzzcpan on Monday May 06, 2019 @08:58AM (#19838983)
> Canvas could conceivably be fixed to just behave the same everywhere, but for WebGL you have to limit it to some common denominator to hide the GPU model

You can just measure performance of those things then.

Re:Browser Fingerprinting: A Survey by bartimus on Monday May 06, 2019 @09:10AM (#19839061)
Unless two browsers are identical there's almost always a way to detect some particularity.
Re:Browser Fingerprinting: A Survey by munk-a on Monday May 06, 2019 @11:59AM (#19840594)
And even if the browsers are identical there are still some ways to detect different user based on client side behavior (assuming JS is enabled, or some particularly crazy CSS)
Re:Browser Fingerprinting: A Survey by wongarsu on Monday May 06, 2019 @09:26AM (#19839162)
Just giving the same value for everyone on the latest version of Firefox using Windows 10 with a maximized window on a 1920p display would seriously hamper fingerprinting. It can still be enough when used with other information (IP, visited sites etc), but at least it would dilute the signal a lot.
Re:Browser Fingerprinting: A Survey by bartimus on Monday May 06, 2019 @10:09AM (#19839519)
Section 3.2 'Advancing fingerprinting' shows some more ways you can find particularities which will be hard to hide.
Re:Browser Fingerprinting: A Survey by Jonnax on Monday May 06, 2019 @08:44AM (#19838866)
Yes it really should.

Chrome on Android reports your phone model and build number. If you're using a lessor known phone with a carrier specific ROM, then you're in a really tiny population.

Re:Browser Fingerprinting: A Survey by Fnoord on Monday May 06, 2019 @08:34AM (#19838794)
Yes, but it will break functionality because servers use it to apply hacks on the website before the content is served.

WebRTC is another one which you can disable. JavaScript, in general, as well, requiring uMatrix.

Chrome leaks the extensions you use, Firefox does not (AFAIK). As for blocking canvas, see [1]

To test your fingerprinting I can recommend IPleak [2]

The problem of this all is, its a usability nightmare.

[1] https://addons.mozilla.org/en-US/android/addon/canvasblocker...

[2] https://www.ipleak.net

Re:Browser Fingerprinting: A Survey by tinus_hn on Monday May 06, 2019 @08:55AM (#19838949)
They’ll manage. Just standardize to a fixed value.
Re:Browser Fingerprinting: A Survey by 1024core on Monday May 06, 2019 @01:35PM (#19841770)
> Chrome leaks the extensions you use,

Sure... "leak", wink wink.

Re:Browser Fingerprinting: A Survey by zaarn on Monday May 06, 2019 @08:45AM (#19838876)
Not without breaking Grandma's favorite online banking website.
Re:Browser Fingerprinting: A Survey by mobjack on Monday May 06, 2019 @09:51AM (#19839365)
User agents are not that great of tracking.

If you use a common device and browser kept up to date to the latest versions, then you are not going to be unique. Using Safari on an iPhone will make you similar to 30% of web traffic.

Browsers also update all the time changing the user agent so it isn't that reliable tracking over extended periods of time.

The am I unique websites seem to compare your user agent to a database with outdated browser versions from the past data, making your score look much scarier than it really is. If you keep things up to date, chances are that you are not that unique.

Re:Browser Fingerprinting: A Survey by everdrive on Monday May 06, 2019 @09:13AM (#19839085)
I'm a bit old school when it comes to browser tracking, and as such I'm not as familiar with Canvas. What exactly is Canvas? What information is provided which can be tracked? Are there ways to disable Canvas without installing browser extensions?
Re:Browser Fingerprinting: A Survey by matthewaveryusa on Monday May 06, 2019 @09:34AM (#19839230)
Basically different devices and browsers render high-level graphical objects, such as fonts, differently. When you visit a site that does canvas tracking, a small javascript snippet will ask your browser to render a few graphical things on an html5 canvas and export that canvas to a png. The hash of that png is a good fingerprint of your hardware, browser and rendering software.
Re:Browser Fingerprinting: A Survey by rubidium on Monday May 06, 2019 @12:34PM (#19841021)
Just to be clear, the only reason to do this is fingerprinting, correct?
Re:Browser Fingerprinting: A Survey by dillondoyle on Monday May 06, 2019 @05:09PM (#19843902)
which has legitimate use cases in fraud detection and login security (eg recaptcha)
Re:Browser Fingerprinting: A Survey by mindslight on Monday May 06, 2019 @09:02PM (#19845487)
It's a bit of a stretch to cast those as "legitimate use". A security vulnerability is a security vulnerability, regardless of who exploits it.
Re:Browser Fingerprinting: A Survey by kalleboo on Monday May 06, 2019 @09:29AM (#19839190)
The Wikipedia page has a pretty good summary https://en.wikipedia.org/wiki/Canvas_fingerprinting

Basically Canvas is a JavaScript API for programmatically drawing graphics and text. Subtle differences in color, font rendering, antialiasing etc will produce different rendering on different hardware depending on OS, browser, GPU, drivers, etc. This lets a site running JavaScript to generate a hash unique to everyone with your specific combination of software and hardware and uniquely identify you without cookies.