یک آسیبپذیری روز صفر (0-day) بحرانی در نرمافزار مجازیسازی “Parallels Desktop” بهطور عمومی افشا شده است که به مهاجمان محلی امکان میدهد تا سطح دسترسی خود را به دسترسی روت در سیستمهای macOSارتقا دهند.
تمام نسخههای Parallels Desktopاز جمله نسخه اخیر 20.2.1 (55876)، در برابر نقص امنیتی با شناسه CVE-2024-34331 آسیب پذیر هستند. این نقص امنیتی به دلیل کنترلهای امنیتی ناکافی در مکانیزم repackaging نصب کننده macOS در این نرمافزار ایجاد شده است. این ضعف امنیتی به مهاجمان امکان میدهد نسخهی آلودهای از نصبکنندهی macOS را جایگزین نسخهی اصلی کرده و آن را برای اجرا روی سیستم قربانی قرار دهند.
افشای PoC مربوط به Parallels Desktop و نحوهی سوءاستفاده از آسیبپذیری
پژوهشگر امنیتی Mickey Jin (@patch1t) دو روش مختلف برای دور زدن پچ امنیتی قبلی CVE-2024-34331 ارائه کرده و برای آن اثبات مفهومی (PoC) منتشر کرده است. این نقص امنیتی قبلاً پچ شده بود اما اکنون مجدداً دور زده شده است.
این آسیبپذیری به فرایند repackaging در اسکریپت repack_osx_install_app.sh مربوط میشود که وظیفهی ایجاد پکیج نصب macOS را در Parallels Desktop بر عهده دارد و این کار را از طریق دیمون prl_disp_service با سطح دسترسی روت انجام میدهد.
در پچ اولیهی این آسیبپذیری، اعتبارسنجی امضای کد اپل برای فایل createinstallmedia با دستور زیر اضافه شده بود:
codesign -v -R="anchor apple"
هر چند، پژوهشگران دو راه برای دور زدن این مکانیزم امنیتی کشف کردند:
اکسپلویت زمان بررسی تا زمان استفاده (TOCTOU)
در این روش، مهاجم نصبکنندهی سالم را با نسخهی آلوده جایگزین میکند؛ اما این کار را در لحظهای انجام میدهد که سیستم در حال اعتبارسنجی امضای فایل است.
PoC اول نشان میدهد که چگونه مهاجم یک پکیج نصب macOS جعلی ایجاد کرده و /bin/ls به عنوان فایل createinstallmedia جا زده می شود. در PoC اول دستورات زیر آمده است
echo "[*] Dropping a fake macOS installer..."
mkdir -p /tmp/poc.app/Contents/Resources
cp /bin/ls /tmp/poc.app/Contents/Resources/createinstallmedia
مهاجم میتواند فایل باینری را با یک اسکریپت مخرب جایگزین کند. در نتیجه، فایل آلوده با سطح دسترسی روت از طریق prl_disp_service که دارای مجوز SUID است، اجرا میشود. این دسترسی به مهاجم اجازه میدهد دستورات سیستمی مخرب مانند touch /Library/lpe را اجرا کند تا یک مکانیسم ماندگاری ایجاد کند.
دور زدن امضای دیجیتال از طریق تزریق DYLIB
بررسی امنیتی Parallels برای فایل createinstallmedia تنها این شرط را دارد که امضای اپل را داشته باشد (anchor apple). بنابراین هر فایلی که توسط اپل امضا شده باشد می تواند از تست اعتبار سنجی امضا عبور کند. مهاجمان میتوانند با استفاده از متغیرهای محیطی یا تکنیک DYLD_INSERT_LIBRARIES ، کتابخانههای پویا مخرب (DYLIB) را به این باینریها تزریق کنند. به دلیل طراحی روش امضای کد در macOS، این حمله قابلشناسایی نیست؛ زیرا امضای فایل تغییری نمیکند و از کنترلهای امنیتی Parallels عبور میکند.
تکامل تکنیکهای اکسپلویت
Parallels در نسخه 19.4.1 سعی کرد این مشکلات را برطرف کند و عملکرد do_repack_manualرا معرفی کرد که از فشردهسازی 7z برای ساخت پکیج نصب استفاده میکرد.
اما Mickey Jin متوجه شد که یک آسیب پذیری path traversal (یک حمله HTTP برای دسترسی و دستیابی به فایلها و پوشههایی است که خارج از پوشه روت یا ریشه وب ذخیره شدهاند) در نحوهی پردازش مقدارCFBundleDisplayName وجود دارد. با تنظیم این مقدار به مسیر زیر:
./../../../../../tmp/lnk/result
مهاجم میتواند:
· لینکهای نمادین (symlinks) برای هدایت دایرکتوریهای سیستمی ایجاد کند
· فایل باینری 7z را در هنگام پردازش فایلهای موقت با یک payload مخرب جایگزین کند
· اجرای کد را از طریق سرویسهای دارای سطح دسترسی بالا انجام دهد
در نسخهی 20.2.1، شرکت Parallels دوباره به روش آسیبپذیر قبلی (do_repack_createinstallmedia) برگشت که مهاجمان را قادر میسازد همان اکسپلویتهای قبلی را مجدداً اجرا کنند.
ویدیوی زیر در یوتیوب افزایش موفقیت آمیز سطح دسترسی را در سیستم های به روز نشان می دهد:
تأثیر آسیبپذیری و اقدامات امنیتی پیشنهادی
این آسیبپذیری تمام سیستم های macOS که مبتنی بر Intel هستند و نسخههای Parallels Desktop از 16.0.0 تا 20.2.1 به روی آن ها اجرا می شود، را تحت تأثیر قرار میدهد؛ اما دستگاههای مجهز به Apple Silicon از این نقص در امان هستند. زیرا نحوه مجازی سازی در آن ها متفاوت است.
در صورت اکسپلویت موفق، مهاجم کار های زیر را می تواند انجام دهد:
- با ساختن فایل دلخواه دسترسی دائمی در سطح روت ایجاد کند
- مکانیزم امنیتی macOS مانند TCC (شفافیت، رضایت و کنترل) را دور بزند
- از محیط ماشین مجازی که چند کاربره هست، فرار کند
اقدامات امنیتی توصیهشده:
- حذف دسترسی SUID از ابزارهای Parallels
- تقسیم بندی شبکهای (network segmentation) سیستمهایی که از Parallels Desktop استفاده میکنند
- نظارت بر مسیر /Library/lpe در صورت ایجاد فایل غیر مجاز
افشای این آسیبپذیری روز صفر، نقصهای بحرانی در فرآیندهای مدیریت آسیبپذیری Parallels و هماهنگی با نهادهای ثالث از طریق ZDI را نشان می دهد. با در دسترس بودن کدهای اثبات مفهومی، سازمانها باید فرض کنند که اکسپلویت فعال این آسیب پذیری حتمی است.
تا زمانی که Parallels یک پچ رسمی منتشر کند، مدیران سیستم باید نیاز عملیاتی به استفاده از Parallels Desktop را در مقابل ریسکهای امنیتی بالقوه در محیطهای سازمانی بسنجند.