Qualys bedrijf
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
Het probleem is een gevolg van onvolledige eliminatie
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