Этот год интересно проходит для SSH. Весной — бэкдор в xz-utils (CVE-2024-3094), в результате эксплуатации которого были скомпрометированы системы с systemd, в которых в OpenSSH есть зависимость liblzma, отсутствующая в нем изначально и самим OpenSSH напрямую не используемая (то есть скорее речь об атаке на цепочку поставок этих дистрибутивов, а не конкретно на OpenSSH). В июле — критически опасная уязвимость «состояния гонки» для систем на базе glibc, получившая название regreSSHion (CVE-2024-6387) и представляющая собой перерожденную CVE-2006-5051. Спустя еще неделю была опубликована схожая проблема, получившая идентификатор CVE-2024-6409. А в августе — еще одна, уже специфичная для FreeBSD, CVE-2024-7589.
Как заявляют исследователи, успешная эксплуатация «состояний гонки» позволяет получить RCE на подверженных системах. Более того, regreSSHion — главный баг, ставящий под угрозу безопасность множества SSH-серверов с glibc. Он затрагивает привилегированный процесс sshd: при успешной эксплуатации атакующий сразу получает права суперпользователя, открывающие широчайшие просторы для дальнейших действий злоумышленника (он сможет хоть стереть все подчистую, хоть установить в системе руткит уровня ядра). Исследователи Qualys, изначально обнаружившие regreSSHion, предоставили техническое описание уязвимости с некоторыми подробностями работы своих эксплойтов, реализованных для трех версий sshd для 32-битных систем, из которых наиболее актуальная — 9.2p1 Debian-2+deb12u2. Интересно, что эксплуатация уязвимости не требует особой конфигурации сервера (проблема актуальна и для конфигурации по умолчанию). При этом публичного PoC нет до сих пор. Мы решили разобраться в вопросе: так ли страшны эти «состояния гонки», так ли критически опасны? И какие механизмы в sshd призваны не допустить эксплуатации этой уязвимости или хотя бы уменьшить ущерб в случае успешной атаки?