آسیب پذیری اجرای کد با امتیاز root در OpenSSH
آسیب پذیری بنام regreSSHion در OpenSSH کشف شده که به مهاجم بدون احرازهویت شده، امکان اجرای کد از راه دور با امتیاز root رو در لینوکس های مبتنی بر glibc میده.
منظور از سیستمهای لینوکسی مبتنی بر glibc، سیستم عامل های لینوکسی هستن که برای عملکردهای اصلیشون به کتابخونه C GNU (glibc) متکی هستن.
کتابخونه ی C GNU یا glibc، مجموعه ای از کتابخونه های پایه برای زبان برنامه نویسی C هستن که کارکردهای اساسی مانند مدیریت حافظه، ورودی/خروجی و دسترسی به سیستم فایل رو ارائه میدن. این کتابخونه بطور گسترده در توزیع های محبوب لینوکسی مانند Ubuntu ، Debian ، Fedora، CentOS ، SUSE استفاده میشه.
OpenSSH هم یسری ابزار شبکه ای روی پروتکل Secure Shell (SSH) هستش، که برای لاگین امن، مدیریت سرور از راه دور و انتقال فایل از طریق SCP و SFTP استفاده میشه.
آسیب پذیری توسط محققین Qualys و در مه 2024 کشف شده و شناسه CVE-2024-6387 رو داره. آسیب پذیری از نوع race condition و در signal handler مربوط به sshd هستش. شدت آسیب پذیری بالا و امتیاز 8.1 داره.
سیگنالها رویدادهای خاصی هستن که به برنامه ها اطلاع میدن که باید کاری رو انجام بدن. مثلا وقتی کاربر کلید Ctrl+C رو میزنه در حقیقت یک سیگنالی ارسال میشه.
در sshd، یک سیگنال خاص به نام SIGALRM برای نشون دادن زمان سپری شدن LoginGraceTime (بطور پیش فرض 120 ثانیه) استفاده میشه. اگه کاربر در این مدت با موفقیت احراز هویت نکنه، sshd سیگنال SIGALRM رو دریافت میکنه و فرآیند احراز هویت رو متوقف میکنه.
با این حال، این باگ در sshd به مهاجمین این امکان رو میده تا از race condition در SIGALRM handler سوء استفاده کنن. این handler مسئول پردازش سیگنال SIGALRM است. وقتی که این سیگنال دریافت میشه، handler چندین تابع دیگه رو فراخوانی میکنه، از جمله تابع syslog برای ثبت رویداد در log سیستم.
مشکل اینجاست که برخی از توابعی که توسط SIGALRM handler فراخوانی میشن، async-signal-safe نیستن. یعنی اونا برای اجرا در شرایطی که race condition وجود داره، طراحی نشدن. مهاجم میتونه از این race condition برای اجرای کد دلخواه با امتیاز root سوء استفاده کنه.
به گفته ی محققین Qualys، مهاجم با اکسپلویت این آسیب پذیری میتونه با بالاترین امتیاز کد دلخواه رو اجرا کنه که منجر به کنترل کامل سیستم، نصب بدافزار، دستکاری داده، نصب بکدور برای دسترسی پایدار و همچنین امکان حرکات جانبی رو فراهم میکنه.
اگرچه شدت آسیب پذیری بالاست اما به گفته ی محققین Qualys، اکسپلویت کردن regreSSHion سخته، چون برای دسترسی به خرابی حافظه نیاز به اجرای متعدد هستش و این در حقیقت برای آسیب پذیری های race condition یه چیزه طبیعیه. اما این محققا اشاره کردن که ابزارهای هوش مصنوعی میتونن بازی رو عوض کنن.
برای جزییات بیشتر در خصوص این آسیب پذیری، میتونید رایتآپ فنی خود محققین رو مطالعه کنید.
نسخه های آسیب پذیر:
آسیب پذیری regreSSHion سرورهای OpenSSH روی لینوکس از نسخه ی 8.5p1 به بالا به غیر از 9.8p1 رو تحت تاثیر قرار میده.
نسخه های 4.4p1 به بالا به غیر از 8.5p1 بدلیل اصلاحیه برای CVE-2006-5051، تحت تاثیر CVE-2024-6387 نیستن.
نسخه های قبل از 4.4p1، تحت تاثیر این آسیب پذیری هستن مگه اینکه اصلاحیه های CVE-2006-5051 و CVE-2008-4109 رو اعمال کرده باشن.
سیستم های OpenBSD بدلیل مکانیزمی که در سال 2001 معرفی شده، تحت تاثیر این آسیب پذیری نیستن.
محققا گفتن که سیستم های macOS و ویندوزی هم میتونن تحت تاثیر این آسیب پذیری باشن اما قابلیت اکسپلویت شدنشون هنوز تایید نشده و نیاز به تحقیق جداگانه ای داره.
اصلاح آسیب پذیری:
برای اینکه آسیب پذیری regreSSHion رو در OpenSSH اصلاح کنید یا شدتش رو کاهش بدید، باید مراحل زیر انجام بدید:
- آخرین بروزرسانی (9.8p1) رو برای OpenSSH نصب کنید.
- دسترسی SSH رو با استفاده از کنترلهای مبتنی بر شبکه مانند فایروالها محدود کنید و برای جلوگیری از حرکات جانبی، بخش بندی شبکه (network segmentation) رو اجرا کنید.
- اگه سرور OpenSSH رو نمیتونید بروز کنید، LoginGraceTime رو در فایل پیکربندی sshd روی 0 تنظیم کنید، اما توجه داشته باشید که این کار میتونه سرور رو در معرض حملات DoS قرار بده.
نتایج Shodan و Censys بیش از 14 میلیون سرور OpenSSH رو نشون میدن اما خود محققای Qualys اعلام کردن که براساس داده های CSAM 3.0 حدود 700 هزار سرور آسیب پذیر وجود داره.
با جستجو در موتور جستجوی FOFA نتایج زیر رو برای کل دنیا و ایران داریم: (داده ها خام هستن) (دسترسی به مجموعه ای از موتورهای جستجو برای محققین امنیت سایبری)
خروجی خام Netlas هم بصورت زیر هستش: