Закрпен Exim - закрпи повторно. Свежо извршување на далечинска команда во Exim 4.92 во едно барање

Закрпен Exim - закрпи повторно. Свежо извршување на далечинска команда во Exim 4.92 во едно барање

Неодамна, на почетокот на летото, имаше широко распространети повици Exim да се ажурира на верзијата 4.92 поради ранливоста CVE-2019-10149 (Итно ажурирајте го Exim на 4.92 - има активна инфекција / Sudo Null IT News). И неодамна се покажа дека малициозен софтвер Sustes одлучил да ја искористи оваа ранливост.

Сега сите оние кои итно ажурирале можат повторно да се „радуваат“: на 21 јули 2019 година, истражувачот Зеронс открил критична ранливост во Exim Mail Transfer Agent (MTA) кога користите TLS за верзии од 4.80 4.92.1 нагоре инклузивно, овозможувајќи далечински изврши код со привилегирани права (CVE-2019-15846).

Ранливост

Ранливоста е присутна кога се користат библиотеките GnuTLS и OpenSSL кога се воспоставува безбедна TLS врска.

Според програмерот Хеико Шлитерман, конфигурациската датотека во Exim стандардно не користи TLS, но многу дистрибуции ги создаваат потребните сертификати за време на инсталацијата и овозможуваат безбедна врска. Исто така, поновите верзии на Exim ја инсталираат опцијата tls_advertise_hosts=* и генерирајте ги потребните сертификати.

зависи од конфигурацијата. Повеќето дистрибуции го овозможуваат стандардно, но на Exim му треба сертификат+клуч за да работи како TLS сервер. Веројатно Distros создава Cert при поставувањето. Поновите Exim ја имаат опцијата tls_advertise_hosts стандардно на „*“ и создаваат самопотпишан сертификат, доколку не е обезбеден.

Самата ранливост лежи во неправилната обработка на SNI (Server Name Indication, технологија воведена во 2003 година во RFC 3546 за клиентот да побара точен сертификат за име на домен, Дистрибуција на стандардот TLS SNI / WEBO Group Blog / Sudo Null IT News) за време на TLS ракување. Напаѓачот треба само да испрати SNI што завршува со обратна коса црта ("") и нула знак (" ").

Истражувачите од Qualys открија грешка во функцијата string_printing(tls_in.sni), која вклучува неправилно бегство од „“. Како резултат на тоа, задна коса црта се запишува без бегство во датотеката за заглавие на макарата за печатење. Оваа датотека потоа се чита со привилегирани права од функцијата spool_read_header(), што доведува до прелевање на грамада.

Вреди да се напомене дека во моментот, програмерите на Exim создадоа PoC на пропусти со извршување на команди на оддалечен ранлив сервер, но тој сè уште не е јавно достапен. Поради леснотијата на експлоатација на бубачката, тоа е само прашање на време, и тоа прилично кратко.

Може да се најде подетална студија на Qualys тука.

Закрпен Exim - закрпи повторно. Свежо извршување на далечинска команда во Exim 4.92 во едно барање

Користење на SNI во TLS

Број на потенцијално ранливи јавни сервери

Според статистичките податоци од голем хостинг провајдер E-Soft Inc од 1 септември, на изнајмените сервери, верзијата 4.92 се користи во повеќе од 70% од хостовите.

верзија
Број на сервери
Проценти

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%

Други верзии
25568
5.04%

Статистика на компанијата E-Soft Inc

Ако користите пребарувач Шодан, потоа од 5,250,000 во базата на податоци на серверот:

  • околу 3,500,000 користат Exim 4.92 (околу 1,380,000 користат SSL/TLS);
  • над 74,000 користат 4.92.1 (околу 25,000 користат SSL/TLS).

Така, јавно познатите и достапни Ексим потенцијално ранливите сервери бројат околу 1.5M.

Закрпен Exim - закрпи повторно. Свежо извршување на далечинска команда во Exim 4.92 во едно барање

Пребарајте Exim сервери во Shodan

заштита

  • Наједноставната, но не се препорачува опција е да не се користи TLS, што ќе резултира со пораките на е-пошта да се препраќаат на чисто.
  • За да се избегне искористување на ранливоста, подобро би било да се ажурира на верзијата Exim Internet Mailer 4.92.2.
  • Ако е невозможно да се ажурира или инсталира закрпена верзија, можете да поставите ACL во конфигурацијата Exim за опцијата acl_smtp_mail со следните правила:
    # 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}}}}

Извор: www.habr.com