rettende udgave med rettelse af den kritiske (), som i standardkonfigurationen kan føre til fjernudførelse af kode af en angriber med root-rettigheder. Problemet opstår kun, når TLS-support er aktiveret, og udnyttes gennem transmission af et specielt formateret klientcertifikat eller et ændret SNI-værdi. Sårbarheden blev opdaget af Qualys.
Problemet i behandlingen af escape-tegn i strengen ( i string.c) og skyldes, at tegnet ‘\’ i slutningen af strengen fortolkes før nul-tegnet (‘\0’) og dermed escape det. Når der escapes behandles sekvensen ‘\’ og det efterfølgende nul-tegn som ét symbol, og pointeren flyttes til data uden for strengen, hvilket betragtes som dens fortsættelse.
Koden, der kalder string_interpret_escape(), allokerer en buffer til strømmene baseret på den faktiske størrelse, og den angivne pointer placeres uden for bufferens grænser. Følgelig opstår der en situation ved behandling af indgangsstrengen, hvor der læses data uden for den tildelte buffer, og et forsøg på at skrive den dekodede streng kan føre til skrivning uden for bufferens grænser.
I standardkonfigurationen kan sårbarheden udnyttes ved at sende specielt formaterede data til SNI, når der oprettes en sikker forbindelse til serveren. Problemet kan også udnyttes gennem ændringer af peerdn-værdier i konfigurationer, der er indstillet til autentificering med klientcertifikat, eller ved import af certifikater. Angreb gennem SNI og peerdn er mulige fra og med udgivelsen , hvor funktionen string_unprinting() blev anvendt til at dekode indholdet af peerdn og SNI.
Til angreb gennem SNI er der udviklet en prototype af et exploit, der kører på i386 og amd64-arkitekturer i Linux-systemer med Glibc. Exploiteten anvender dataoverlap på heap-området, hvilket medfører overskrivning af hukommelsen, hvor logfilens navn opbevares. Logfilens navn bliver erstattet med ‘/..//..//..//..//..//..//..//..//etc//passwd’. Derefter overskrives variablen med adressen på afsenderen, der først gemmes i loggen, hvilket muliggør at tilføje en ny bruger til systemet.
Opdateringer af pakker med sikkerhedsfejl er blevet udgivet af distributionerne , , , og . RHEL og CentOS er ikke ramt af problemet , da Exim ikke er en del af deres officielle pakke-repository (i opdatering , men indtil videre i det offentlige repository). Problemet i Exim løses med en en-linjers , der deaktiverer escape-funktionen for baglæns skråstreg, hvis den er placeret i slutningen af linjen.
Som en løsning til at blokere sårbarheden kan man deaktivere TLS-understøttelse eller tilføje til
ACL-sektionen «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
