opravy vydání s kritickou opravou (), 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 identifikována společností Qualys.
Problém v zpracování únikových znaků v řetězci ( 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í , 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 , , , a . RHEL a CentOS problému , protože Exim není zahrnut v jejich oficiálním balíčkovém repozitáři (v aktualizace , ale zatím v veřejném repozitáři). V kódu Exim se problém řeší jedním řádkem , 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
