گوگل و مایکروسافت افزونه محبوب ModHeader را که با بیش از ۱٫۶ میلیون نصب در مرورگرهای کروم و اج مورد استفاده قرار میگرفت، از فروشگاههای خود حذف کردند. این اقدام پس از آن صورت گرفت که محققان امنیتی موفق به کشف یک جمعآوریکننده خفته تاریخچه مرور در نسخه رسمی این افزونه شدند.
کشف یک تهدید خفته در قلب ModHeader
محققان شرکت امنیتی بریتانیایی Stripe OLT با بررسی کد افزونه متوجه وجود یک سیستم مخفی برای جمعآوری دامنههای مرور کاربران شدند. این جمعآوریکننده در حالت خفته (dormant) قرار داشت و یک لیست مجاز خالی (allow-list) از فعال شدن آن جلوگیری میکرد. تاکنون هیچ مدرکی دال بر جمعآوری یا ارسال دادههای کاربران توسط این مکانیسم یافت نشده است.
جزئیات عملکرد جمعآوریکننده
در نسخه ۷٫۰٫۱۸ افزونه (شناسه idgpnmonknjnojddfkpgkljpfnnfcklj)، علاوه بر عملکرد اصلی ویرایش هدرهای HTTP، یک سیستم پسزمینه دوم نیز وجود داشت. این سیستم در اولین اجرا یک اثر انگشت دستگاه (device fingerprint) ساخته و یک کلید رمزگذاری ثابت را بارگذاری میکرد. سپس هنگام مرور، دامنه هر صفحه بازدید شده را گرفته، رمزگذاری کرده و به صورت محلی (تا ۱۰۰۰ دامنه متمایز) ذخیره مینماید.
یک زمانبند (scheduler) روزانه، لیست رمزگذاریشده را همراه با اثر انگشت دستگاه به آدرس api.stanfordstudies[.]com ارسال و سپس نسخه محلی را پاک میکرد. زمان آپلود برای هر نصب به صورت تصادفی تنظیم شده بود تا در صورت فعال شدن جمعآوریکننده، همه کاربران همزمان بیکن ارسال نکنند.
چگونه جمعآوریکننده خاموش نگه داشته شد؟
این مکانیسم تنها در صورتی فعال میشد که مرورگر کاربر با یکی از ورودیهای یک لیست مجاز داخلی مطابقت داشته باشد. این لیست در نسخه فعلی خالی بود و بنابراین خط لوله جمعآوری داده قبل از شروع متوقف میشد. با این حال، پر کردن این لیست تنها با یک بهروزرسانی ساده و بدون نیاز به مجوز جدید یا اطلاع کاربر قابل انجام بود. کلید رمزگذاری ثابت، آدرس سرور، زمانبند و منطق ذخیرهسازی از پیش بر روی دستگاه کاربر وجود داشت.
بقیه فعالیتهای مخفیانه
همه بخشهای افزونه خفته نبود. هنگام نصب، بهروزرسانی و حذف نصب، افزونه اطلاعاتی مانند محصول، نسخه و نوع مرورگر را به دامنه extensions-hub[.]com ارسال میکرد. علاوه بر این، یک اسکریپت که در هر صفحه اجرا میشد، فرادادههای درخواستهای واقعی را به صورت متن ساده در حافظه محلی ثبت کرده بود که نشان میداد این بخش به وضوح فعال بوده است.
فرار از تشخیصهای امنیتی
ابزارهای بررسی خودکار، ModHeader را کمخطر ارزیابی کرده بودند و برخی امتیاز ۹۵ از ۱۰۰ را به آن داده بودند. طراحی این جمعآوریکننده به گونهای بود که انواع مختلف بررسیها را ناامید میکرد: دادهها رمزگذاری شده بودند، آپلود مسدود بود (بنابراین محیطهای ایزوله خروجی نمیدیدند)، کد مخرب در میان کد قانونی مینیفای شده بود، و نقاط پایانی شهرت مخرب قبلی نداشتند. یک افزونه محبوب با امضای معتبر فروشگاه، بهعنوان قابل اعتماد تلقی میشود و امضای فروشگاه تنها منبع فایل را تأیید میکند، نه عملکرد آن را. این نقاط ضعف در فرآیند بررسی فروشگاههای افزونههای مرورگر یک زنگ خطر جدی محسوب میشود.
تحلیل دامنههای استفاده شده
شرکت Stripe OLT دامنههای مذکور را به زیرساختهای واقعی و نگهداریشده مرتبط کرد. دامنه stanfordstudies[.]com ارتباطی با دانشگاه استنفورد نداشته و یک دامنه قدیمی تغییر کاربرییافته با پشتیبان OpenSearch است. دامنه extensions-hub[.]com نیز برای تبلیغات راهاندازی شده بود. هر دو نقطه پایانی API در زمان تحلیل به یک سرور آمازون وب سرویسز (AWS) متصل بودند که احتمال یک اپراتور واحد را تقویت میکند. نشانههای ضعیفی مانند استفاده از نویسههای چینی سادهشده و ارائهدهنده ایمیل چینی، اپراتور را به یک فرد چینیزبان مرتبط میکند، اما محققان هیچ گروه خاصی را نام نبردهاند.
سابقه مشکوک افزونه
ModHeader در سال ۲۰۲۳ به دلیل تزریق تبلیغات در نتایج جستجو با شکایتهایی مواجه شد و ظاهراً در آن زمان به مدل پشتیبانی از تبلیغات روی آورد. مشخص نیست چه کسی مالکیت این افزونه را بر عهده گرفته است و نویسنده اصلی آن نیز مشخص نیست. وبسایت رسمی ModHeader همچنان ادعا میکند که هیچ داده کاربری جمعآوری نمیکند، که با وجود یک جمعآوریکننده تاریخچه مرور (حتی خاموش) ناسازگار است. تیم توسعهدهنده هنوز به این یافتهها پاسخ عمومی نداده است.
نتیجهگیری: زنگ خطری برای امنیت افزونهها
این حادثه نشان میدهد که حتی افزونههای محبوب و بهظاهر ایمن میتوانند حاوی کدهای مخرب خفته باشند. حذف ModHeader توسط گوگل و مایکروسافت در تاریخهای ۳ و ۱۰ ژوئیه ۲۰۲۴، گامی مثبت است، اما نیاز به بررسیهای امنیتی عمیقتر در فرآیند تأیید افزونهها را یادآوری میکند. کاربران باید همواره از نصب افزونههای غیرضروری خودداری کرده و به روزرسانیهای امنیتی را جدی بگیرند.





