Sårbarheter i OpenSMTPD som tillater ekstern og lokal rottilgang

Qualys Company avslørt en annen kritisk sårbarhet (CVE-2020-8794) i e-postserveren Åpne SMTPD, utviklet av OpenBSD-prosjektet. Som den som ble identifisert i slutten av januar sårbarhet, gjør et nytt problem det mulig å eksternt utføre vilkårlige shell-kommandoer på en server med root-brukerrettigheter. Sårbarhet eliminert i saken OpenSMTPD 6.6.4p1.

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 identifisert En annen sårbarhet (CVE-2020-8793) som lar en lokal bruker lese den første linjen i en hvilken som helst fil på systemet. For eksempel kan du lese den første linjen i /etc/master.passwd, som inneholder root-brukerens passordhash. Sårbarheten lar deg også lese hele innholdet i en fil som eies av en annen bruker hvis denne filen ligger i samme filsystem som katalogen /var/spool/smtpd/. Problemet kan ikke utnyttes på mange Linux-distribusjoner der verdien av /proc/sys/fs/protected_hardlinks er satt til 1.

Problemet er en konsekvens av ufullstendig eliminering problemer, uttrykt under revisjonen utført av Qualys i 2015. En angriper kan oppnå kjøring av koden sin med rettighetene til "_smtpq"-gruppen ved å sette "PATH=."-variabelen. og plassere et skript kalt makemap i gjeldende katalog (smtpctl-verktøyet kjører makemap uten å spesifisere banen eksplisitt). Ved å få tilgang til "_smtpq"-gruppen, kan angriperen deretter forårsake en rasetilstand (opprette en stor fil i offline-katalogen og sende et SIGSTOP-signal) og, før behandlingen er fullført, erstatte filen i offline-katalogen med en hard symbolkobling som peker til målfilen hvis innhold må leses.

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

Legg til en kommentar