Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² OpenSSH, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root Π½Π° сСрвСрах с Glibc

Компания Qualys выявила ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2024-6387) Π² OpenSSH, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ выполнСния ΠΊΠΎΠ΄Π° с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root Π±Π΅Π· прохоТдСния Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ, которая ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ имя regreSSHion, проявляСтся Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ начиная с вСрсии OpenSSH 8.5 Π½Π° систСмах со стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Glibc.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ продСмонстрирована Π½Π° 32-разрядной систСмС с Glibc с Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ASLR (рандомизация адрСсного пространства). Для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Π°Ρ‚Π°ΠΊΠΈ Π² Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… условиях ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ 6-8 часов, Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… с сСрвСром Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈΡΡŒ соСдинСния с максимально допустимой Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ sshd ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ. Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Π°Ρ‚Π°ΠΊΠΈ упрощаСтся ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ мСньшС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° систСмах Π±Π΅Π· ASLR ΠΈΠ»ΠΈ Π² дистрибутивах, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ OpenSSH, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° повторная рандомизация ASLR для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ соСдинСния. Π Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ эксплоита Π΄ΠΎ повсСмСстного устранСния уязвимости Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π½Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ, Π½ΠΎ ΠΏΡ€ΠΈ этом доступно достаточно ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС сути уязвимости, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ появлСниС сторонних эксплоитов Π΄Π΅Π»ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

НС ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ ΠΈ Π½Π° 64-разрядныС систСмы, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ эксплоит для Ρ‚Π°ΠΊΠΈΡ… систСм ΠΏΠΎΠΊΠ° Π½Π΅ Π³ΠΎΡ‚ΠΎΠ². ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π°Ρ‚Π°ΠΊΠΈ Π½Π° 64-разрядныС систСмы Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Π½Π΅Π΄Π΅Π»ΠΈ. OpenSSH Π² OpenBSD ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π΄Π°Π½Π½ΠΎΠΉ систСмС с 2001 Π³ΠΎΠ΄Π° примСняСтся ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π·Π°Ρ‰ΠΈΡ‚Ρ‹, Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ классы Π°Ρ‚Π°ΠΊ. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… систСмах Π½Π° основС стандартных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ Glibc, тСорСтичСски Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° адаптация ΠΌΠ΅Ρ‚ΠΎΠ΄Π° для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ (Π² Qualys Π΄Π°Π½Π½Ρ‹ΠΉ вопрос ΠΏΠΎΠΊΠ° Π½Π΅ изучался).

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ устранСна Π² ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠΌ сСгодня выпускС OpenSSH 9.8 (ΠΏΠ°Ρ‚Ρ‡). ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² дистрибутивах ΠΌΠΎΠΆΠ½ΠΎ Π½Π° страницах: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, ROSA, Gentoo, ALT Linux, Arch ΠΈ FreeBSD. Π’ качСствС ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ блокирования уязвимости Π² sshd_config ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ «LoginGraceTime=0», ΠΏΡ€ΠΈ этом ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π° упростит ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚ΠΊΠ°Π·Π° Π² обслуТивании ΠΏΡ€ΠΈ установкС большого числа соСдинСний, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΡ… Π»ΠΈΠΌΠΈΡ‚Ρ‹, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ MaxStartups.
Одним ΠΈΠ· ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ являСтся появлСниС Π² Π»ΠΎΠ³Π΅ большого числа записСй «Timeout before authentication».

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ появилась Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ рСгрСссивного измСнСния, вошСдшСго Π² состав выпуска OpenSSH 8.5 ΠΈ приводящСго ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π³ΠΎΠ½ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сигналов Π² sshd. РСгрСссия ΠΏΡ€ΠΈΠ²Π΅Π»Π° ΠΊ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΡŽ дСйствия Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ старой уязвимости CVE-2006-5051, ΠΏΡ€ΠΎΡΠ²Π»ΡΠ²ΡˆΠ΅ΠΉΡΡ Π΄ΠΎ вСрсии OpenSSH 4.4 (2006 Π³ΠΎΠ΄) ΠΈ носившСй тСорСтичСский Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€.
Π’ Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ OpenSSH 8.5 ΠΏΠΎ ошибкС ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sigdie(), которая Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ вызываСтся ΠΈΠ· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° SIGALRM, Π±Ρ‹Π»Π° ΡƒΠ΄Π°Π»Ρ‘Π½ Π±Π»ΠΎΠΊ «#ifdef DO_LOG_SAFE_IN_SIGHAND».

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ SIGALRM вызываСтся Π² sshd Π² асинхронном Ρ€Π΅ΠΆΠΈΠΌΠ΅, Ссли ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (LoginGraceTime, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 120 сСк). Атака основана Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ сигнала Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ бСзопасныС ΠΏΡ€ΠΈ асинхронной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ сигналов, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ syslog(). Ѐункция syslog() Π² Glibc Π½Π΅ рассчитана Π½Π° использованиС Π² асинхронно выполняСмых ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… сигналов, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ malloc() ΠΈ free(). Π‘Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ сигнала SIGALRM, ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² sshd, ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡŽ состояния выполнСния, Π° Π·Π°Π΄Π°Ρ‡Π° эксплоита сводится ΠΊ созданию условий для прСрывания Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅Π³ΠΎ выполнСния. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ OpenBSD, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π½Ρ‘ΠΌ вмСсто syslog() ΠΈΠ· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° сигнала SIGALRM вызываСтся функция syslog_r(), ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ созданная для асинхронного запуска.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru