Detaljer om kritisk sårbarhet i Exim avslørt

publisert korrigerende utgivelse Exim 4.92.2 med eliminering av kritiske sårbarheter (CVE-2019-15846), som i standardkonfigurasjonen kan føre til ekstern kjøring av kode av en angriper med root-privilegier. Problemet vises bare når TLS-støtte er aktivert og utnyttes ved å sende et spesialdesignet klientsertifikat eller endret verdi til SNI. Sårbarhet identifisert av Qualys.

problem tilstede i behandleren for å unnslippe spesialtegn i strengen (string_interpret_escape() fra string.c) og er forårsaket av at '\'-tegnet på slutten av strengen tolkes før null-tegnet ('\0') og unnslipper det. Ved escape blir sekvensen '\' og den følgende null-slutt-av-linje-koden behandlet som et enkelt tegn og pekeren flyttes til data utenfor linjen, som behandles som en fortsettelse av linjen.

Koden som kaller string_interpret_escape() tildeler en buffer for avløpet basert på den faktiske størrelsen, og den eksponerte pekeren ender opp i et område utenfor bufferens grenser. Følgelig, når man prøver å behandle en inngangsstreng, oppstår det en situasjon når man leser data fra et område utenfor grensene til den tildelte bufferen, og et forsøk på å skrive en uunngået streng kan føre til skriving utenfor bufferens grenser.

I standardkonfigurasjonen kan sårbarheten utnyttes ved å sende spesialdesignede data til SNI ved etablering av en sikker tilkobling til serveren. Problemet kan også utnyttes ved å endre peerdn-verdier i konfigurasjoner konfigurert for klientsertifikatautentisering eller ved import av sertifikater. Angrep via SNI og peerdn er mulig fra og med utgivelsen Exim 4.80, der funksjonen string_unprinting() ble brukt til å avskrive peerdn- og SNI-innholdet.

En utnyttelsesprototype er forberedt for et angrep via SNI, som kjører på i386- og amd64-arkitekturer på Linux-systemer med Glibc. Utnyttelsen bruker dataoverlegg på heapområdet, noe som resulterer i overskriving av minnet der loggfilnavnet er lagret. Filnavnet erstattes med "/../../../../../../../../etc/passwd". Deretter overskrives variabelen med avsenderens adresse, som først lagres i loggen, som lar deg legge til en ny bruker i systemet.

Pakkeoppdateringer med sårbarhetsrettinger utgitt av distribusjoner Debian, Ubuntu, Fedora, SUSE / openSUSE и FreeBSD. RHEL og CentOS-problem ikke mottakelig, siden Exim ikke er inkludert i deres vanlige pakkelager (i VARM обновление allerede dannet, men inntil videre ikke plassert til et offentlig depot). I Exim-kode løses problemet med en one-liner lapp, som deaktiverer escape-effekten til omvendt skråstrek hvis den er på slutten av linjen.

Som en løsning for å blokkere sårbarheten kan du deaktivere TLS-støtte eller legge til
ACL-delen "acl_smtp_mail":

deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

Kilde: opennet.ru

Legg til en kommentar