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