مایکروسافت هشدار داده است که بیش از ۳,۰۰۰ کلید ماشین ASP.NET بهصورت عمومی در دسترس قرار گرفتهاند که میتوانند برای مهاجمان امکان حملات Code Injection را فراهم آورند. این کلیدها که بهعنوان کلیدهای ماشین ASP.NET شناخته میشوند، برای تأمین امنیت دادهها در فریمورک ASP.NET استفاده میگردند و افشای آنها میتواند به مهاجمان اجازه دهد تا کد دلخواه را در سرورهای هدف اجرا کنند. این نوع حملات بهعنوان حملات تزریق کد ViewState یا ViewState code injection شناخته میشوند.
بسیاری از حملات ViewState code injection از کلیدهای بهدستآمده یا ربوده شده که معمولاً در انجمنهای دارک وب فروخته میشوند، استفاده میکنند. این کلیدهای فاش شده ممکن است خطرات بیشتری ایجاد کنند، چرا که این کلیدها در چندین مخزن کد در دسترس قرار میگیرند و ممکن است بدون تغییر وارد کد توسعه شوند. متد ViewState در فریمورک ASP.NET مکانیزمی است که برای ذخیرهسازی مقادیر مختلف بین درخواستهای متوالی (postbacks) استفاده میشود.
هدف اصلی آن حفظ وضعیت اطلاعات (مثل مقادیر فرمها، انتخابها یا وضعیت کنترلهای صفحه) بین بارگذاریهای مختلف یک صفحه است. این اطلاعات در داخل خود صفحه وب ذخیره میشود تا هنگام ارسال مجدد فرمها یا درخواستهای دیگر، وضعیت صفحه حفظ شود.
ViewState میتواند شامل دادههای حساس باشد، بنابراین باید از روشهایی مانند رمزگذاری و امضا برای محافظت از آن استفاده کرد تا از تغییرات مخرب جلوگیری گردد. چنانچه ViewState بهطور غیرایمن ذخیره شود، ممکن است مهاجمان بتوانند آن را دستکاری کرده و حملات Code Injection را به انجام برسانند.
دادههای ViewState بهطور پیشفرض، در صفحه در یک فیلد پنهان ذخیره شده و با استفاده از Base64 کدگذاری میشوند. علاوه بر این، یک هش از دادههای ViewState با استفاده از یک کلید MAC (کد احراز هویت ماشین) ایجاد میشود. این مقدار هش به دادههای کد شده ViewState اضافه میگردد و رشته حاصل در صفحه ذخیره میشود.
هدف از استفاده از مقدار هش این است که اطمینان حاصل شود که دادههای ViewState تغییر پیدا نکردهاند و دستکاری نشدهاند. چنانچه این کلیدها به سرقت بروند یا برای اشخاص غیرمجاز در دسترس قرار گیرند، در این صورت ممکن است مهاجم بتواند از این کلیدها برای ارسال یک درخواست ViewState مخرب استفاده کرده و کد دلخواه را اجرا کند.
این سناریو به این معناست که در صورتی که مهاجم به کلیدهای MAC دسترسی پیدا کند، میتواند دادههای ViewState را تغییر دهد یا دستکاری کند و بدین ترتیب کد مخرب را در سیستم هدف اجرا کند، که آنگاه منجر به نقض امنیت و دسترسی غیرمجاز به سیستم خواهد شد.
زمانی که درخواست توسط ASP.NET Runtime در سرور هدف پردازش میشود، ViewState رمزگشایی شده و بهطور موفقیتآمیز اعتبارسنجی میشود زیرا از کلیدهای صحیح استفاده شده است. کد مخرب سپس در حافظه پردازشگر کارگر (worker process) بارگذاری شده و اجرا میشود، که به مهاجم این امکان را میدهد تا کد دلخواه را از راه دور در وب سرور IIS هدف اجرا کند.
پردازشگر کارگر یا worker process در زمینه سرورها و سیستمهای وب به یک پردازش مجزا گفته میشود که وظیفه انجام کارهای خاص، پردازش درخواستها و مدیریت منابع را بر عهده دارد. این پردازشها معمولاً بهصورت مستقل از یکدیگر اجرا میشوند تا از کارایی و امنیت سیستم اطمینان حاصل شود.
worker process در زمینه ASP.NET و IIS، به پردازشی اشاره دارد که برای اجرای درخواستهای واردشده به سرور وب در نظر گرفته میشود. زمانی که یک درخواست از طرف کاربر ارسال میشود، IIS آن را به worker process میفرستد تا کدهای ASP.NET یا سایر زبانهای برنامهنویسی مرتبط را اجرا کند.
مایکروسافت فهرستی از مقادیر هش برای کلیدهای ماشین عمومی فاش شده را ارائه داده و از مشتریان خواسته است تا آنها را با کلیدهای ماشین استفاده شده در محیطهای خود مقایسه کنند. این شرکت همچنین هشدار داده که در صورت سوء استفاده موفق از کلیدهای عمومی فاش شده، تنها تغییر کلیدها کافی نخواهد بود، چرا که ممکن است مهاجمان قبلاً تداوم دسترسی خود را بر روی سیستم میزبان برقرار کرده باشند.
به منظور مقابله با حملات مشابه، توصیه میشود که کلیدها از منابع عمومی کپی نشوند و بهطور منظم تغییر یابند.
منابع
مقالات پیشنهادی:
به روزرسانی Patch Tuesday ماه ژانویه ۲۰۲۵ مایکروسافت
مایکروسافت یک باگ مهم را در ویندوز سرور ۲۰۲۲ پچ کرد!
مایکروسافت یک راه حل موقتی برای کرش کردن Outlook ارائه کرد
عدم سازگاری Patch Tuesday ژانویه ۲۰۲۵ مایکروسافت با Citrix SRA
مایکروسافت، دو آسیب پذیری را در سرویس Azure AI Face و Microsoft Account پچ کرد