Sårbarheter i OpenSMTPD som tillåter fjärråtkomst och lokal root-åtkomst

Qualys Company avslöjat en annan kritisk sårbarhet (CVE-2020-8794) i e-postservern Öppna SMTPD, utvecklad av OpenBSD-projektet. Som den som identifierades i slutet av januari sårbarhet, gör ett nytt problem det möjligt att fjärrexekvera godtyckliga skalkommandon på en server med root-användarrättigheter. Sårbarhet utslagen i fråga OpenSMTPD 6.6.4p1.

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 identifieras En annan sårbarhet (CVE-2020-8793) som gör att en lokal användare kan läsa den första raden i vilken fil som helst på systemet. Till exempel kan du läsa den första raden i /etc/master.passwd, som innehåller root-användarens lösenords-hash. Sårbarheten låter dig också läsa hela innehållet i en fil som ägs av en annan användare om den här filen finns i samma filsystem som katalogen /var/spool/smtpd/. Problemet går inte att utnyttja på många Linux-distributioner där värdet för /proc/sys/fs/protected_hardlinks är satt till 1.

Problemet är en följd av ofullständig eliminering problem, uttryckte under revisionen som genomfördes av Qualys 2015. En angripare kan utföra exekvering av sin kod med rättigheterna för gruppen "_smtpq" genom att ställa in variabeln "PATH=." och placera ett skript som heter makemap i den aktuella katalogen (verktyget smtpctl kör makemap utan att explicit ange sökvägen). Genom att få åtkomst till gruppen "_smtpq" kan angriparen sedan orsaka ett rastillstånd (skapa en stor fil i offlinekatalogen och skicka en SIGSTOP-signal) och innan bearbetningen är klar, ersätta filen i offlinekatalogen med en hård symbollänk som pekar på målfilen vars innehåll måste läsas.

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

Lägg en kommentar