SpookJsیک حمله‌ی جانبی تازه کشف‌شده (SpookJs) که روی پردازنده‌های مدرن اثبات داده شده است، می‌تواند به‌طور موفقیت‌آمیزی به محافظت Site Isolation که در مرورگرهای Google Chrome و Chromium ایجادشده است[۱] فائق آید و داده‌های حساس را در یک حمله‌ی speculative execution به روش Spectre فاش کند[۲].

این تکنیک که توسط دانشگاهیان دانشگاه میشیگان، دانشگاه آدلاید و مؤسسه‌ی ​​فناوری جورجیا “Spook.js” نامیده شده است[۳]، یک خط حمله‌ی مبتنی بر جاوا اسکریپت[۴] است که به‌طور خاص قصد دارد موانعی را که گوگل پس از آسیب‌پذیری‌های Spectre و Meltdown در ژانویه ۲۰۱۸ ایجاد کرده است را دور بزند. بدین ترتیب با اطمینان از عدم اشتراک‌گذاری محتوا از حوزه‌های مختلف در یک فضای آدرس مشابه، از نشت جلوگیری می‌کند.

محققان دراین‌باره می‌گویند: “یک صفحه‌ی وب تحت کنترل مهاجمان می‌تواند بداند که کدام صفحات دیگر از همان وب‌سایت‌هایی است که کاربر در حال مرور آن‌هاست و اطلاعات حساس را از این صفحات بازیابی کرده و حتی در صورت تکمیل خودکار اطلاعات کاربری ورود (مانند نام کاربری و رمز عبور) آن‌ها را بازیابی می‌کند.” همچنین “در صورت نصب یک برنامه‌ی افزودنی مخرب، مهاجم می‌تواند داده‌ها را از برنامه‌های افزودنی Chrome (مانند مدیران گواهی‌نامه) بازیابی کند.”

درنتیجه، هرگونه اطلاعات ذخیره‌شده در حافظه‌ی یک وب‌سایت در حال ارائه یا افزونه‌ی Chrome را می‌توان استخراج کرد، ازجمله اطلاعات قابل‌شناسایی شخصی که در وب‌سایت نمایش داده شده است و نام کاربری، گذرواژه‌ها و شماره کارت‌های اعتباری پرشده به‌صورت خودکار.

Spectre، با نام CVE-2017-5753 و CVE-2017-5715، به دسته‌ای از آسیب‌پذیری‌های سخت‌افزاری در CPUها اشاره می‌کند که باعث جداسازی بین برنامه‌های مختلف می‌شود و به مهاجمان اجازه می‌دهد تا برنامه‌ای را برای دسترسی به مکان‌های دلخواه مرتبط با فضای حافظه‌ی آن برای خواندن محتوای حافظه‌ی قابل‌دسترسی و درنتیجه دستیابی به اطلاعات حساس سوءاستفاده کنند.

گوگل خاطرنشان کرد[۵]: “این حملات از ویژگی‌های speculative execution اکثر CPUها برای دسترسی به قسمت‌هایی از حافظه که باید محدود به یک قطعه‌ی کد باشد استفاده می‌کند و سپس از حملات زمان‌بندی برای کشف مقادیر ذخیره‌شده در آن حافظه استفاده می‌کند. به‌طور مؤثر، این بدان معناست که کد غیرقابل‌اعتماد ممکن است بتواند هر حافظه‌ای را در فضای آدرس فرآیند خود بخواند.”

Site Isolation، که در جولای ۲۰۱۸ راه‌اندازی شد، اقدام متقابل نرم‌افزاری گوگل است که باعث می‌شود حملات سخت‌تر شوند. با فعال بودن این ویژگی، مرورگر Chrome نسخه‌ی ۶۷ و بالاتر هر وب‌سایت را در فرآیند خاص خود بارگیری می‌کند و درنتیجه حملات بین فرآیندها و درنتیجه بین سایت‌ها را خنثی می‌کند.

بااین‌حال، محققان سناریوهایی را پیدا کردند که در آن محافظت site isolation دو وب‌سایت را از هم جدا نمی‌کند و به‌طور مؤثر حفاظت Spectre را تضعیف می‌کند. Spook.js از این ویژگی طراحی بهره‌برداری می‌کند تا منجر به نشت اطلاعات از مرورگرهای Chrome و Chromium در پردازنده‌های Intel ، AMD و Apple M1 شود.

محققان دراین‌باره توضیح دادند: “بنابراین کروم، example.com و example.net و همچنین example.com و attacker.com را به دلیل [دامنه‌های سطح بالا] جدا می‌کند. بااین‌حال، attacker.example.com و corpo.example.com مجاز به اشتراک فرآیند یکسانی هستند [و] این به صفحات میزبانی‌شده تحت attacker.example.com اجازه می‌دهد تا به‌طور بالقوه اطلاعات را از صفحات corporate.example.com استخراج کنند.

Spook.js نشان می‌دهد که این اقدامات متقابل برای محافظت از کاربران در برابر حملات احتمالی مبتنی بر مرورگر کافی نیست. بااین‌وجود، مانند سایر انواع Spectre، بهره‌برداری از Spook.js دشوار است و نیاز به تخصص قابل‌توجهی از جانب مهاجم دارد.

در پاسخ به یافته‌ها، تیم امنیتی Chrome، در ژوئیه ۲۰۲۱، Site Isolation را گسترش داد[۶] تا اطمینان حاصل شود که برنامه‌های افزودنی دیگر نمی‌توانند فرایندها را با یکدیگر به اشتراک بگذارند، علاوه بر اعمال آن‌ها در سایت‌هایی که کاربران از طریق ارائه‌دهندگان شخص ثالث وارد سیستم می‌شوند. تنظیم جدید کهStrict Extension Isolation نامیده می‌شود، در نسخه‌های Chrome 92 و بالاتر فعال است.

محققان می‌گویند: “توسعه‌دهندگان وب می‌توانند بلافاصله کد جاوا اسکریپت نامعتبر و ارائه‌شده توسط کاربر را از سایر محتویات وب‌سایت خود جدا کرده و همه‌ی کد جاوا اسکریپت ارائه‌شده توسط کاربر را در دامنه‌ای که دارای eTLD+1 متفاوت است[۷]، میزبانی کنند. به‌این‌ترتیب، Strict Site Isolation نمی‌تواند کدهای ارائه‌شده توسط مهاجمان را با داده‌های حساس بالقوه در یک فرآیند یکپارچه کند و حتی برای Spook.js داده‌ها را از دسترس خارج کند زیرا نمی‌تواند از مرزهای فرایند عبور کند.”

منابع

[۱] https://www.chromium.org/developers/design-documents/site-isolation

[۲] https://thehackernews.com/2021/05/new-spectre-flaws-in-intel-and-amd-cpus.html

[۳] https://www.spookjs.com

[۴] https://github.com/spookjs/spookjs-poc

[۵] https://security.googleblog.com/2018/07/mitigating-spectre-with-site-isolation.html

[۶] https://security.googleblog.com/2021/07/protecting-more-with-site-isolation.html

[۷] https://web.dev/same-site-same-origin

[۸] https://thehackernews.com/2021/09/new-spookjs-attack-bypasses-google.html