Ilmnes Exim kriitiline haavatavus

avaldatud korrigeeriv vabastamine Eksim 4.92.2 kriitiliste kõrvaldamisega haavatavused (CVE-2019-15846), mis vaikekonfiguratsioonis võib viia koodi kaugkäitamiseni juurõigustega ründaja poolt. Probleem ilmneb ainult siis, kui TLS-i tugi on lubatud ja seda kasutatakse SNI-le spetsiaalselt loodud kliendisertifikaadi või muudetud väärtuse edastamisega. Haavatavus tuvastatud autor Qualys.

probleem kohal töötlejas stringi erimärkide vältimiseks (string_interpret_escape() string.c) ja selle põhjustab stringi lõpus olev märk '\', mida tõlgendatakse enne nullmärki ('\0') ja põgeneb sellest. Põgenemisel käsitletakse jada '\' ja sellele järgnevat null-realõpu koodi ühe märgina ja kursor nihutatakse rea välistele andmetele, mida käsitletakse rea jätkuna.

String_interpret_escape() kutsuv kood eraldab äravoolu jaoks puhvri tegeliku suuruse alusel ja paljastatud osuti jõuab puhvri piiridest väljapoole jäävasse piirkonda. Vastavalt sellele tekib sisendstringi töödelda püüdes olukord, kus andmeid loetakse eraldatud puhvri piiridest väljapoole jäävast piirkonnast ning katse kirjutada paokoodeta string võib viia kirjutamiseni väljapoole puhvri piire.

Vaikekonfiguratsioonis saab haavatavust ära kasutada, saates serveriga turvalise ühenduse loomisel SNI-le spetsiaalselt loodud andmed. Probleemi saab ära kasutada ka peerdn väärtuste muutmisega kliendi sertifikaadi autentimiseks konfigureeritud konfiguratsioonides või sertifikaatide importimisel. Rünnak SNI ja peerdn-i kaudu on võimalik alates vabastamisest Eksim 4.80, milles peerdn-i ja SNI-sisu printimise tühistamiseks kasutati funktsiooni string_unprinting().

SNI kaudu rünnaku jaoks on ette valmistatud ärakasutamise prototüüp, mis töötab i386 ja amd64 arhitektuuridel Glibc-ga Linuxi süsteemides. Exploit kasutab hunnikualal andmekatet, mille tulemusel kirjutatakse üle mälu, kuhu logifaili nimi on salvestatud. Faili nimi asendatakse "/../../../../../../../../etc/passwd". Järgmisena kirjutatakse üle saatja aadressiga muutuja, mis esmalt salvestatakse logisse, mis võimaldab lisada süsteemi uue kasutaja.

Distributsioonide välja antud haavatavuse parandustega paketivärskendused Debian, Ubuntu, Fedora, SUSE/openSUSE и FreeBSD. RHELi ja CentOS-i probleem ei ole vastuvõtlikud, kuna Exim ei sisaldu nende tavapärases pakettide hoidlas (in SOE обновление juba moodustatud, aga praegu pole paigutatud avalikku hoidlasse). Exim koodis lahendatakse probleem ühe kihiga plaaster, mis keelab kaldkriipsu paoefekti, kui see on rea lõpus.

Haavatavuse blokeerimiseks saate TLS-i toe keelata või lisada
ACL-i jaotis "acl_smtp_mail":

keela tingimus = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
keelamise tingimus = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

Allikas: opennet.ru

Lisa kommentaar