Giter Club home page Giter Club logo

extension-detector's Introduction

Extension Detector

Check it out here: https://z0ccc.github.io/extension-detector

Chrome extensions can be detected by fetching their web accessible resources. These are files inside an extension that can be accessed by web pages. The detected extensions can be used to track you through browser fingerprinting.

This website scans over 1000 extensions and shows you the percentage of users that share the same extensions.

Browser Fingerprinting

Browser fingerprinting is a powerful method that websites use to collect information about your browser type and version, as well as your operating system, active plugins, time zone, language, screen resolution and various other active settings.

These data points might seem generic at first and don’t necessarily look tailored to identify one specific person. However, there’s a significantly small chance for another user to have 100% matching browser information.

Websites use the information that browsers provide to identify unique users and track their online behavior. This process is therefore called “browser fingerprinting.”

https://pixelprivacy.com/resources/browser-fingerprinting/

Web Accessible Resources

Web-accessible resources are files inside an extension that can be accessed by web pages or other extensions. Extensions typically use this feature to expose images or other assets that need to be loaded in web pages, but any asset included in an extension's bundle can be made web accessible.

By default no resources are web accessible; only pages or scripts loaded from an extension's origin can access that extension's resources. Extension authors can use the web_accessible_resources manifest property to declare which resources are exposed and to what origins.

Manifest v2 declaration

  "web_accessible_resources": [
    "test1.png",
    "test2.png".
  ]

Manifest v3 declaration

  "web_accessible_resources": [
    {
      "resources": [ "test1.png", "test2.png" ],
      "matches": [ "<all_urls>" ]
    }
  ],

Luckly in manifest v3 extensions will be able to enable 'use_dynamic_url' option, which will change the resource URL for each session (browser restart). This will render this detection method unusable.

https://developer.chrome.com/docs/extensions/mv3/manifest/web_accessible_resources/

Detecting Extensions

Fetching web accessible resources

A webpage can successfully fetch an installed extensions web accessible resource. If the fetch fails it usually means that the extension is not installed.

fetch(`chrome-extension://okbilfbeogweaoehlefnkodbefgpgknn/test.png`)
      .then(() => (true))
      .catch(() => (false))

Resource timing comparison

In an effort to prevent detection some extensions will generate a secret token thats required to access their web accessible resources. Any fetch operation made without the secret token will result in failure. Although its much more difficult to detect these protected extensions, its still possible.

Resources of protected extensions will take longer to fetch than resources of extensions that are not installed. By comparing the timing differences you can accurately determine if the protected extensions are installed.

MetaMask

Although MetaMask has no web accessible resources, it can still be easily detected by checking if typeof window.ethereum equals undefined. This will not work on Brave as typeof window.ethereum !== 'undefined' will return true regardless of whether the extension is installed or not.

  if (typeof window.ethereum !== 'undefined' && !navigator.brave) {
    return true;
  }
  return false;

Firefox

Detecting extensions using web accessible resources is not possible on Firefox as Firefox extension ID's are unique for every browser instance. Therefore the URL of the extension resources cannot be known by third parties.

Edge

This scan only detects extensions from the Chrome Web Store. Extensions from https://microsoftedge.microsoft.com can be detected using the same methods but are not supported by this tool.

Dev

This application is built with Javascript and React.

Clone this repo and run these commands to start the development server.

yarn
yarn run start

extension-detector's People

Contributors

z0ccc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

extension-detector's Issues

Don't know how you detect "Google Play Book". I don't have this extension!

Fake detection of "Google Play Book" on my PC. I don't have thazt extension at all (it may have been installed by default with Google Play, but it is no longer present since long, and I've never used it and it does not show in "extensions" or "apps".

Note that this is on my PC. If this is caused by the fact that it is preinstalled on my Android smartphone (and I cannot remove it, just disable it in Android), then there's some internal hidden communication via Google Servers and we should know how to disable it (and it is illegal). And it would be even more dangerous if a web site can target may smartphone via my PC, or the reverse.

Or there's a severe bbug in the Google's "IBA Optout", so that Google abuses our rights and does not tell the truth with its browser or with out user accounts (even if Google promised to change things related to the RGPD, this may also be faked).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.