ساخت زنجیره آسیبپذیری کامل در مایکروسافت اج صرفاً با استفاده از ایرادات منطقی — Forging a Microsoft Edge Full Chain with Logic Bugs Only
خلاصه
پژوهشگر امنیتی معروف، Orange Tsai، توانسته است با زنجیر کردن چهار ایراد منطقی و بدون استفاده از هیچگونه فساد حافظه یا هوش مصنوعی، به فرار از سندباکس در مایکروسافت اج دست پیدا کند. این مقاله نگاهی به معماری ناوبر کرومیوم و جزئیات فنی این هک جذاب دارد.
در دنیایی که ابزارهای هوش مصنوعی و مدلهای زبانی بزرگ بخش بزرگی از فرآیندهای تحلیل امنیتی و کشف باگ را به خود اختصاص دادهاند، ارائه یک اکسپلویت کاملاً دستی و مبتنی بر منطق (Logic Bugs) ارزش بسیار زیادی دارد. اورنج تسای (Orange Tsai)، از تیم تحقیقاتی DEVCORE، در رویداد Pwn2Own برلین موفق شد با زنجیر کردن چهار باگ منطقی، یک زنجیره کامل (Full Chain) برای فرار از سندباکس در مرورگر مایکروسافت اج (Microsoft Edge) پیادهسازی کند و جایزه نقدی قابل توجهی را به خود اختصاص دهد. این دستاورد حتی نامزد جایزه معتبر Pwnie Awards در بخش دستاورد حماسی نیز شد.
معماری هدایت و موتور ناوبری در کرومیوم
برای درک این آسیبپذیری، باید نگاهی به نحوه مدیریت ناوبری (Navigation) در موتور کرومیوم بیندازیم. در کرومیوم، مؤسفانهای به نام Navigation Throttles وجود دارد که در Process مرورگر اجرا میشود و تمام درخواستهای ناوبری را رهگیری میکند. آمارها نشان میدهند که در طول پنج سال گذشته، گوگل کروم بیش از ۳۰۰۰ آسیبپذیری را رفع کرده که سهم Navigation Throttles از آنها کمتر از ۲۰ مورد بوده است؛ به همین دلیل، این بخش کمتر مورد توجه پژوهشگران امنیتی قرار داشته است.
بررسی کدهای مایکروسافت اج نشان داد که این مرورگر یک throttle اختصاصی به نام EdgeCAGuidanceNavigationThrottle برای ویژگی سازمانی Entra ID دارد. وظیفه این بخش آن است که وقتی کاربر با حساب کاری خود وارد یک وبسایت مایکروسافت میشود، او را به پروفایل کاربری صحیح هدایت کند.
مکانیسم آسیبپذیری: Navigation بدون مبدأ (Sourceless Navigation)
نقطه عطف این تحقیق زمانی رخ داد که پژوهشگر متوجه شد اگر تابع Navigate() بدون مشخص کردن پارامتر source_contents فراخوانی شود، کرومیوم به طور خودکار تب فعال فعلی را به عنوان مبدأ ناوبری در نظر میگیرد. با ایجاد تاخیر زمانی و تغییر دستی تب فعال در طول اجرای دستور، یک آسیبپذیری قدرتمند UXSS رخ میدهد. این یعنی مرورگر گول میخورد و ناوبری را از طرف یک تب امن و معتبر آغاز میکند، در حالی که کنترل آدرسدهی در دست مهاجم است.
چالشهای دور زدن مکانیزمهای امنیتی
برای عملیاتی کردن این زنجیره، تیم تحقیقاتی باید چند مانع جدی را پشت سر میگذاشت:
- بررسی مبدأ (Origin Check): این throttle از تابع
GetLastCommittedURLبرای بررسی مبدأ استفاده میکند. با استفاده از یک پنجره جدید (window.open) میتوان این بررسی را دور زد زیرا ناوبری میتواند از پنجره دیگری سرچشمه بگیرد. - بلاککنندهی پاپآپ: مرورگرهای مدرن به راحتی اجازه باز کردن پنجرههای جدید را نمیدهند. با بررسی کدهای اج مشخص شد مایکروسافت یک لیست سفید هاردکد شده برای برخی پاپآپها دارد که با استفاده از آن میتوان این محدودیت را دور زد.
- نیاز به پروفایل وارد شده: مکانیزم شرطی نیاز به یک پروفایل فعال دارد، اما ویژگی OneAuth و فرآیندهای راهاندازی ویندوز به طور خودکار حساب کاربری را در صورت بازدید از سایتهای مایکروسافت فعال میکنند.
چرا این مسئله برای مهندسان نرمافزار اهمیت دارد؟
این پژوهش نشان میدهد که چگونه ترکیب چند خطای منطقی کوچک و ویژگیهای فراموششده در یک نرمافزار بزرگ مانند مرورگر میتواند به یک فاجعه امنیتی منجر شود. همانطور که در بحثهای Hacker News نیز اشاره شد، یکپارچهسازیهای عمیق بین وبسایتها و مرورگرها پیچیدگیهایی ایجاد میکند که توسعهدهندگان معمولاً پیامدهای امنیتی کامل آن را پیشبینی نمیکنند. این آسیبپذیری یادآور این نکته است که منطق بیپن نقص در طراحی سیستمهای پیچیده میتواند به اندازه باگهای حافظه خطرناک باشد.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل