Detaljer om kritisk sårbarhet i Exim avslöjas

publiceras korrigerande frigivning Exim 4.92.2 med eliminering av kritiska sårbarheter (CVE-2019-15846), vilket i standardkonfigurationen kan leda till fjärrkörning av kod av en angripare med root-privilegier. Problemet uppstår bara när TLS-stöd är aktiverat och utnyttjas genom att skicka ett specialdesignat klientcertifikat eller modifierat värde till SNI. Sårbarhet identifieras av Qualys.

problem närvarande i hanteraren för att undvika specialtecken i strängen (string_interpret_escape() från string.c) och orsakas av att tecknet '\' i slutet av strängen tolkas före nolltecknet ('\0') och escaper det. Vid escape behandlas sekvensen '\' och följande null-radslutskod som ett enda tecken och pekaren flyttas till data utanför raden, vilket behandlas som en fortsättning på raden.

Koden som anropar string_interpret_escape() allokerar en buffert för avloppet baserat på den faktiska storleken, och den exponerade pekaren hamnar i ett område utanför buffertens gränser. Följaktligen, när man försöker bearbeta en inmatningssträng, uppstår en situation när man läser data från ett område utanför gränserna för den allokerade bufferten, och ett försök att skriva en icke-escaped sträng kan leda till skrivning utanför buffertens gränser.

I standardkonfigurationen kan sårbarheten utnyttjas genom att skicka specialdesignad data till SNI när en säker anslutning till servern upprättas. Problemet kan också utnyttjas genom att ändra peerdn-värden i konfigurationer konfigurerade för klientcertifikatautentisering eller vid import av certifikat. Attack via SNI och peerdn är möjlig från och med release Exim 4.80, där funktionen string_unprinting() användes för att skriva ut peerdn- och SNI-innehållet.

En exploateringsprototyp har förberetts för en attack via SNI, som körs på i386- och amd64-arkitekturerna på Linux-system med Glibc. Exploateringen använder dataöverlagring på heapområdet, vilket resulterar i att minnet där loggfilens namn är lagrat skrivs över. Filnamnet ersätts med "/../../../../../../../../etc/passwd". Därefter skrivs variabeln med avsändarens adress över, som först sparas i loggen, vilket gör att du kan lägga till en ny användare i systemet.

Paketuppdateringar med sårbarhetskorrigeringar släppta av distributioner Debian, ubuntu, fedora, SUSE/openSUSE и FreeBSD. RHEL och CentOS problem inte mottaglig, eftersom Exim inte ingår i deras vanliga paketförråd (i EPEL обновление redan bildas, men för nu inte placerad till ett offentligt förvar). I Exim-kod åtgärdas problemet med en one-liner lappa, vilket inaktiverar escape-effekten av backslash om det är i slutet av raden.

Som en lösning för att blockera sårbarheten kan du inaktivera TLS-stöd eller lägga till
ACL-avsnittet "acl_smtp_mail":

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

Källa: opennet.ru

Lägg en kommentar