باگ Screen Sharing مکاواس: روت بدون رمز
خلاصهٔ کاملتر
به گفتهٔ گزارش منتشرشده، یه نقص بحرانی تو سرویس Screen Sharing اپل باعث میشد مهاجمِ احرازهویتنشده از روی شبکه کنترل یه مک رو به دست بگیره؛ بدون نام کاربری، بدون رمز و بدون اینکه کاربر کاری بکنه. تو تست محققها یه اتصال pipelineشده کمتر از ۶۰ ثانیه طول میکشید تا به شل روت برسه. اپل این باگ رو بیسروصدا تو مکاواس ۲۶.۶ که ۲۷ ژوئیه منتشر شد وصله کرده.
ایراد تو دیمن screensharingd بود. روتین احرازهویتش فریمهای بیشازحد بزرگ رو درست مدیریت نمیکرد: وقتی فریمی با برچسب too large میرسید، بهجای خطا کد موفقیتِ باقیمونده از یه خوندن قبلی رو برمیگردوند. همین یه مقدار کهنه دیمن رو قانع میکرد که ورود موفق بوده، پس بررسی رمز، تبادل کلید و راهاندازی رمزنگاری کلاً رد میشد و نشست بهصورت متن ساده و با دسترسی کامل در اختیار مهاجم قرار میگرفت. در حالت عادی ترافیک Screen Sharing با ChaCha20-Poly1305 رمز میشه، اما اینجا اصلاً روشن نمیشد.
از داخل همون نشست، پروتکل کپی فایلِ خود اپل خوندن و نوشتن دلخواه فایل با سطح روت رو تحویل میداد؛ یعنی کل دیسک از پوشهٔ خونگی و لاگها تا دادهٔ اپلیکیشنها و کانفیگ لو میرفت. روی مک پیشفرض، SIP جلوی مستقیمترین مسیرهای اجرای کد رو میگیره، ولی محققها یه مسیر سازگار با SIP هم نشون دادن که با کاشتن یه قانون sudo بدون رمز و یه قلاب در استارتاپ شل کار میکنه. گزارش یه ضعف مستقل دوم هم تو بررسی SRP همون دیمن ذکر کرده که خودش یه دور زدن رمز جداگونهست.
حاشیهٔ افشا هم کم از خود باگ نبود؛ fG!، مهندس معکوس قدیمی مکاواس، میگه خودش خیلی قبلتر مستقل به همین نقص pre-auth رسیده بوده و معتقده تیم گزارشدهنده اونو صرفاً یه کرشِ منع سرویس ثبت کرده و شدت واقعیش رو ندیده. یه محقق دیگه هم بعداً نمونهٔ محدود رو به یه زنجیرهٔ کامل تبدیل کرد، اما ادعای اجرای کد روی مک استاندارد رو یه روز بعد پس گرفت، چون SIP ماشین تستشون خاموش بوده. خط آخر برای کاربر سادهست: SIP وصله نیست و فقط دامنهٔ خسارت رو محدود میکنه.
نکات کلیدی:
- نقص pre-auth تو screensharingd که دسترسی روت از راه دور بدون رمز میداد
- علتش برگردوندن کد موفقیت کهنه هنگام دریافت فریم بیشازحد بزرگ بود
- پیامدش خوندن و نوشتن دلخواه فایل با سطح روت روی کل دیسکه
- وصله تو مکاواس ۲۶.۶ اومده؛ نسخههای ۲۶.۵ و پایینتر آسیبپذیرن
- اگه نمیتونی آپدیت کنی، Screen Sharing رو از تنظیمات خاموش کن




