شرکت مایکروسافت بهروزرسانیهای امنیتی اضطراری و خارج از چرخه (Out-of-band) را برای رفع چهار آسیبپذیری در محیط .NET منتشر کرد. این بهروزرسانیها نسخههای .NET 8، .NET 9، .NET 10 و .NET 11 Release Candidate 3 را پوشش میدهند و مایکروسافت توصیه کرده است که کاربران در سریعترین زمان ممکن نسبت به نصب آنها اقدام کنند.
جزئیات آسیبپذیریها
آسیبپذیری CVE-2026-111497 مربوط به پیادهسازی Brotli decompression در تمامی پلتفرمها است. این نقص از نوع Buffer Overflow بوده و به یک مهاجم بدون احراز هویت (Unauthenticated) اجازه میدهد تا حافظه پردازش را بخواند یا تخریب کند که میتواند منجر به افشای اطلاعات (Information Disclosure)، ایجاد وضعیت عدم دسترسی (DoS) یا افزایش سطح دسترسی (Privilege Escalation) شود.
- این ریسک هنگام پردازش دادههای فشردهشده با Brotli در قابلیتهایی مانند ASP.NET Core request decompression، قابلیت automatic response decompression در HttpClient یا استفاده از APIهای System.IO.Compression Brotli رخ میدهد.
- لازم به ذکر است که قابلیتهای Decompression در درخواستها و پاسخها بهصورت پیشفرض فعال نیستند و .NET Framework تحت تأثیر این مشکل قرار ندارد.
آسیبپذیری دوم با شناسه CVE-2026-114148 مربوط به متادیتای مالکیت ناامن در tarballهای .NET برای لینوکس است. یک مهاجم محلی (Local Attacker) میتواند از این نقص برای تغییر فایلها و کسب دسترسیهای سطح بالا استفاده کند. در نسخههای .NET 10 و 11، این مشکل تنها source-build tarballها را تحت تأثیر قرار میدهد، اما در نسخههای 8 و 9، توزیعهای ASP.NET Core نصب شده از طریق tarballها نیز در معرض خطر هستند.
اصلاح مجدد آسیبپذیریهای قبلی
مایکروسافت همچنین دو هشدار قبلی را بازنشر کرد، زیرا بهروزرسانیهای منتشر شده در ۱۳ اکتبر ۲۰۲۶ نتوانسته بودند بهطور کامل مشکلات زیر را حل کنند:
- CVE-2026-70197: مربوط به تخریب حافظه (Memory Corruption) در SocketAsyncEventArgs که نسخههای 8 تا 11 را تحت تأثیر قرار میدهد.
- CVE-2026-102870: مربوط به دیباگر Blazor WebAssembly در نسخههای .NET 10 و 11.
راهکارهای مقابله و بهروزرسانی
نسخههای اصلاحشده شامل .NET 8.0.33، .NET 9.0.22، .NET 10.0.14 و .NET 11 RC3 هستند. برای رفع این موارد، اقدامات زیر توصیه میشود:
- برنامههای وابسته به فریمورک (Framework-dependent): نصب Runtime بهروزرسانی شده و سپس ریاستارت برنامه.
- برنامههای Self-contained: این برنامهها باید مجدداً Build و منتشر شوند، زیرا نصب Runtime جدید روی سیستم میزبان، Runtime داخلی (Bundled) برنامه را جایگزین نمیکند.
- استقرار در کانتینر (Container): بازسازی (Rebuild) و استقرار مجدد با استفاده از Imageهای بهروزرسانی شده .NET.
مدیران سیستم میتوانند با استفاده از دستور dotnet --list-runtimes نسخههای نصب شده را بررسی کنند. با این حال، برنامههای Self-contained و کانتینرها به دلیل داشتن Runtime اختصاصی، نیازمند بررسی جداگانه هستند.