Kwetsbaarheden in OpenSMTPD die externe en lokale root-toegang mogelijk maken

Qualys bedrijf onthuld nog een kritieke kwetsbaarheid op afstand (CVE-2020-8794) in de mailserver OpenSMTPD, ontwikkeld door het OpenBSD-project. Zoals degene die eind januari werd geïdentificeerd kwetsbaarheid, maakt een nieuw probleem het mogelijk om op afstand willekeurige shell-opdrachten uit te voeren op een server met rootgebruikersrechten. Kwetsbaarheid geëlimineerd in kwestie OpenSMTPD 6.6.4p1.

Het probleem wordt veroorzaakt door een bug in de code die e-mail aflevert bij de externe mailserver (niet in de code die inkomende verbindingen afhandelt). De aanval is zowel aan de clientzijde als aan de serverzijde mogelijk. Aan de clientzijde is de aanval mogelijk in de standaardconfiguratie van OpenSMTPD, waarbij OpenSMTPD alleen verzoeken accepteert op de interne netwerkinterface (localhost) en mailberichten naar externe servers verzendt. Om de kwetsbaarheid te misbruiken is het voldoende dat OpenSMTPD tijdens het bezorgen van een brief een sessie tot stand brengt met een mailserver die wordt beheerd door de aanvaller, of dat de aanvaller zich in de clientverbinding kan wurmen (MITM of omleiding tijdens aanvallen via DNS of BGP ).

Voor een aanval aan de serverzijde moet OpenSMTPD worden geconfigureerd om externe netwerkverzoeken van andere mailservers te ontvangen of diensten van derden te leveren waarmee u een verzoek naar een willekeurig e-mailadres kunt sturen (bijvoorbeeld adresbevestigingsformulieren op websites). Een aanvaller kan bijvoorbeeld verbinding maken met de OpenSMTPD-server en een onjuiste brief sturen (naar een niet-bestaande gebruiker), wat ertoe leidt dat er als reactie een brief met een foutcode (bounce) naar de server van de aanvaller wordt gestuurd. Een aanvaller kan misbruik maken van het beveiligingslek wanneer OpenSMTPD verbinding maakt om een ​​melding naar de server van de aanvaller te sturen. De shell-opdrachten die tijdens de aanval worden geïnjecteerd, worden in een bestand geplaatst dat met rootrechten wordt uitgevoerd wanneer OpenSMTPD opnieuw wordt opgestart, zodat de aanvaller moet wachten tot OpenSMTPD opnieuw is opgestart of een crash van OpenSMTPD moet initiëren om de aanval te voltooien.

Het probleem doet zich voor in de functie mta_io() in de code voor het parseren van het meerregelige antwoord dat door de externe server wordt geretourneerd nadat een verbinding tot stand is gebracht (bijvoorbeeld "250-ENHANCEDSTATUSCODES" en "250 HELP"). OpenSMTPD berekent dat de eerste regel een driecijferig nummer en tekst bevat, gescheiden door een "-" teken, en dat de tweede regel een driecijferig nummer en tekst bevat, gescheiden door een spatie. Als een getal van drie cijfers niet wordt gevolgd door een spatie en tekst op de tweede regel, wordt de aanwijzer die wordt gebruikt om de tekst te definiëren ingesteld op de byte die volgt op het teken '\0' en wordt geprobeerd de gegevens na het einde te kopiëren. van de lijn in de buffer.

Op verzoek van het OpenBSD-project is de publicatie van details over de exploitatie van de kwetsbaarheid uitgesteld tot 26 februari, zodat gebruikers hun systemen kunnen updaten. Het probleem is sinds december 2015 aanwezig in de codebase, maar exploitatie vóór uitvoering van de code met rootrechten is sinds mei 2018 mogelijk. De onderzoekers hebben een werkend prototype van de exploit voorbereid, dat met succes werd getest in OpenSMTPD-builds voor OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testen) en Fedora 31.

Ook in OpenSMTPD geïdentificeerd Een andere kwetsbaarheid (CVE-2020-8793) waardoor een lokale gebruiker de eerste regel van elk bestand op het systeem kan lezen. U kunt bijvoorbeeld de eerste regel van /etc/master.passwd lezen, die de wachtwoordhash van de rootgebruiker bevat. Door het beveiligingslek kunt u ook de volledige inhoud lezen van een bestand dat eigendom is van een andere gebruiker, als dit bestand zich in hetzelfde bestandssysteem bevindt als de map /var/spool/smtpd/. Het probleem kan niet worden misbruikt op veel Linux-distributies waarbij de waarde van /proc/sys/fs/protected_hardlinks is ingesteld op 1.

Het probleem is een gevolg van onvolledige eliminatie problemen, geuit tijdens de audit uitgevoerd door Qualys in 2015. Een aanvaller kan de uitvoering van zijn code bewerkstelligen met de rechten van de groep “_smtpq” door de variabele “PATH=.” in te stellen. en het plaatsen van een script met de naam makemap in de huidige map (het smtpctl-hulpprogramma voert makemap uit zonder expliciet het pad op te geven). Door toegang te krijgen tot de groep "_smtpq" kan de aanvaller vervolgens een race condition veroorzaken (een groot bestand maken in de offline map en een SIGSTOP-signaal verzenden) en, voordat de verwerking is voltooid, het bestand in de offline map vervangen door een harde schijf. symlink die verwijst naar het doelbestand waarvan de inhoud moet worden gelezen.

Het is opmerkelijk dat in Fedora 31 de kwetsbaarheid je in staat stelt onmiddellijk de privileges van de rootgroep te verkrijgen, omdat het smtpctl-proces is uitgerust met de setgid root-vlag, in plaats van de setgid smtpq-vlag. Door toegang te krijgen tot de rootgroep, kunt u de inhoud van /var/lib/sss/mc/passwd overschrijven en volledige roottoegang tot het systeem krijgen.

Bron: opennet.ru

Voeg een reactie