در کلاینت های SSH OpenSSH و PuTTY
با علم به اینکه کلاینت برای اولین بار در تلاش برای اتصال است و هنوز کلید میزبان را در کنار خود ندارد، مهاجم می تواند اتصال را از طریق خود (MITM) پخش کند و کلید میزبان خود را به کلاینت بدهد که کلاینت SSH آن را در نظر می گیرد. اگر اثر انگشت کلید را تأیید نکرد، کلید میزبان مورد نظر باشد. بنابراین، یک مهاجم میتواند MITM را بدون برانگیختن سوء ظن کاربر سازماندهی کند و جلساتی را که در آن سمت کلاینت از قبل کلیدهای میزبان را در حافظه پنهان دارد، نادیده بگیرد، تلاشی برای جایگزینی که منجر به هشدار در مورد تغییر کلید میزبان میشود. این حمله بر اساس بی احتیاطی کاربرانی است که هنگام اولین اتصال، اثر انگشت کلید میزبان را به صورت دستی بررسی نمی کنند. کسانی که اثر انگشت کلید را بررسی می کنند در برابر چنین حملاتی در امان هستند.
به عنوان نشانه ای برای تعیین اولین تلاش برای اتصال، از تغییر در ترتیب فهرست الگوریتم های کلید میزبان پشتیبانی شده استفاده می شود. اگر اولین اتصال رخ دهد، کلاینت لیستی از الگوریتمهای پیشفرض را ارسال میکند، و اگر کلید میزبان از قبل در حافظه پنهان باشد، الگوریتم مرتبط در وهله اول قرار میگیرد (الگوریتمها به ترتیب اولویت مرتب میشوند).
مشکل در نسخه های OpenSSH 5.7 تا 8.3 و PuTTY 0.68 تا 0.73 ظاهر می شود. مسئله
پروژه OpenSSH برنامه ای برای تغییر رفتار کلاینت SSH ندارد، زیرا اگر در ابتدا الگوریتم کلید موجود را مشخص نکنید، سعی می شود از الگوریتمی استفاده شود که با کلید ذخیره شده مطابقت ندارد و یک هشدار در مورد یک کلید ناشناخته نمایش داده می شود. آن ها یک انتخاب ایجاد می شود - یا نشت اطلاعات (OpenSSH و PuTTY)، یا هشدار در مورد تغییر کلید (Dropbear SSH) اگر کلید ذخیره شده با اولین الگوریتم در لیست پیش فرض مطابقت نداشته باشد.
برای تأمین امنیت، OpenSSH روشهای جایگزینی را برای تأیید کلید میزبان با استفاده از ورودیهای SSHFP در DNSSEC و گواهیهای میزبان (PKI) ارائه میکند. همچنین میتوانید انتخاب تطبیقی الگوریتمهای کلید میزبان را از طریق گزینه HostKeyAlgorithms غیرفعال کنید و از گزینه UpdateHostKeys استفاده کنید تا به مشتری اجازه دهید پس از احراز هویت، کلیدهای میزبان اضافی را دریافت کند.
منبع: opennet.ru