Преди няколко дни Беше разкрита информация за критична уязвимост (CVE-2024 6387-) което беше идентифицирани в OpenSSH от изследователи на Qualys и се споменава, че е така позволява дистанционно изпълнение на привилегирован код root без необходимост от удостоверяване.
Изследователи на Qualys Те нарекоха уязвимостта „regreSSHion“, и се въвежда в конфигурацията на OpenSSH по подразбиране, започвайки от версия 8.5 на системи, използващи стандартната библиотека Glibc.
Какво е regreSSHion и как влияе върху OpenSSH?
В публикацията в блога на Qualys се споменава, че regreSSHion е резултат от регресивна промяна, включена в OpenSSH 8.5, която причинява състояние на състезание при обработка на сигнали в sshd. Тази регресия елиминира защита срещу стара уязвимост, която беше теоретична по природа (на практика беше много сложно или почти невъзможно да се използва).
По време на разработването на OpenSSH 8.5, по погрешка блокът беше премахнат «#ifdef DO_LOG_SAFE_IN_SIGHAND» от функцията sigdie(), който работи директно от контролера SIGALRM. Контролерът SIGALRM работи асинхронно на sshd ако клиентът не се е удостоверил в рамките на времето за изчакване на връзката (LoginGraceTime, по подразбиране 120 секунди).
Метод на експлоатация
Атаката се основава на факта, че манипулаторът на сигнали извиква функции, които не са безопасни за асинхронна обработка на сигнали, като напр syslog(). В Glibc функцията syslog() не е проектирана да се използва в асинхронно изпълнявани манипулатори на сигнали.
La Активирането на сигнала SIGALRM прекъсва изпълнението на определен код на sshd, което може да доведе до нарушаване на състоянието на изпълнение. Целта на експлойта е да създаде условия за прекъсване на желания код в точното време. Например, активиране на SIGALRM по време на изпълнение на malloc или безплатно може да развали вътрешните структури на изчистване. OpenBSD не е засегнат от тази уязвимост, защото вместо syslog(), манипулаторът на сигнала SIGALRM извиква функцията syslog_r(), специално проектиран за асинхронно изпълнение.
Изследователите на Qualys споменават, че Атаката е по-лесна и отнема по-малко време на системи без ASLR или на дистрибуции, които използват модифицирана версия на OpenSSH което деактивира повторната рандомизация на ASLR за всяка връзка.
Уязвимостта беше демонстрирана на 32-битова система с Glibc и ASLR защита (рандомизиране на адресно пространство) е активирано. Успешна атака в контролирана среда отне около 6-8 часа, по време на които са правени непрекъснати връзки към сървъра с максималната скорост, разрешена от конфигурацията на sshd.
Въпреки че не може да се изключи атака срещу 64-битови системи, все още не е разработен експлойт функционален за тези системи. Очаква се атаката на 64-битови системи да отнеме значително повече време, макар и не повече от седмица.
Смекчаване и решение
Споменава се, че OpenSSH на OpenBSD не е засегнат от тази уязвимост, тъй като от 2001 г. тази система използва защитен механизъм, който блокира този тип атаки. В други системи, базирани на стандартни библиотеки, различни от Glibc, теоретично е възможно да се адаптира методът на атака, въпреки че този аспект все още не е проучен от Qualys.
Освен това системите със стандартната библиотека Musl C не са уязвими. към тази техника на експлоатация, тъй като в musl функцията syslog() не използва динамично разпределение на паметта при форматиране на изход с помощта на printf() и не извиква функцията местно време() като прикачите времето към регистрационните файлове на изпратените съобщения.
И накрая, трябва да се спомене, че Уязвимостта е коригирана в версията с корекция на OpenSSH 9.8., който беше публикуван наскоро и ще говорим за него в предстояща статия. Като заобиколно решение за смекчаване на уязвимостта, параметърът „LoginGraceTime=0“ във файла sshd_config. Деактивирането на времето за изчакване обаче може да улесни инициирането на атака за отказ на услуга, ако се установят многобройни връзки, които надвишават ограниченията, определени от параметъра MaxStartups.
Ако се интересувате да научите повече за това, каня ви да се консултирате с публикацията на Qualys на адрес следната връзка.