Nezda sa, ze by to bolo ale glibc related, problem ma aj napr. FreeBSD: https://www.freebsd.org/security/advisories/FreeBSD-SA-24:04.openssh.asc
Možná i jiné, ale Qualys to nestudoval. OpenBSD zranitelný není.
"This vulnerability is exploitable remotely on glibc-based Linux systems, where syslog() itself calls async-signal-unsafe functions (for example, malloc() and free()): an unauthenticated remote code execution as root, because it affects sshd's privileged code, which is not sandboxed and runs with full privileges. We have not investigated any other libc or operating system; but OpenBSD is notably not vulnerable, because its SIGALRM handler calls syslog_r(), an async-signal-safer version of syslog() that was invented by OpenBSD in 2001."
Zas tak "horsi" to s tim backportem neni - Debian/Bookworm to backportoval do 9.2... a ta aktualizace prisla uz v sobotu vecer.
Ten patch mimochodem prosel i openwallem.... (v debianu sli dal, tam to zarizli uplne; je tam #if 0
...).
diff --git a/log.c b/log.c index 9fc1a2e2e..191ff4a5a 100644 --- a/log.c +++ b/log.c @@ -451,12 +451,14 @@ void sshsigdie(const char *file, const char *func, int line, int showfunc, LogLevel level, const char *suffix, const char *fmt, ...) { +#ifdef SYSLOG_R_SAFE_IN_SIGHAND va_list args; va_start(args, fmt); sshlogv(file, func, line, showfunc, SYSLOG_LEVEL_FATAL, suffix, fmt, args); va_end(args); +#endif _exit(1); }
Mimochodem, na Shodanu je pekna statistika, co se moznych dopadu tyce. Malo toho neni.
Začal jsem číst
The SIGALRM handler of this OpenSSH version calls packet_close(), which
calls buffer_free(), which calls xfree() and hence free(), which is not
async-signal-safe:
... a hned jsem přestal.
Kolik takového kódu existuje? Nechcete někdo přepsat SSH do něčeho lepšího?
Já jsem tedy C++ programátor, ale nikdy bych si nedovolil v signalhandleru dělat něco jiného než jen nastavit příznak nebo nějaký eventfd, a ten si vyzvednout mimo signal handler.
Zpravidla na zpracování signálů mám vlákno, kterého vzbudím s tím, že dostane informace o signálu.