Byly zveřejněny podrobnosti o kritické zranitelnosti v Exim

Byl zveřejněn opravy vydání Exim 4.92.2 s kritickou opravou zranitelnosti (CVE-2019-15846), která v základní konfiguraci může vést k vzdálenému vykonání kódu útočníka s právy roota. Problém se projevuje pouze při aktivaci podpory TLS a je zneužíván prostřednictvím přenosu speciálně vytvořeného klientského certifikátu nebo modifikované hodnoty v SNI. Zranitelnost byla odhalena byla identifikována společností Qualys.

Problém je přítomno v zpracování únikových znaků v řetězci (string_interpret_escape() z string.c) a je způsobena tím, že znak ‘\’ na konci řetězce je interpretován před nulovým znakem (‘\0’) a uniká před ním. Při úniku je sekvence ‘\’ a následující nulový znak zpracováván jako jeden znak a ukazatel se posune na data mimo hranice řetězce, která jsou zpracována jako jeho pokračování.

Kód, který vyvolává string_interpret_escape(), přiděluje buffer pro vstup, vycházejíc z aktuální velikosti, a posunutý ukazatel se ocitá v oblasti mimo hranice bufferu. V důsledku toho, při pokusu o zpracování vstupního řetězce vzniká situace čtení dat z oblasti mimo vymezený buffer, a pokus o zápis neuniklého řetězce může vést k přepsání za hranice bufferu.

Ve výchozí konfiguraci může být zranitelnost zneužita prostřednictvím přenosu speciálně upravených dat v SNI při navazování zabezpečeného spojení se serverem. Problém může být také zneužit modifikací hodnot peerdn v konfiguracích nastavených pro ověřování pomocí certifikátu klienta, nebo při importu certifikátů. Útok prostřednictvím SNI a peerdn je možný od vydání Exim 4.80, ve kterém byla funkce string_unprinting() použita pro deescapování obsahu peerdn a SNI.

Pro útok prostřednictvím SNI byl připraven prototyp exploitu, který funguje na architekturách i386 a amd64 v systémech Linux s Glibc. V exploitu se využívá překrývání údajů v oblasti zásobníku, což vede k přepsání paměti, kde je uloženo jméno souboru logu. Jméno souboru je změněno na „/../../../../../../../../../../../../etc/passwd“. Pak je přepsána proměnná s adresou odesílatele, která je první uložena v logu, což umožňuje přidat nového uživatele do systému.

Aktualizace balíčků s opravou zranitelnosti byla vydána distribucemi Debian, Ubuntu, Fedora, SUSE/openSUSE a FreeBSD. RHEL a CentOS problému vystavený, protože Exim není zahrnut v jejich oficiálním balíčkovém repozitáři (v EPEL aktualizace již vytvořeno, ale zatím není umístěno v veřejném repozitáři). V kódu Exim se problém řeší jedním řádkem patchem, který vypíná escapovací efekt zpětného lomítka, pokud je na konci řádku.

Jako obcházení pro zablokování zranitelnosti lze vypnout podporu TLS nebo přidat do
sekce ACL „acl_smtp_mail“:

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

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster