Kwetsbaarheden in OpenSMTPD, waardoor op afstand en lokaal root-rechten kunnen worden verkregen

Qualys heeft nog ƩƩn kritieke remote kwetsbaarheid (CVE-2020-8794) in de mailserver OpenSMTPD, ontwikkeld door het OpenBSD-project. Zoals vastgesteld aan het einde van januari kwetsbaarheid, biedt dit nieuwe probleem de mogelijkheid om op afstand willekeurige shellopdrachten uit te voeren op de server met rootgebruikersrechten. De kwetsbaarheid opgelost in de release OpenSMTPD 6.6.4p1.

is veroorzaakt door een fout in de code die verantwoordelijk is voor de levering van e-mail naar de externe mailserver (en niet in de code die inkomende verbindingen verwerkt). De aanval kan zowel aan de klantzijde als aan de serverzijde plaatsvinden. Aan de klantzijde is de aanval mogelijk in de standaardconfiguratie van OpenSMTPD, waarin OpenSMTPD verzoeken alleen accepteert op de interne netwerkinterface (localhost) en e-mails verzendt naar externe servers. Om de kwetsbaarheid te exploiteren, is het voldoende dat OpenSMTPD tijdens de levering van een e-mail een sessie opzet met een door de aanvaller gecontroleerde mailserver, of dat de aanvaller de verbinding van de klant kan afluisteren (MITM of omleiding tijdens aanvallen via DNS of BGP).

Voor een aanval aan de serverzijde moet OpenSMTPD zijn geconfigureerd om externe netwerkverzoeken van andere mailservers te accepteren of externe services te bedienen die het mogelijk maken om een verzoek te sturen naar een willekeurig e-mailadres (bijvoorbeeld bevestigingsformulieren op websites). Een aanvaller kan verbinding maken met de OpenSMTPD-server en een ongeldige e-mail sturen (naar een niet-bestaande gebruiker), wat ertoe leidt dat een foutmelding (bounce) naar de server van de aanvaller wordt verzonden. De aanvaller kan de kwetsbaarheid exploiteren op het moment dat OpenSMTPD verbinding maakt om een melding aan de server van de aanvaller te leveren. De shellcommando's die tijdens de aanval worden ingevoegd, worden opgeslagen in een bestand dat met rootrechten wordt uitgevoerd bij het herstarten van OpenSMTPD, waardoor de aanvaller moet wachten op de herstart van OpenSMTPD of een crash van OpenSMTPD moet forceren.

Het probleem doet zich voor in de functie mta_io() in de code voor het parseren van meerregelige antwoorden die door de externe server worden teruggestuurd na het tot stand brengen van de verbinding (bijvoorbeeld "250-ENHANCEDSTATUSCODES" en "250 HELP"). In OpenSMTPD wordt verwacht dat de eerste regel een driecijferig getal en tekst bevat, gescheiden door het teken "-", en de tweede regel een driecijferig getal en tekst, gescheiden door een spatie. Als er na het driecijferige getal in de tweede regel geen spatie en tekst volgt, wordt de pointer die wordt gebruikt om de tekst te bepalen ingesteld op de byte na het teken '\0' en wordt geprobeerd de gegevens naar de buffer te kopiƫren die volgt op het einde van de regel.

Op verzoek van het OpenBSD-project is de publicatie van details over de exploitatie van de kwetsbaarheid uitgesteld tot 26 februari, om gebruikers de kans te geven hun systemen bij te werken. Het probleem is al sinds december 2015 in de codebasis aanwezig, maar exploitatie voor het uitvoeren van code met root-rechten is mogelijk sinds mei 2018. Onderzoekers hebben een werkend prototype van de exploit voorbereid, dat succesvol is getest in OpenSMTPD-builds voor OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testing) en Fedora 31.

In OpenSMTPD is er ook gedetecteerd een andere kwetsbaarheid (CVE-2020-8793) die een lokale gebruiker in staat stelt om de eerste regel van elk bestand in het systeem te lezen. Bijvoorbeeld, men kan de eerste regel van /etc/master.passwd lezen, waarin de wachtwoord-hash van de root-gebruiker is opgeslagen. De kwetsbaarheid staat ook toe om de volledige inhoud van een bestand te lezen dat toebehoort aan een andere gebruiker, als dat bestand zich in hetzelfde bestandssysteem bevindt als de map /var/spool/smtpd/. Het probleem is niet uit te buiten in veel Linux-distributies waarin de waarde van /proc/sys/fs/protected_hardlinks op 1 is ingesteld.

Het probleem is het gevolg van een onvolledige oplossing problemen, zoals aangegeven in het auditproces dat door Qualys in 2015 is uitgevoerd. Een aanvaller kan uitvoering van zijn code met de rechten van de groep "_smtpq" bereiken door de variabele "PATH=." in te stellen en een script met de naam makemap in de huidige map te plaatsen (de utiliteit smtpctl start makemap zonder een pad expliciet op te geven). Zodra de aanvaller toegang heeft gekregen tot de groep "_smtpq", kan hij een raceconditie veroorzaken (een groot bestand in de offline-map maken en het signaal SIGSTOP verzenden) en, voordat de verwerking is voltooid, het bestand in de offline-map vervangen door een harde symbolische link naar het doelbestand waarvan de inhoud moet worden gelezen.

Het is opmerkelijk dat in Fedora 31 een kwetsbaarheid direct toegang tot root-rechten mogelijk maakt, aangezien het proces smtpctl is uitgerust met de setgid root-vlag, in plaats van setgid smtpq. Met toegang tot de root-groep kan de inhoud van /var/lib/sss/mc/passwd worden overschreven en volledige root-toegang tot het systeem worden verkregen.

Bron: opennet.ru

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