Kwetsbaarheid in OpenSSH maakt het mogelijk om op afstand root-code uit te voeren op servers met Glibc

Het bedrijf Qualys heeft een kritieke kwetsbaarheid (CVE-2024-6387) in OpenSSH ontdekt, waarmee op afstand code met root-rechten kan worden uitgevoerd zonder authenticatie. De kwetsbaarheid, die de codenaam regreSSHion heeft gekregen, doet zich voor in de standaardconfiguratie vanaf versie OpenSSH 8.5 op systemen met de standaard bibliotheek Glibc.

De mogelijkheid om een aanval uit te voeren is gedemonstreerd op een 32-bits systeem met Glibc met ingeschakelde ASLR-beveiliging (Address Space Layout Randomization). Voor een succesvolle aanval in laboratoriumomstandigheden waren 6-8 uur nodig, waarin continu verbindingen werden gemaakt met de maximaal toegestane intensiteit in de sshd-configuratie. server Het uitvoeren van de aanval wordt vergemakkelijkt en vraagt minder tijd op systemen zonder ASLR of in distributies die een gemodificeerd OpenSSH gebruiken, waarin de herhaaldelijke ASLR-randomisatie voor elke verbinding is uitgeschakeld. Er is besloten om een werkend prototype van de exploit niet openbaar te maken tot de kwetsbaarheid breed is verholpen, maar er is voldoende gedetailleerde beschrijving van de kwetsbaarheid beschikbaar, wat het verschijnen van externe exploits slechts een kwestie van tijd maakt.

De mogelijkheid van een aanval op 64-bits systemen wordt niet uitgesloten, maar een werkende exploit voor dergelijke systemen is nog niet gereed. Er wordt aangenomen dat het uitvoeren van een aanval op 64-bits systemen veel meer tijd zal kosten, maar niet meer dan een week. OpenSSH in OpenBSD is niet vatbaar voor het probleem, omdat in dit systeem vanaf 2001 een beschermingsmechanisme wordt gebruikt dat deze soorten aanvallen blokkeert. In andere systemen met standaardbibliotheken, anders dan Glibc, is theoretisch een aanpassing van de methode om een aanval uit te voeren mogelijk (deze kwestie is bij Qualys nog niet bestudeerd).

De kwetsbaarheid is verholpen in de vandaag gepubliceerde release van OpenSSH 9.8 (patch). Het volgen van de publicatie van pakketupdates in distributies is mogelijk op de pagina's: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, ROSA, Gentoo, ALT Linux, Arch en FreeBSD. Als tijdelijke oplossing om de kwetsbaarheid te blokkeren, kan in sshd_config de parameter "LoginGraceTime=0" worden ingesteld, maar het uitschakelen van de time-out vergemakkelijkt het initiƫren van een denial-of-service aanval bij het maken van een groot aantal verbindingen die de limieten overschrijden, zoals gedefinieerd via de parameter MaxStartups.
Een van de signalen van een poging tot een aanval is het verschijnen van een groot aantal records "Timeout before authentication" in de logbestanden.

De kwetsbaarheid is ontstaan door een regressieve wijziging die is opgenomen in de release van OpenSSH 8.5, wat leidt tot een raceconditie in de signal processing code in sshd. De regressie heeft de bescherming tegen een oude kwetsbaarheid CVE-2006-5051 opgeheven, die tot versie OpenSSH 4.4 (2006) aanwezig was en theoretisch van aard was.
Tijdens de ontwikkeling van OpenSSH 8.5 is per ongeluk een blok "#ifdef DO_LOG_SAFE_IN_SIGHAND" verwijderd uit de functie sigdie(), die direct wordt aangeroepen vanuit de SIGALRM handler.

De SIGALRM handler wordt asynchroon in sshd aangeroepen als de client niet binnen de door de login timeout (LoginGraceTime, standaard 120 seconden) beperkte tijd is geauthenticeerd. De aanval is gebaseerd op het feit dat de signal handler functies aanroept die niet veilig zijn voor asynchrone signal handlers, zoals syslog(). De syslog() functie in Glibc is niet ontworpen voor gebruik in asynchroon uitgevoerde signal handlers, omdat deze malloc() en free() aanroept. De activatie van het SIGALRM signaal, dat de uitvoering van specifieke code in sshd onderbreekt, kan leiden tot een verstoring van de uitvoeringstoestand, en de taak van de exploit is het creƫren van de voorwaarden om de benodigde code op het juiste moment van uitvoering te onderbreken. De kwetsbaarheid betreft OpenBSD niet, omdat daar in plaats van syslog() de functie syslog_r() wordt aangeroepen vanuit de SIGALRM signal handler, speciaal ontworpen voor asynchrone uitvoering.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster