De toolkit voor het implementeren van de methode voor het identificeren van extensies die in de Chrome-browser zijn geïnstalleerd, is gepubliceerd. De verkregen lijst van extensies kan worden gebruikt om de nauwkeurigheid van de passieve identificatie van een specifieke browserinstantie te vergroten, in combinatie met andere indirecte aanwijzingen, zoals schermresolutie, kenmerken van WebGL, en lijsten van geïnstalleerde plug-ins en lettertypen. De voorgestelde implementatie controleert de installatie van meer dan 1000 extensies. Voor het controleren van uw systeem is er een online demonstratie aangeboden.
De identificatie van extensies gebeurt door het analyseren van de door extensies aangeboden bronnen die toegankelijk zijn voor externe verzoeken. In het algemeen bevatten extensies verschillende bijbehorende bestanden, zoals afbeeldingen, die in het manifest van de extensie zijn gedefinieerd met de eigenschap web_accessible_resources. In de eerste versie van het Chrome-manifest was de toegang tot bronnen niet beperkt en kon elke website de aangeboden bronnen laden. In de tweede versie van het manifest was toegang tot dergelijke bronnen standaard alleen toegestaan voor de extensie zelf. In de derde versie van het manifest werd de mogelijkheid geboden om te bepalen welke bronnen aan welke extensies, domeinen en pagina's kunnen worden gegeven.
Webpagina's kunnen de in de extensie aangeboden bronnen opvragen met behulp van de fetch-methode (bijvoorbeeld 'fetch(‘chrome-extension://okb….nd5/test.png’)'), waarbij een teruggeven waarde van 'false' doorgaans aangeeft dat de extensie niet is geïnstalleerd. Om de identificatie van een extensie op basis van beschikbare bronnen te blokkeren, genereren sommige extensies een verificatietoken dat nodig is om toegang te krijgen tot de bron. Een fetch-aanroep zonder het token mislukt altijd.
Het blijkt dat de bescherming van de toegang tot de bronnen van extensies kan worden omzeild door de tijdsduur van de bewerking te evalueren. Hoewel fetch bij een verzoek zonder token altijd een foutmelding retourneert, verschilt de tijd die nodig is voor de operatie als de extensie aanwezig is of niet — als de extensie aanwezig is, kost de aanvraag meer tijd dan wanneer de extensie niet is geïnstalleerd. Door de reactietijd te beoordelen, kan de aanwezigheid van de extensie vrij nauwkeurig worden vastgesteld.
Sommige extensies die geen externe bronnen beschikbaar stellen, kunnen worden geïdentificeerd op basis van aanvullende eigenschappen. Bijvoorbeeld, de MetaMask-extensie kan worden geïdentificeerd door de evaluatie van de eigenschap window.ethereum (als de extensie niet is geïnstalleerd, zal «typeof window.ethereum» de waarde «undefined» retourneren).
Bron: opennet.ru
