I may be old-fashioned in this regard but I prefer websites and companies to know as little about me as possible, unless the information are used for a service that I make active use of. I do not mind Amazon knowing that I’m an adult male, as this is blocking recommendations and offers aimed at a female audience on the site.
The method used tests if certain extensions are installed in the browser, which is different from listing all installed extensions. Here are the technical details on how this can done:
Every addon has a manifest.json file. In http[s]:// page you can try to load a script cross-scheme from chrome-extension:// URL, in this case – the manifest file. You just need the addon unique id to put into URL. If the extension is installed, manifest will load and onload event will fire. If not – onerror event is there for you.
You may still remember the CSS History Leak issue were a list of popular web addresses was used on websites to find out if a visitor did visit those sites in the past. The principle is the same, only the execution is different.
A proof-of-concept page has been created that Chrome users can visit for a demonstration. Chrome users without extensions installed, or other browser users, are not affected by this at all.
This has two implications. First a privacy one, as websites can use the information for a variety of purposes. They can for instance test if an adblocker is installed, or social networking, shopping or pregnancy extensions. Security is the other one. Malicious websites could check if add-ons with known vulnerabilities are installed that are no longer maintained by the author.
According to information posted in the comment section, add-ons installed from a custom-packed extension file or that are loaded unpacked are not recognized by the script.