جعبه ابزاری منتشر شده است که روشی را برای شناسایی افزونه های نصب شده در مرورگر کروم پیاده سازی می کند. فهرست به دست آمده از افزونهها میتواند برای افزایش دقت شناسایی غیرفعال یک نمونه مرورگر خاص، در ترکیب با سایر شاخصهای غیرمستقیم، مانند وضوح صفحه، ویژگیهای WebGL، لیستهای افزونهها و فونتهای نصبشده استفاده شود. پیاده سازی پیشنهادی نصب بیش از 1000 افزونه را بررسی می کند. یک نمایش آنلاین برای آزمایش سیستم شما ارائه می شود.
تعریف افزونه ها از طریق تجزیه و تحلیل منابع ارائه شده توسط افزونه ها، در دسترس برای درخواست های خارجی ساخته شده است. به طور معمول، افزونهها شامل فایلهای همراه مختلفی مانند تصاویر هستند که در مانیفست افزونه توسط ویژگی web_accessible_resources تعریف میشوند. در اولین نسخه مانیفست کروم، دسترسی به منابع محدود نبود و هر سایتی میتوانست منابع ارائه شده را دانلود کند. در نسخه دوم مانیفست، دسترسی به چنین منابعی به طور پیش فرض فقط برای خود افزونه مجاز بود. در نسخه سوم مانیفست این امکان وجود داشت که مشخص شود کدام منابع را می توان به کدام افزونه ها، دامنه ها و صفحات داد.
صفحات وب می توانند منابع ارائه شده توسط افزونه را با استفاده از روش واکشی درخواست کنند (به عنوان مثال، "fetch('chrome-extension://okb....nd5/test.png')")، که بازگشت "نادرست" معمولاً نشان می دهد. که افزونه نصب نشده است. برای جلوگیری از تشخیص وجود منبع، برخی از افزونهها یک رمز تأیید مورد نیاز برای دسترسی به منبع تولید میکنند. فراخوانی واکشی بدون تعیین نشانه همیشه ناموفق است.
همانطور که مشخص است، حفاظت از دسترسی به منابع افزودنی را می توان با تخمین زمان اجرای عملیات دور زد. علیرغم این واقعیت که واکشی همیشه هنگام درخواست بدون توکن خطایی را برمیگرداند، زمان اجرای عملیات با و بدون افزونه متفاوت است - اگر افزونه وجود داشته باشد، درخواست بیشتر از افزونه طول میکشد. نصب نشده. با ارزیابی زمان واکنش، می توانید حضور مکمل را کاملاً دقیق تعیین کنید.
برخی از افزونهها که شامل منابع قابل دسترسی خارجی نیستند، میتوانند با ویژگیهای اضافی شناسایی شوند. برای مثال، افزونه MetaMask را می توان با ارزیابی تعریف ویژگی window.ethereum تعریف کرد (اگر افزونه تنظیم نشده باشد، "typeof window.ethereum" مقدار "undefined" را برمی گرداند).
منبع: opennet.ru