Razkrite podrobnosti kritične ranljivosti v Eximu

Objavljeno popravljalni izpust Izgled 4.92.2 z odpravo kritičnih ranljivosti (CVE-2019-15846), kar lahko v privzeti konfiguraciji povzroči oddaljeno izvajanje kode s strani napadalca s korenskimi pravicami. Težava se pojavi le, ko je omogočena podpora za TLS in se izkoristi s posredovanjem posebej izdelanega potrdila odjemalca ali spremenjene vrednosti SNI. Ranljivost ugotovljeno avtor Qualys.

problem prisoten v obdelovalniku za ubežanje posebnih znakov v nizu (string_interpret_escape() iz niza.c) in nastane zaradi znaka '\' na koncu niza, ki se interpretira pred ničelnim znakom ('\0') in mu uide. Pri ubežnem prikazu se zaporedje '\' in naslednja ničelna koda konca vrstice obravnavata kot en znak, kazalec pa se premakne na podatke zunaj vrstice, ki se obravnavajo kot nadaljevanje vrstice.

Koda, ki kliče string_interpret_escape(), dodeli vmesni pomnilnik za odtok na podlagi dejanske velikosti, izpostavljeni kazalec pa konča v območju izven meja vmesnega pomnilnika. Skladno s tem se pri poskusu obdelave vhodnega niza pojavi situacija pri branju podatkov iz območja zunaj meja dodeljenega vmesnega pomnilnika in poskus zapisovanja neubežnega niza lahko vodi do pisanja prek meja vmesnega pomnilnika.

V privzeti konfiguraciji je ranljivost mogoče izkoristiti s pošiljanjem posebej oblikovanih podatkov SNI pri vzpostavljanju varne povezave s strežnikom. Težavo je mogoče izkoristiti tudi s spreminjanjem vrednosti peerdn v konfiguracijah, konfiguriranih za preverjanje pristnosti potrdila odjemalca, ali pri uvozu potrdil. Napad prek SNI in peerdn je možen od izdaje Izgled 4.80, v katerem je bila funkcija string_unprinting() uporabljena za odpis vsebine peerdn in SNI.

Pripravljen je bil prototip izkoriščanja za napad prek SNI, ki deluje na arhitekturah i386 in amd64 v sistemih Linux z Glibc. Izkoriščanje uporablja prekrivanje podatkov na območju kopice, kar povzroči prepisovanje pomnilnika, v katerem je shranjeno ime datoteke dnevnika. Ime datoteke se nadomesti z "/../../../../../../../../etc/passwd". Nato se prepiše spremenljivka z naslovom pošiljatelja, ki se najprej shrani v dnevnik, kar omogoča dodajanje novega uporabnika v sistem.

Posodobitve paketov s popravki ranljivosti, ki jih izdajo distribucije Debian, Ubuntu, Fedora, SUSE/openSUSE и FreeBSD. Težava z RHEL in CentOS ni dovzeten, ker Exim ni vključen v njihovo običajno skladišče paketov (v EPEL обновление že oblikovana, ampak za zdaj ni postavljen v javno skladišče). V kodi Exim je težava odpravljena z eno vrstico obliž, ki onemogoči ubežni učinek poševnice nazaj, če je na koncu vrstice.

Kot rešitev za blokiranje ranljivosti lahko onemogočite podporo za TLS ali dodate
Razdelek ACL »acl_smtp_mail«:

zavrni pogoj = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
zavrni pogoj = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

Vir: opennet.ru

Dodaj komentar