انتشار OpenSSH 9.2 منتشر شده است، یک پیاده سازی باز از یک کلاینت و سرور برای کار با استفاده از پروتکل های SSH 2.0 و SFTP. نسخه جدید آسیب پذیری را که منجر به آزادسازی مضاعف حافظه در مرحله پیش احراز هویت می شود، از بین می برد. فقط نسخه OpenSSH 9.1 تحت تأثیر قرار گرفته است؛ این مشکل در نسخه های قبلی ظاهر نمی شود.
برای ایجاد شرایط برای بروز آسیبپذیری، کافی است بنر سرویس گیرنده SSH را به «SSH-2.0-FuTTYSH_9.1p1» تغییر دهید تا پرچمهای «SSH_BUG_CURVE25519PAD» و «SSH_OLD_DHGEX» را که به نسخه SSH بستگی دارد، تنظیم کنید. مشتری. پس از تنظیم این پرچم ها، حافظه بافر "options.kex_algorithms" دو بار آزاد می شود - هنگام اجرای تابع do_ssh2_kex() که compat_kex_proposal() را فراخوانی می کند، و هنگام اجرای تابع do_authentication2() که input_userauth_get(mm(amallow) را فراخوانی می کند. )، copy_set_server_options() در امتداد زنجیره، assemble_algorithms() و kex_assemble_names().
ایجاد یک اکسپلویت کاری برای این آسیبپذیری بعید تلقی میشود، زیرا فرآیند بهرهبرداری بسیار پیچیده است - کتابخانههای تخصیص حافظه مدرن محافظت در برابر آزادسازی مضاعف حافظه را فراهم میکنند، و فرآیند پیشتأیید که در آن خطا وجود دارد با امتیازات کاهشیافته در یک ایزوله اجرا میشود. محیط سندباکس
علاوه بر آسیبپذیری ذکر شده، نسخه جدید دو مشکل امنیتی دیگر را نیز برطرف میکند:
- هنگام پردازش تنظیمات "PermitRemoteOpen" خطایی روی داد که باعث شد آرگومان اول در صورتی که با مقادیر "any" و "none" متفاوت باشد نادیده گرفته شود. این مشکل در نسخههای جدیدتر از OpenSSH 8.7 ظاهر میشود و باعث میشود زمانی که فقط یک مجوز مشخص شده باشد، بررسی رد میشود.
- اگر گزینههای CanonicalizeHostname و CanonicalizePermittedCNAMEs در پیکربندی فعال باشند، و حلکننده سیستم صحت آن را بررسی نکند، مهاجمی که سرور DNS مورد استفاده برای حل نامها را کنترل میکند، میتواند به جایگزینی کاراکترهای خاص (به عنوان مثال، "*") در فایلهای Know_hosts دست یابد. پاسخ از سرور DNS این حمله بعید تلقی می شود زیرا نام های برگشتی باید با شرایط مشخص شده از طریق CanonicalizePermittedCNAME مطابقت داشته باشند.
سایر تغییرات:
- یک تنظیم EnableEscapeCommandline برای ssh به ssh_config اضافه شده است تا کنترل شود که آیا پردازش سمت کلاینت دنباله فرار "~C" که خط فرمان را فراهم می کند فعال است یا خیر. بهطور پیشفرض، کنترل «~C» اکنون برای استفاده از ایزولهسازی محکمتر sandbox غیرفعال است، که احتمالاً سیستمهایی را که از «~C» برای ارسال پورت در زمان اجرا استفاده میکنند، خراب میکند.
- دستورالعمل ChannelTimeout به sshd_config برای sshd اضافه شده است تا زمان عدم فعالیت کانال را تنظیم کند (کانال هایی که در آن ترافیک برای مدت زمان مشخص شده در دستورالعمل ثبت نشده است به طور خودکار بسته می شوند). زمانبندیهای مختلفی را میتوان برای تغییر مسیر جلسه، X11، عامل و ترافیک تنظیم کرد.
- دستورالعمل UnusedConnectionTimeout به sshd_config برای sshd اضافه شده است، به شما این امکان را می دهد تا برای خاتمه اتصالات کلاینت که برای مدت معینی بدون کانال فعال بوده اند، یک بازه زمانی تعیین کنید.
- گزینه "-V" برای نمایش نسخه به sshd اضافه شده است، مشابه گزینه مشابه در سرویس گیرنده ssh.
- خط "Host" را به خروجی "ssh -G" اضافه کرد که منعکس کننده مقدار آرگومان نام میزبان است.
- گزینه "-X" به scp و sftp اضافه شده است تا پارامترهای پروتکل SFTP مانند اندازه بافر کپی و تعداد درخواست های معلق را کنترل کند.
- ssh-keyscan امکان اسکن طیف کامل آدرس CIDR را فراهم می کند، به عنوان مثال "ssh-keyscan 192.168.0.0/24".
منبع: opennet.ru