Några dagar sen Information om en kritisk sårbarhet avslöjades (CVE-2024-6387) som var identifieras i OpenSSH av Qualys-forskare, och det nämns att det är det tillåter fjärrexekvering av privilegierad kod root utan behov av autentisering.
Qualys forskare De kallade sårbarheten "regreSSHion", och introduceras i standardkonfigurationen för OpenSSH från och med version 8.5 på system som använder Glibc-standardbiblioteket.
Vad är regreSSHion och hur påverkar det OpenSSH?
I Qualys blogginlägg nämns att regreSSHion är resultatet av en regressiv förändring som ingår i OpenSSH 8.5, vilket orsakar ett rastillstånd vid hantering av signaler i sshd. Denna regression eliminerade skyddet mot en gammal sårbarhet, som var teoretisk till sin natur (i praktiken var det mycket komplext eller nästan omöjligt att utnyttja den).
Under utvecklingen av OpenSSH 8.5, av misstag togs blocket bort «#ifdef DO_LOG_SAFE_IN_SIGHAND» från sigdie()-funktionen, som körs direkt från SIGALRM-styrenheten. Kontrollanten SIGALRM körs asynkront på sshd om klienten inte har autentiserats inom anslutningstiden (LoginGraceTime, standard 120 sekunder).
Exploateringsmetod
Attacken bygger på att signalhanteraren anropar funktioner som inte är säkra för asynkron signalbehandling, som t.ex syslog(). I Glibc är syslog()-funktionen inte designad för att användas i asynkront exekverade signalhanterare.
La Aktivering av SIGALRM-signalen avbryter exekveringen av viss kod på sshd, vilket kan leda till en kränkning av exekutionsstaten. Målet med exploateringen är att skapa förutsättningar för att avbryta den önskade koden vid rätt tidpunkt. Till exempel att aktivera SIGALRM under exekveringen av malloc eller gratis kan korrumpera de interna strukturerna av malloc. OpenBSD påverkas inte av denna sårbarhet eftersom, istället för syslog(), anropar SIGALRM-signalhanteraren funktionen syslog_r(), speciellt designad för asynkront utförande.
Qualys-forskare nämner att Attacken är enklare och mindre tidskrävande på system utan ASLR eller på distributioner som använder en modifierad version av OpenSSH vilket inaktiverar omrandomisering av ASLR per anslutning.
Sårbarheten demonstrerades på ett 32-bitarssystem med Glibc- och ASLR-skydd (randomisering av adressutrymme) aktiverad. En lyckad attack i en kontrollerad miljö det tog ca 6-8 timmar, under vilka kontinuerliga anslutningar gjordes till servern med den maximala hastigheten som tillåts av sshd-konfigurationen.
Även en attack på 64-bitarssystem kan inte uteslutas, en exploatering har ännu inte utvecklats funktionellt för dessa system. Att attackera 64-bitars system förväntas ta betydligt längre tid, dock inte mer än en vecka.
Begränsning och lösning
Det nämns att OpenSSH på OpenBSD inte påverkas av denna sårbarhet, sedan 2001 har detta system använt en skyddsmekanism som blockerar denna typ av attacker. I andra system baserade på andra standardbibliotek än Glibc är det teoretiskt möjligt att anpassa attackmetoden, även om denna aspekt ännu inte har undersökts av Qualys.
Dessutom är system med Musl C-standardbiblioteket inte sårbara. till denna exploateringsteknik, eftersom i musl funktionen syslog() använder inte dynamisk minnesallokering vid formatering av utdata med printf () och anropar inte funktionen lokal tid() genom att bifoga tiden till skickade meddelandeloggar.
Slutligen bör det nämnas att Sårbarheten har åtgärdats i den korrigerade versionen av OpenSSH 9.8., som publicerades nyligen och vi kommer att prata om det i en kommande artikel. Som en lösning för att mildra sårbarheten, parametern "LoginGraceTime=0" i filen sshd_config. Att inaktivera timeout kan dock göra det lättare att initiera en överbelastningsattack om flera anslutningar upprättas som överskrider de gränser som anges av parametern MaxStartups.
Om du är intresserad av att lära dig mer om det, inbjuder jag dig att konsultera Qualys-publikationen på följande länk.