یک نقص امنیتی در سیستم سفارشی Session Cookie در یک پلتفرم مدیریت محوطه (Yard Management)، به مهاجمان اجازه داد تا بدون نیاز به احراز هویت، خود را به جای کارکنان و مدیران سیستم جا بزنند. این آسیبپذیری مستقیماً مربوط به سرویس Microsoft Entra ID نبود، بلکه ناشی از یک لایه مدیریت نشست (Session Layer) ضعیف در سمت اپلیکیشن بود که اجازه میداد هویتهای جعلی پس از دور زدن کنترلهای ورود، پذیرفته شوند.
جزئیات فنی نقص امنیتی
این پلتفرم از قابلیت Single Sign-On (SSO) و احراز هویت چندعاملی (MFA) در Entra ID استفاده میکرد، اما برای حفظ نشستهای کاربر، بر روی یک Signed Cookie تکیه داشت. این طراحی منجر به ریسکی مشابه حملات Account Takeover مبتنی بر کوکی شد، جایی که کنترل یک نشست مورد اعتماد، اهمیت بیشتری نسبت به رمز عبور دارد.
تحلیلهای صورت گرفته توسط Resecurity نشان داد که این دور زدن (Bypass) از دو خطای طراحی مرتبط ناشی شده است:
- استفاده از Secret سختافزاری (Hard-coded): اپلیکیشن کوکی را با یک کلید محرمانه امضا میکرد که دقیقاً با نام خود کوکی یکسان بود.
- شناسههای قابل پیشبینی: مقدار امضا شده در کوکی، در واقع شناسه پایگاه داده کاربر (CUID) بود که به صورت عمومی از طریق پاسخهای API (مانند Endpointهای کاربر احراز هویت شده) قابل دسترسی بود.
تاثیرات و پیامدهای حمله
محققان توانستند ۹۵ حساب کاربری از میان ۲۴۱ شناسه تست شده را جعل کنند، که شامل حسابهای با دسترسی سطح بالا (Elevated Rights) نیز میشد. یک نشست جعلی مدیر (Administrator) توانست درخواستهای API تغییر وضعیت (State-changing) را اجرا کند، که به معنای دسترسی کامل به دادههای عملیاتی و امکان فعالیت تحت هویت یک کارمند قانونی است.
نکته کلیدی این است که در این سناریو، مهاجم برای ایجاد نشست جعلی نیازی به رمز عبور قربانی، تایید MFA یا Token دسترسی Entra ID نداشت. این مورد ثابت میکند که حتی با وجود MFA قدرتمند، اگر مدیریت نشستها در لایه اپلیکیشن ضعیف باشد، کل سیستم در معرض خطر قرار میگیرد.
توصیههای امنیتی برای مدیران SOC و توسعهدهندگان
برای مقابله با این نوع تهدیدات، اقدامات زیر توصیه میشود:
- چرخش کلیدها: سریعاً Secretهای امضای نشست را تغییر داده و تمام نشستهای فعال فعلی را باطل (Invalidate) کنید.
- بازنگری در مدل اعتماد: مقادیر کنترلشده توسط کلاینت (Client-controlled) را با شناسههای نشست تصادفی (Randomly generated) جایگزین کنید که در سمت سرور ذخیره و تایید میشوند.
- جداسازی محیطها: از کلیدهای با آنتروپی بالا و مجزا برای محیطهای Development، Staging و Production استفاده کنید.
- مانیتورینگ: لاگهای احراز هویت و اپلیکیشن را برای شناسایی ایجاد نشستهای غیرمعمول یا فعالیتهایی که با دستگاه یا کاربر مورد انتظار مطابقت ندارند، بررسی کنید.