نقص منطقی MSI ویندوز؛ راهی برای رسیدن به سطح SYSTEM
خلاصهٔ کاملتر
تو یه پست فنی، محققای شرکت امنیتی Exodus Intelligence یه آسیبپذیری منطقی رو تو سرویس Windows Installer گزارش دادن که تحت شناسهٔ CVE-2025-27727 ثبت شده و فروردین ۱۴۰۴ (آوریل ۲۰۲۵) پچ شده. این باگ به یه کاربر بدون دسترسی بالا اجازه میداد یه پوشهٔ دلخواه رو که خودش بهش دسترسی حذف داره، از طریق سرویس Windows Installer که با سطح SYSTEM اجرا میشه، پاک کنه.
سرویس Windows Installer با سطح SYSTEM اجرا میشه و کارهایی مثل نصب، تغییر و حذف برنامههای ویندوزی رو انجام میده. این سرویس عملکردش رو از طریق یه رابط COM به اسم CMsiConfigurationManager به پروسههای کلاینت (با هر سطح دسترسیای) میده. سه متد این رابط تو این آسیبپذیری نقش دارن: MsiBeginTransactionW برای شروع یه تراکنش، SetEEUIDirectoryAndFilter برای ثبت مسیر یه پوشه، و CleanupTempPackages برای پاکسازی پوشههای ثبتشده.
نقص منطقی اینه: وقتی SetEEUIDirectoryAndFilter صدا زده میشه، مسیر پوشهٔ دادهشده رو تو کلید رجیستری TempPackages ثبت میکنه، و تنها بررسی امنیتیای که انجام میده اینه که آیا caller دسترسی DELETE روی اون پوشه رو داره یا نه؛ هیچ چکی نمیشه که پوشه واقعاً توسط خود Windows Installer ساخته شده. بعد، تابع CleanupTempPackages همهٔ مسیرهای ثبتشده تو TempPackages رو، بدون تایید دوباره، با سطح SYSTEM پاک میکنه. چون هر کاربری میتونه یه پوشهٔ خودش رو با پرمیشن دلخواه بسازه، این چک عملاً بیاثره.
محققا نشون دادن این قابلیت پاککردن پوشه، بهتنهایی یه پرایمیتیو سادهست، ولی وقتی هدفش پوشهٔ خاصی به اسم C:\Config.Msi باشه (پوشهای که Windows Installer معمولاً برای نگهداری اسکریپتهای rollback موقع نصب یا حذف برنامه استفاده میکنه) میشه ازش به شکل پیچیدهتری سوءاستفاده کرد. با ترکیب این نقص با رفتار سرویس هنگام بازگردانی (rollback) یه نصبِ ناموفق و چند تکنیک همزمانسازی، یه مهاجم میتونه اسکریپتهای rollback قانونی رو با نسخهٔ مخرب خودش جایگزین کنه؛ و چون این اسکریپتها توسط سرویس با سطح SYSTEM اجرا میشن، نتیجهش اجرای کد دلخواه با بالاترین سطح دسترسی ویندوزه.
یعنی این آسیبپذیری یه مسیر ارتقای امتیاز محلی (local privilege escalation) کامله: یه کاربر عادی روی سیستم، بدون نیاز به هیچ دسترسی ادمین اولیهای، میتونه به سطح SYSTEM برسه. این نوع باگ خصوصاً تو محیطهایی که چند کاربر با سطح دسترسی محدود روی یه سیستم مشترک کار میکنن (مثل سرورهای ترمینال یا سیستمهای چندکاربره) خطرناکه.
مایکروسافت این مشکل رو با اصلاح منطق داخلی msi.dll پچ کرده: حالا قبل از پاککردن یه پوشه، سرویس واقعاً تایید میکنه که اون پوشه توسط خود Windows Installer ساخته شده، نه فقط اینکه caller بهش دسترسی DELETE داره. این آسیبپذیری از فروردین ۱۴۰۴ رفع شده و تنها راهکار لازم، نصب آپدیتهای امنیتی ویندوز از طریق کانال معمول Windows Update ـه؛ نیازی به تغییر تنظیمات یا اقدام دستی خاصی نیست.
نکات کلیدی:
- محققای Exodus Intelligence یه آسیبپذیری منطقی (CVE-2025-27727) تو Windows Installer پیدا کردن که فروردین ۱۴۰۴ پچ شده.
- سرویس msiexec.exe بدون چک اینکه یه پوشه واقعاً ساختهٔ خودشه، هر مسیر ثبتشده تو TempPackages رو با سطح SYSTEM پاک میکنه.
- ترکیب این نقص با پوشهٔ rollback اختصاصی C:\Config.Msi میتونه به اجرای کد دلخواه با سطح SYSTEM برسه.
- این یه ارتقای امتیاز محلیه؛ راهکار فقط نصب آپدیت امنیتی ویندوزه.




