Megjelent egy eszközkészlet, amely a Chrome böngészőben telepített kiegészítők azonosításának módját valósítja meg. A kapott kiegészítők listája a passzív azonosítás pontosságának növelésére használható, más közvetett jelekkel együtt, mint például a képernyő felbontása, a WebGL sajátosságai, a telepített pluginek és betűtípusok listái. A javasolt megvalósítás több mint 1000 kiegészítő telepítését ellenőrzi. A rendszer tesztelésére online bemutató érhető el.
A kiegészítők azonosítása a kiegészítők által biztosított, külső lekérdezések számára elérhető erőforrások elemzésén keresztül történik. Jellemzően a kiegészítők különböző kísérő fájlokat tartalmaznak, például képeket, amelyek a kiegészítő manifestuma szerint a web_accessible_resources tulajdonsággal vannak meghatározva. Az első Chrome manifest verzióban az erőforrásokhoz való hozzáférés nem volt korlátozva, így bármely weboldal betölthette a biztosított erőforrásokat. A második manifest verzióban az ilyen erőforrásokhoz való hozzáférést alapértelmezetten csak a kiegészítő számára engedélyezték. A harmadik verzióban lehetővé vált meghatározni, hogy mely erőforrásokat adhassanak vissza mely kiegészítők, domainek és oldalak számára.
A weboldalak a kiegészítő által biztosított erőforrásokhoz a fetch módszer segítségével férhetnek hozzá (például „fetch(‘chrome-extension://okb….nd5/test.png’)”), amelynek „false” visszaadása általában azt jelzi, hogy a kiegészítő nincs telepítve. Egyes kiegészítők erőforrásokhoz való hozzáférés blokkolása érdekében validáló tokent generálnak, amely a forráshoz való hozzáféréshez szükséges. A fetch hívás token megadása nélkül mindig sikertelen.
Kiderült, hogy a kiegészítők erőforrásaihoz való hozzáférés védelme megkerülhető a művelet végrehajtási idejének kiértékelésével. Bár a fetch mindig hibát ad vissza token nélküli kérés esetén, a művelet végrehajtási ideje a kiegészítő jelenléte és hiánya között eltér - ha a kiegészítő jelen van, a kérés több időt igényel, mint ha a kiegészítő nincs telepítve. A reakcióidő kiértékelésével meglehetősen pontosan meg lehet határozni a kiegészítő jelenlétét.
Néhány kiegészítőt, amely nem tartalmaz külső erőforrásokhoz való hozzáférést, további tulajdonságok alapján lehet azonosítani. Például a MetaMask kiegészítőt a window.ethereum tulajdonság értékelésén keresztül lehet azonosítani (ha a kiegészítő nincs telepítve, akkor a «typeof window.ethereum» értéke «undefined» lesz).
Forrás: opennet.ru
