Exim kritisk sårbarhed afsløret

offentliggjort korrigerende frigivelse Exim 4.92.2 med eliminering af kritiske sårbarheder (CVE-2019-15846), som i standardkonfigurationen kan føre til fjernudførelse af kode af en angriber med root-rettigheder. Problemet opstår kun, når TLS-understøttelse er aktiveret og udnyttes ved at sende et specielt designet klientcertifikat eller ændret værdi til SNI. Sårbarhed identificeret af Qualys.

problem er til stede i handleren for at undslippe specialtegn i strengen (string_interpret_escape() fra string.c) og er forårsaget af, at '\'-tegnet i slutningen af ​​strengen fortolkes før nul-tegnet ('\0') og undlader det. Ved escape behandles sekvensen '\' og den følgende null end-of-line kode som et enkelt tegn, og markøren flyttes til data uden for linjen, som behandles som en fortsættelse af linjen.

Koden, der kalder string_interpret_escape() allokerer en buffer til drænet baseret på den faktiske størrelse, og den eksponerede pointer ender i et område uden for bufferens grænser. Følgelig, når man forsøger at behandle en inputstreng, opstår der en situation, når man læser data fra et område uden for grænserne af den allokerede buffer, og et forsøg på at skrive en unescaped streng kan føre til skrivning ud over bufferens grænser.

I standardkonfigurationen kan sårbarheden udnyttes ved at sende specialdesignede data til SNI, når der etableres en sikker forbindelse til serveren. Problemet kan også udnyttes ved at ændre peerdn-værdier i konfigurationer konfigureret til klientcertifikatgodkendelse eller ved import af certifikater. Angreb via SNI og peerdn er muligt fra udgivelsen Exim 4.80, hvor funktionen string_unprinting() blev brugt til at fjerne peerdn- og SNI-indholdet.

En exploit-prototype er blevet forberedt til et angreb via SNI, der kører på i386- og amd64-arkitekturer på Linux-systemer med Glibc. Udnyttelsen bruger dataoverlejring på heapområdet, hvilket resulterer i overskrivning af den hukommelse, hvori logfilnavnet er gemt. Filnavnet erstattes med "/../../../../../../../../etc/passwd". Dernæst overskrives variablen med afsenderens adresse, som først gemmes i loggen, som giver dig mulighed for at tilføje en ny bruger til systemet.

Pakkeopdateringer med sårbarhedsrettelser udgivet af distributioner Debian, Ubuntu, Fedora, SUSE/openSUSE и FreeBSD. RHEL og CentOS problem ikke modtagelige, da Exim ikke er inkluderet i deres almindelige pakkelager (i VARM обновление allerede dannet, men for nu ikke placeret til et offentligt depot). I Exim kode løses problemet med en one-liner lappe, som deaktiverer escape-effekten af ​​omvendt skråstreg, hvis den er i slutningen af ​​linjen.

Som en løsning til at blokere sårbarheden kan du deaktivere TLS-understøttelse eller tilføje
ACL sektion "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

Tilføj en kommentar