Załatany Exim - załatamy ponownie. Świeże zdalne wykonanie poleceń w Exim 4.92 w jednym żądaniu

Załatany Exim - załatamy ponownie. Świeże zdalne wykonanie poleceń w Exim 4.92 w jednym żądaniu

Niedawno, wczesnym latem, szeroko rozpowszechniono wezwania do aktualizacji Exima do wersji 4.92 ze względu na lukę CVE-2019-10149 (Pilnie zaktualizuj Exima do wersji 4.92 - jest aktywna infekcja / Sudo Null IT News). Niedawno okazało się, że szkodliwe oprogramowanie Sustes postanowiło wykorzystać tę lukę.

Teraz wszyscy, którzy pilnie dokonali aktualizacji, mogą znów „radować się”: 21 lipca 2019 r. badacz Zerons odkrył krytyczną lukę w zabezpieczeniach Agent przesyłania poczty Exim (MTA) w przypadku korzystania z protokołu TLS dla wersji z 4.80 4.92.1 się włącznie, umożliwiając zdalne wykonaj kod z uprawnieniami uprzywilejowanymi (CVE-2019-15846).

Słaby punkt

Luka występuje podczas korzystania z bibliotek GnuTLS i OpenSSL podczas ustanawiania bezpiecznego połączenia TLS.

Według programisty Heiko Schlittermanna plik konfiguracyjny w Eximie domyślnie nie korzysta z TLS, ale wiele dystrybucji tworzy niezbędne certyfikaty podczas instalacji i umożliwia bezpieczne połączenie. Opcję instalują także nowsze wersje Exima tls_advertise_hosts=* i wygenerować niezbędne certyfikaty.

zależy od konfiguracji. Większość dystrybucji domyślnie to włącza, ale Exim potrzebuje certyfikatu + klucza, aby działać jako serwer TLS. Prawdopodobnie Distros tworzy certyfikat podczas instalacji. Nowsze Eximy mają domyślną opcję tls_advertise_hosts ustawioną na „*” i tworzą certyfikat z podpisem własnym, jeśli nie podano żadnego.

Sama luka polega na nieprawidłowym przetwarzaniu SNI (Server Name Indication, technologii wprowadzonej w 2003 roku w RFC 3546, aby klient mógł zażądać prawidłowego certyfikatu dla nazwy domeny, Dystrybucja standardu TLS SNI / Blog Grupy WEBO / Sudo Null IT News) podczas uzgadniania TLS. Osoba atakująca musi jedynie wysłać kod SNI kończący się ukośnikiem odwrotnym („”) i znakiem zerowym („”).

Badacze z Qualys odkryli błąd w funkcji string_printing(tls_in.sni), który polega na nieprawidłowej zmianie znaku „”. W rezultacie ukośnik odwrotny jest zapisywany bez zmiany znaczenia w pliku nagłówkowym bufora wydruku. Plik ten jest następnie odczytywany z uprawnieniami uprzywilejowanymi przez funkcję spool_read_header(), co prowadzi do przepełnienia sterty.

Warto zauważyć, że w tej chwili programiści Exima stworzyli PoC luk w zabezpieczeniach z wykonaniem poleceń na zdalnym podatnym serwerze, ale nie jest on jeszcze publicznie dostępny. Ze względu na łatwość wykorzystania błędu jest to tylko kwestia czasu i dość krótkie.

Bardziej szczegółowe badanie przeprowadzone przez Qualys można znaleźć tutaj.

Załatany Exim - załatamy ponownie. Świeże zdalne wykonanie poleceń w Exim 4.92 w jednym żądaniu

Używanie SNI w TLS

Liczba potencjalnie podatnych na ataki serwerów publicznych

Według statystyk dużego dostawcy usług hostingowych Firma E-Soft Inc od 1 września na wynajmowanych serwerach wersja 4.92 używana jest u ponad 70% hostów.

Wersja
Liczba serwerów
Procent

4.92.1
6471
1.28%

4.92
376436
74.22%

4.91
58179
11.47%

4.9
5732
1.13%

4.89
10700
2.11%

4.87
14177
2.80%

4.84
9937
1.96%

Inne wersje
25568
5.04%

Statystyki firmy E-Soft Inc

Jeśli korzystasz z wyszukiwarki Shodan, a następnie z 5,250,000 XNUMX XNUMX w bazie danych serwera:

  • około 3,500,000 4.92 1,380,000 używa Exima XNUMX (około XNUMX XNUMX XNUMX używa SSL/TLS);
  • ponad 74,000 4.92.1 przy użyciu wersji 25,000 (około XNUMX XNUMX przy użyciu protokołu SSL/TLS).

W związku z tym liczba publicznie znanych i dostępnych serwerów Exim, które są potencjalnie podatne na ataki, wynosi około 1.5 milionów.

Załatany Exim - załatamy ponownie. Świeże zdalne wykonanie poleceń w Exim 4.92 w jednym żądaniu

Wyszukaj serwery Exim w Shodan

ochrona

  • Najprostszą, ale niezalecaną opcją jest rezygnacja z protokołu TLS, co spowoduje, że wiadomości e-mail będą przekazywane w sposób jawny.
  • Aby uniknąć wykorzystania luki, lepiej byłoby zaktualizować ją do odpowiedniej wersji Exim Internet Mailer 4.92.2.
  • Jeśli nie jest możliwa aktualizacja lub instalacja poprawionej wersji, możesz ustawić listę ACL w konfiguracji Exima dla opcji acl_smtp_mail z następującymi zasadami:
    # to be prepended to your mail acl (the ACL referenced
    # by the acl_smtp_mail main config option)
    deny    condition = ${if eq{}{${substr{-1}{1}{$tls_in_sni}}}}
    deny    condition = ${if eq{}{${substr{-1}{1}{$tls_in_peerdn}}}}

Źródło: www.habr.com