problem
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
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
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