آژانس امنیت سایبری و امنیت زیرساخت ایالات متحده (CISA) سه آسیبپذیری بحرانی در Ivanti Endpoint Manager (EPM) را که توسط مهاجمان در حملات فعال مورد سوء استفاده قرار گرفتهاند، به فهرست آسیبپذیریهای شناختهشده قابل اکسپلویت (KEV) اضافه کرده است. Ivanti یکی از بازیگران کلیدی در حوزه مدیریت سیستمها و داراییهای IT است و خدمات خود را به بیش از ۴۰,۰۰۰ شرکت در سراسر جهان ارائه میدهد. این موضوع باعث شده که آسیبپذیریهای این شرکت، اهداف جذابی برای مهاجمان سایبری باشند.
جزئیات آسیبپذیریهای Ivanti EPM
سه آسیبپذیری شناساییشده با شناسههای CVE-2024-13159، CVE-2024-13160 و CVE-2024-13161 ناشی از ضعف در مدیریت دسترسی به مسیرها به طور مطلق(Absolute Path Traversal) هستند. این نقصها به مهاجمان راه دور و غیرمجاز اجازه میدهند که کنترل کامل سرورهای آسیبپذیر را به دست بگیرند.
سرور Ivanti EPM یک برنامه تحت .NET است که بسیاری از APIهای مبتنی بر وب متعلق به اندپوینت های خود را در DLLهای مختلف تعریف میکند. آسیبپذیریهای مورد بحث در فایل زیر قرار دارند:
C:\Program Files\LANDesk\ManagementSuite\WSVulnerabilityCore.dll
در بخش LANDesk.ManagementSuite.WSVulnerabilityCore، کلاس VulCore، APIهای مربوط به مدیریت آسیبپذیری را در اختیار سرور EPM قرار میدهد. در شکل زیر این کلاس را مشاهده میکنید:

آسیبپذیری CVE-2024-13159
متد GetHashForWildcardRecursive() که در این کلاس تعریف شده است، یک آرگومان رشتهای به نام wildcard را میپذیرد و آن را به متد HashCalculator.GetHashForWildcardRecursive() ارسال میکند.
متد GetHashForWildCardRecursive() تابع Path.GetDirectoryName() را بر روی متغیر تحت کنترل کاربر(wildcard) اجرا میکند و سپس از آن در Path.Combine() استفاده کرده و مقدار آن را در متغیر rootPath ذخیره میکند. سپس این متغیر به تابع HashCalculator.GetDirectories() ارسال میشود که باعث میشود سرور EPM تلاش کند تمام فایلهای یک دایرکتوری(پوشه) خاص را بخواند تا هش آنها را محاسبه کند.

آسیبپذیری در عدم بررسی ورودی در اندپوینت احراز هویت نشده است. در نتیجه، پارامتر wildcard را میتوان به گونهای تنظیم کرد که rootPath را به یک مسیر UNC راه دور اشاره دهد.

دسترسی به این اندپوینت، با استفاده از درخواست Burp زیر امکانپذیر است:

آسیبپذیری CVE-2024-13160:
متد GetHashForWildcard() در این کلاس یک آرگومان رشتهای به نام wildcard دریافت کرده و آن را به HashCalculator.GetHashForWildcard() ارسال میکند.

متد HashCalculator.GetHashForWildcard()، مشابه متد آسیبپذیری قبلی، مسیر را براساس ورودی کاربر میسازد و آن را پردازش میکند.

اگر ورودی مخربی مشابه مورد قبلی به این متد ارسال شود، سرور Ivanti EPM را میتوان وادار به ارسال درخواست به یک مسیر UNC از راه دور کرد.

آسیبپذیری CVE-2024-13161
متد GetHashForSingleFile() در این کلاس یک آرگومان رشتهای به نام strFileName دریافت کرده و آن را به HashCalculator.GetHashForSingleFile() ارسال میکند.

تحلیل کد نشان میدهد که این متد احتمالاً بهطور پیشفرض مسیر UNC را بهعنوان ورودی مجاز میپذیرد. مشکل اینجاست که این عملکرد در دسترس یک کاربر احراز هویتنشده قرار دارد:

نمونهای از یک درخواست مخرب که میتواند از این مشکل سوءاستفاده کند در تصویر زیر نمایش داده شده است:

این آسیبپذیریها ابتدا در اکتبر ۲۰۲۴ توسط محقق امنیتی Zach Hanley از شرکت Horizon3.ai گزارش شدند و شرکت Ivanti در ۱۳ ژانویه ۲۰۲۵ پچهای امنیتی لازم را برای آنها منتشر کرد.
افشای کد اثبات مفهوم (PoC)
تنها یک ماه پس از انتشار پچها، Horizon3.ai کدهای اثبات مفهوم (PoC) را منتشر کرد که میتوانند برای اجرای حملات رلهای و سرقت اطلاعات ورود به سیستم Ivanti EPM مورد استفاده قرار گیرند.
هشدار CISA و توصیههای امنیتی
CISA روز 10 مارس این سه آسیبپذیری را به فهرست آسیبپذیریهای شناختهشده قابل اکسپلویت (KEV) خود اضافه کرد. طبق دستورالعمل BOD 22-01 که در نوامبر ۲۰۲۱ صادر شده، نهادهای فدرال موظفاند تا ۳۱ مارس ۲۰۲۵ سیستمهای خود را در برابر این حملات ایمن کنند.
CISA تأکید کرده است که این نوع آسیبپذیریها بردارهای حمله رایجی برای مهاجمان سایبری هستند و خطرات جدی برای زیرساختهای فدرال ایجاد میکنند و اگرچه BOD 22-01 فقط برای نهادهای فدرال اجرایی مدنی (FCEB) الزامی است، اما به تمام سازمانها توصیه میشود که این نقصهای امنیتی را بهسرعت برطرف کنند.
با این حال، شرکت Ivanti هنوز مشاوره امنیتی(security advisory) خود را بهروزرسانی نکرده است تا مشخص کند که آیا این آسیبپذیریها بهطور فعال در حملات سایبری مورد بهرهبرداری قرار گرفتهاند یا خیر.