Qualys Company
Problemet orsakas av en bugg i koden som levererar e-post till fjärrpostservern (inte i koden som hanterar inkommande anslutningar). Attacken är möjlig både på klientsidan och på serversidan. På klientsidan är attacken möjlig i standardkonfigurationen för OpenSMTPD, där OpenSMTPD endast accepterar förfrågningar på det interna nätverksgränssnittet (localhost) och skickar e-postmeddelanden till externa servrar. För att utnyttja sårbarheten räcker det att OpenSMTPD under leveransen av ett brev etablerar en session med en e-postserver som kontrolleras av angriparen, eller att angriparen kan kila in i klientanslutningen (MITM eller omdirigering vid attacker via DNS eller BGP) ).
För en attack på serversidan måste OpenSMTPD konfigureras för att ta emot externa nätverksbegäranden från andra e-postservrar eller betjäna tredjepartstjänster som låter dig skicka en begäran till ett godtyckligt e-postmeddelande (till exempel adressbekräftelseformulär på webbplatser). Till exempel kan en angripare ansluta till OpenSMTPD-servern och skicka ett felaktigt brev (till en icke-existerande användare), vilket kommer att leda till att ett svar skickar ett brev med en felkod (studs) till angriparens server. En angripare kan utnyttja sårbarheten när OpenSMTPD ansluter för att skicka ett meddelande till angriparens server. Skalkommandona som injiceras under attacken placeras i en fil som körs med roträttigheter när OpenSMTPD startas om, så angriparen måste vänta på att OpenSMTPD ska starta om eller initiera en krasch av OpenSMTPD för att slutföra attacken.
Problemet finns i funktionen mta_io() i koden för att analysera flerradssvaret som returneras av fjärrservern efter att en anslutning har upprättats (till exempel "250-ENHANCEDSTATUSCODES" och "250 HELP"). OpenSMTPD beräknar att den första raden innehåller ett tresiffrigt nummer och text separerade med ett "-" tecken, och den andra raden innehåller ett tresiffrigt tal och text separerade med ett mellanslag. Om ett tresiffrigt nummer inte följs av ett mellanslag och text på den andra raden, sätts pekaren som används för att definiera texten till byten efter '\0'-tecknet och ett försök görs att kopiera data efter slutet av linjen in i bufferten.
På begäran av OpenBSD-projektet har publiceringen av detaljer om utnyttjandet av sårbarheten fördröjts till den 26 februari för att tillåta användare att uppdatera sina system. Problemet har funnits i kodbasen sedan december 2015, men exploatering före kodexekvering med root-privilegier har varit möjligt sedan maj 2018. Forskarna förberedde en fungerande prototyp av exploateringen, som framgångsrikt testades i OpenSMTPD-byggen för OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testning) och Fedora 31.
Även i OpenSMTPD
Problemet är en följd av ofullständig eliminering
Det är anmärkningsvärt att i Fedora 31 tillåter sårbarheten dig att omedelbart få privilegierna för rotgruppen, eftersom smtpctl-processen är utrustad med setgid-rotflaggan, istället för setgid smtpq-flaggan. Genom att få tillgång till rotgruppen kan du skriva över innehållet i /var/lib/sss/mc/passwd och få full root-åtkomst till systemet.
Källa: opennet.ru