OpenBSD privilege-escalatie en authenticatie omzeilen kwetsbaarheden in smtpd, ldapd en radiusd

Qualys bedrijf onthuld четыре kwetsbaarheden in OpenBSD, waarvan er één u in staat stelt om op afstand verbinding te maken zonder authenticatie met sommige netwerkdiensten, en de andere drie verhogen uw privileges in het systeem. Het Qualys-rapport maakte melding van de snelle reactie van de OpenBSD-ontwikkelaars - alle problemen waren er geëlimineerd в OpenBSD 6.5 и OpenBSD 6.6 binnen 40 uur na privémelding.

Het op afstand exploiteerbare beveiligingslek wordt veroorzaakt door een fout bij het aanroepen van de authenticatiehandler in de libc-bibliotheek, die aanroept
programma /usr/libexec/auth/login_style en geeft argumenten door op de opdrachtregel. Ook bij het aanroepen van login_style met behulp van de optionele parameter “-s service” is het mogelijk om de protocolnaam over te dragen. Als u een "-" teken aan het begin van een gebruikersnaam gebruikt, wordt deze naam behandeld als een optie bij het uitvoeren van login_style. Dienovereenkomstig, als u “-schallenge” of “-schallenge:passwd” opgeeft als gebruikersnaam tijdens authenticatie, zal login_style het verzoek opvatten als een verzoek om de handler te gebruiken S/Sleutel.

Het probleem is dat het S/Key-protocol in login_style alleen formeel wordt ondersteund, maar feitelijk wordt genegeerd met als resultaat een teken van succesvolle authenticatie. Een aanvaller kan dus, door zich voor te doen als de gebruiker "-challenge", de authenticatie omzeilen en toegang krijgen zonder een wachtwoord of sleutels op te geven. Alle netwerkservices die standaard libc-oproepen voor authenticatie gebruiken, worden mogelijk door dit probleem getroffen. De mogelijkheid om authenticatie te omzeilen wordt bijvoorbeeld ondersteund in smtpd (AUTH PLAIN), ldapd en radiusd.

De kwetsbaarheid komt niet voor in sshd, omdat deze extra bescherming biedt die de aanwezigheid van de gebruiker in het systeem controleert. Sshd kan echter worden gebruikt om de kwetsbaarheid van een systeem te testen - bij toegang tot de gebruikersnaam "-sresponse:passwd" blijft de verbinding hangen, omdat sshd wacht tot login_passwd de uitdagingsparameters retourneert, en login_passwd wacht tot de ontbrekende parameters zijn geretourneerd. worden verzonden (naam "- sresponse" wordt als optie behandeld). Een lokale aanvaller zou mogelijk kunnen proberen de authenticatie in het su-hulpprogramma te omzeilen, maar het doorgeven van de naam "-sresponse" zorgt ervoor dat het proces crasht door een null-aanwijzer terug te geven bij het uitvoeren van de functie getpwnam_r("-schallenge", ...).

Andere kwetsbaarheden:

  • CVE-2019-19520 Escalatie van lokale bevoegdheden via manipulatie van het xlock-hulpprogramma dat wordt meegeleverd met de sgid-vlag, waardoor de groep wordt gewijzigd in "auth". In de xlock-code is het herdefiniëren van paden naar bibliotheken alleen verboden wanneer de gebruikersidentificatie (setuid) wordt gewijzigd, waardoor de aanvaller de omgevingsvariabele “LIBGL_DRIVERS_PATH” kan wijzigen en het laden van zijn gedeelde bibliotheek kan organiseren, waarvan de code zal worden uitgevoerd na het verhogen van de rechten voor de groep "authenticatie".
  • CVE-2019-19522 - Hiermee kan een lokale gebruiker die lid is van de "auth"-groep code uitvoeren als root wanneer S/Key- of YubiKey-authenticatie is ingeschakeld op het systeem (standaard niet actief). Door lid te worden van de groep “auth”, waartoe u toegang kunt krijgen door misbruik te maken van de hierboven genoemde kwetsbaarheid in xlock, kunt u bestanden naar de mappen /etc/skey en /var/db/yubikey schrijven. Een aanvaller kan bijvoorbeeld een nieuw bestand /etc/skey/root toevoegen om eenmalige sleutels te genereren voor authenticatie als rootgebruiker via S/Key.
  • CVE-2019-19519 - de mogelijkheid om de resourcelimieten te vergroten door manipulatie van het su-hulpprogramma. Wanneer de optie "-L" is opgegeven, waardoor authenticatiepogingen cyclisch worden herhaald als ze niet succesvol zijn, wordt de gebruikersklasse slechts één keer ingesteld en bij volgende pogingen niet opnieuw ingesteld. Een aanvaller kan bij de eerste poging om de login van iemand anders met een andere accountklasse in te voeren “su -l -L” uitvoeren, maar bij de tweede poging kan hij zich met succes als zichzelf authenticeren. In deze situatie is de gebruiker onderworpen aan limieten op basis van de gebruikersklasse die bij de eerste poging is opgegeven (bijvoorbeeld het maximale aantal processen of de geheugengrootte voor een proces). De methode werkt alleen voor het lenen van limieten van niet-bevoorrechte gebruikers, aangezien de rootgebruiker zich in de wielgroep moet bevinden.

Bovendien kan worden opgemerkt implementatie in OpenBSD, een nieuwe methode voor het controleren van de geldigheid van systeemaanroepen, wat de exploitatie van kwetsbaarheden verder compliceert. Met deze methode kunnen systeemaanroepen alleen worden uitgevoerd als deze worden benaderd vanuit eerder geregistreerde geheugengebieden. Om geheugengebieden te markeren voorgesteld nieuwe systeemoproep msyscall().

Bron: opennet.ru