Qualys Company
Problemet er forårsaket av en feil i koden som leverer e-post til den eksterne e-postserveren (ikke i koden som håndterer innkommende tilkoblinger). Angrepet er mulig både på klientsiden og på serversiden. På klientsiden er angrepet mulig i standardkonfigurasjonen til OpenSMTPD, der OpenSMTPD aksepterer forespørsler kun på det interne nettverksgrensesnittet (localhost) og sender e-postmeldinger til eksterne servere. For å utnytte sårbarheten er det nok at OpenSMTPD under levering av et brev etablerer en økt med en e-postserver kontrollert av angriperen, eller at angriperen kan kile seg inn i klientforbindelsen (MITM eller omdirigering under angrep via DNS eller BGP ).
For et angrep på serversiden må OpenSMTPD konfigureres til å motta eksterne nettverksforespørsler fra andre e-postservere eller betjene tredjepartstjenester som lar deg sende en forespørsel til en vilkårlig e-post (for eksempel adressebekreftelsesskjemaer på nettsteder). En angriper kan for eksempel koble seg til OpenSMTPD-serveren og sende et feil brev (til en ikke-eksisterende bruker), noe som vil føre til at et svar sender et brev med en feilkode (sprett) til angriperens server. En angriper kan utnytte sårbarheten når OpenSMTPD kobler til for å levere et varsel til angriperens server. Skallkommandoene som injiseres under angrepet plasseres i en fil som kjøres med rotrettigheter når OpenSMTPD startes på nytt, så angriperen må vente på at OpenSMTPD starter på nytt eller starte et krasj av OpenSMTPD for å fullføre angrepet.
Problemet er tilstede i mta_io()-funksjonen i koden for å analysere flerlinjesvaret som returneres av den eksterne serveren etter at en tilkobling er opprettet (for eksempel "250-ENHANCEDSTATUSCODES" og "250 HELP"). OpenSMTPD beregner at den første linjen inneholder et tresifret tall og tekst atskilt med et "-" tegn, og den andre linjen inneholder et tresifret tall og tekst atskilt med et mellomrom. Hvis et tresifret tall ikke etterfølges av et mellomrom og tekst på den andre linjen, settes pekeren som brukes til å definere teksten til byten etter '\0'-tegnet, og det gjøres et forsøk på å kopiere dataene etter slutten av linjen inn i bufferen.
På forespørsel fra OpenBSD-prosjektet har publiseringen av detaljer om utnyttelsen av sårbarheten blitt forsinket til 26. februar for å tillate brukere å oppdatere systemene sine. Problemet har vært tilstede i kodebasen siden desember 2015, men utnyttelse før kodekjøring med root-privilegier har vært mulig siden mai 2018. Forskerne utarbeidet en fungerende prototype av utnyttelsen, som ble vellykket testet i OpenSMTPD-bygg for OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testing) og Fedora 31.
Også i OpenSMTPD
Problemet er en konsekvens av ufullstendig eliminering
Det er bemerkelsesverdig at i Fedora 31 lar sårbarheten deg umiddelbart få rettighetene til rotgruppen, siden smtpctl-prosessen er utstyrt med setgid-rotflagget, i stedet for setgid smtpq-flagget. Ved å få tilgang til rotgruppen kan du overskrive innholdet i /var/lib/sss/mc/passwd og få full rottilgang til systemet.
Kilde: opennet.ru