problém
Kód volající string_interpret_escape() alokuje vyrovnávací paměť pro odčerpávání na základě skutečné velikosti a vystavený ukazatel skončí v oblasti mimo hranice vyrovnávací paměti. V souladu s tím při pokusu o zpracování vstupního řetězce nastává situace při čtení dat z oblasti mimo hranice přidělené vyrovnávací paměti a pokus o zápis neupraveného řetězce může vést k zápisu za hranice vyrovnávací paměti.
Ve výchozí konfiguraci lze tuto chybu zabezpečení zneužít odesláním speciálně navržených dat do SNI při navazování zabezpečeného připojení k serveru. Problém lze také zneužít úpravou hodnot peerdn v konfiguracích nakonfigurovaných pro ověřování klientského certifikátu nebo při importu certifikátů. Útok přes SNI a peerdn je možný počínaje uvolněním
Byl připraven exploit prototyp pro útok přes SNI běžící na architekturách i386 a amd64 na systémech Linux s Glibc. Exploit využívá překrytí dat v oblasti haldy, což vede k přepsání paměti, ve které je uložen název souboru protokolu. Název souboru je nahrazen „/../../../../../../../../etc/passwd“. Dále se přepíše proměnná s adresou odesílatele, která se nejprve uloží do logu, což umožňuje přidat nového uživatele do systému.
Aktualizace balíčků s opravami zranitelnosti vydanými distribucemi
Jako řešení k zablokování této chyby zabezpečení můžete zakázat podporu TLS nebo přidat
Sekce ACL „acl_smtp_mail“:
podmínka odmítnutí = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
podmínka odmítnutí = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}
Zdroj: opennet.ru