کشف آسیب‌پذیری Row Hammer در پروتکل openssh

کشف آسیب‌پذیری Row Hammer در پروتکل openssh

تاریخ ایجاد

به تازگی، محققان امنیتی موفق به کشف یک آسیب‌پذیری حیاتی در پروتکل openssh با شناسه CVE-2023-51767 و شدت بالا (7.0) شده‌‌‌‌‌‌‌اند. OpenSSH، مخفف Open Secure Shell، مجموعه ای از ابزارهای شبکه ایمن مبتنی بر پروتکل  (SSH (Secure Shell  است. این ابزارها، یک کانال امن را بر روی یک شبکه ناامن در معماری سرویس گیرنده-سرور فراهم می‌‌‌‌‌‌‌کنند و دسترسی و ارتباط از راه دور ایمن بین رایانه‌‌‌‌‌‌‌ها را مهیا می‌‌‌‌‌‌‌کنند. مشخص شده است که این مجموعه در برابر نوع جدیدی از حمله به نام حمله Row Hammer آسیب‌‌‌‌‌‌‌پذیر است و خطرات امنیتی قابل توجهی دارد.
حمله Row Hammer، با دسترسی مکرر به یک مکان خاص در حافظه باعث می‌شود که بیت‌های ذخیره‌شده در آنجا ناپایدار شوند. در پی آن، مهاجم قادر به خواندن اشتباه محتویات حافظه رایانه قربانی خواهد بود که می‌‌‌‌‌‌‌تواند موجب دسترسی غیرمجاز به اطلاعات حساس یا حتی کنترل کامل سیستم شود. طبق این گزارش، این آسیب‌پذیری در بخشی است که OpenSSH، رمز عبور را در احراز هویت مدیریت می‌کند. هنگامی که کاربر سعی می‌‌‌‌‌‌‌کند وارد سیستم شود، OpenSSH رمز عبور وارد شده را در حافظه ذخیره می‌‌‌‌‌‌‌کند. اگر مهاجم بداند این رمز عبور در کجای حافظه قرار دارد، می‌تواند مکرراً به آن مکان دسترسی پیدا کند و باعث شود بیت‌ها برگردند و رمز عبور را به چیز دیگری تغییر داده و به سیستم دسترسی پیدا کند، حتی اگر رمز عبور صحیح را نداند. این آسیب‌پذیری به صورت ‌ویژه نگران‌کننده است، چرا که می‌تواند توسط مهاجمی که قبلاً کاربر دارای مجوز در سیستم هدف بوده است، مورد بهره‌برداری قرار گیرد. به عبارت دیگر، مهاجم نیازی به نفوذ به سیستم ندارد و تنها لازم است در وهله اول، مجوز دسترسی به آن را داشته باشد. لذا مهاجمان از این آسیب‌پذیری در محیط‌هایی که کاربران اغلب حساب‌های کاربری را به اشتراک می‌گذارند یا مجوزهای محدودی دارند، بهره‌برداری می‌‌‌‌‌‌‌کنند.
در مخزن GitHub openssh/libopenssh، در متن فایل C به نام auth-passwd.c اشاره شده است که این فایل، بخشی  از پروژه رسمی OpenSSH است. چنانچه در متن زیر دیده می شود، این فایل شامل اجرای تابع auth_password است که مطابق زیر برای احراز هویت کاربران با استفاده از رمز عبور به کار می‌‌‌‌‌‌‌رود.

result = sys_auth_passwd(ssh, password);
OpenSSH

این خط برنامه، نتیجه فراخوانی تابع sys_auth_passwd را که در فایل دیگری به نام auth.c تعریف شده است، برمی گرداند. تابع بررسی می‌‌‌‌‌‌‌‌کند که آیا رمز عبور داده شده با رمز ذخیره شده در سیستم برای کاربر مرتبط با پارامتر authctxt مطابقت دارد یا خیر.
فایل منبع C دیگری به نام monitor.c در همان مخزن GitHub وجود دارد که شامل پیاده‌‌‌‌‌‌‌‌سازی کلاس مانیتور است که برای همگام‌‌‌‌‌‌‌‌سازی دسترسی به اشیاء در یک محیط چند‌‌‌‌‌‌‌‌رشته‌ای استفاده می‌‌‌‌‌‌‌‌شود. خط خاصی از کد که آسیب‌‌‌‌‌‌‌‌پذیری از آن استفاده می‌‌‌‌‌‌‌‌کند عبارت است از:

authenticated = mm_answer_pam_account

این خط پس از اینکه پروتکل احراز هویت، با موفقیت کاربر را تأیید کرد اجرا می‌شود. در متن زیر ساختار نمونه مانیتور نشان داده شده است که کلاسی است که دسترسی به اشیاء را در یک محیط چند رشته‌ای همگام می‌‌‌‌‌‌‌‌کند.

OpenSSH

 

محصولات آسیب‌پذیر
تمامی نسخه‌های قبل از 9.6 از این آسیب‌پذیری تأثیر می‌پذیرند.

توصیه‌های امنیتی
لازم است که تمام کاربران، هرچه سریع‌تر نسخه OpenSSH  را به نسخه 9.7 یا جدیدتر ارتقاء دهند.
 
منابع خبر:


[1] https://github.com/openssh/openssh-portable/blob/8241b9c0529228b4b86d88b1a6076fb9f97e4a99/auth-pass…
[2]https://github.com/openssh/openssh-portable/blob/8241b9c0529228b4b86d88b1a6076fb9f97e4a99/monitor.c…
[3] https://access.redhat.com/security/cve/CVE-2023-51767