ProHoster > блог > адміністраванне > Прапатчыў Exim – прапапатч яшчэ раз. Свежае Remote Command Execution у Exim 4.92 у адзін запыт
Прапатчыў Exim – прапапатч яшчэ раз. Свежае Remote Command Execution у Exim 4.92 у адзін запыт
Зусім нядаўна, у пачатку лета, з'явіліся масавыя заклікі да абнаўлення Exim да версіі 4.92 з-за ўразлівасці CVE-2019-10149 (Тэрмінова абнаўляйце exim да 4.92 - ідзе актыўнае заражэнне / Хабр). А на днях высветлілася, што шкоднас Sustes вырашыў скарыстацца гэтай уразлівасцю.
Цяпер усе экстрана абнавіліся могуць зноў «парадавацца»: 21 ліпеня 2019 г. даследчык Zerons выявіў крытычную ўразлівасць у Exim Mail Transfer agent (MTA) пры выкарыстанні TLS для версій ад 4.80 да 4.92.1 уключна, якая дазваляе выдалена выконваць код з прывілеяванымі правамі (CVE-2019-15846).
ўразлівасць
Уразлівасць прысутнічае пры выкарыстанні бібліятэк як GnuTLS, так і OpenSSL пры ўсталёўцы абароненага TLS-злучэнні.
Па словах распрацоўніка Heiko Schlittermann, файл канфігурацыі ў Exim па змаўчанні не выкарыстоўвае TLS, аднак шматлікія дыстрыбутывы падчас усталёўкі ствараюць неабходныя сертыфікаты і ўключаюць абароненае злучэнне. Таксама навейшыя версіі Exim усталёўваюць опцыю tls_advertise_hosts=* і генеруюць неабходныя сертыфікаты.
depends on the configuration. Найбольш бяспечна, што можа быць памылкова, але Exim неабходна certifikovat+key для працы як TLS-сервер. Probably Distros стварае Cert during setup. Newer Exims мае tls_advertise_hosts option defaulting to «*» і стварае выпадкова зацверджаны certificate, калі не з'яўляецца выкананым.
Сама ж уразлівасць складаецца ў некарэктнай апрацоўцы SNI (Server Name Indication, тэхналогія, уведзеная ў 2003 у RFC 3546 для запыту кліентам карэктнага сертыфіката для даменнага імя, Распаўсюджванне стандарту TLS SNI / Блог кампаніі WEBO Group / Хабр) у ходзе TLS-поціску рукі. Зламысніку дастаткова адправіць SNI, які сканчаецца бэкслешам ("") і нул-знакам (" ").
Даследнікі з кампаніі Qualys выявілі баг у функцыі string_printing(tls_in.sni), які складаецца ў некарэктным экранаванні "". У выніку адбываецца запіс зваротнага слеша ў неэкранаваным выглядзе ў файл загалоўкаў print spool. Далей гэты файл з прывілеяванымі правамі счытваецца функцыяй spool_read_header(), што вядзе да перапаўнення кучы (heap overflow).
Варта адзначыць, што на дадзены момант распрацоўнікі Exim стварылі PoC уразлівасці з выкананнем каманд на выдаленым уразлівым серверы, але ў публічным доступе ён пакуль адсутнічае. У сілу прастаты эксплуатацыі бага гэта ўсяго толькі пытанне часу, прычым даволі кароткага.
З больш дэталёвым даследаваннем кампаніі Qualys можна азнаёміцца тут.
Выкарыстанне 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
Калі звярнуцца да пошукавай сістэмы Shodan, то з 5,250,000 у базе сервераў:
каля 3,500,000 выкарыстоўваюць Exim 4.92 (каля 1,380,000 з выкарыстаннем SSL/TLS);
больш за 74,000 выкарыстоўваюць 4.92.1 (каля 25,000 з выкарыстаннем SSL/TLS).
Такім чынам, публічна вядомых і даступных Exim патэнцыйна ўразлівых сервераў налічваецца парадку 1.5 млн.
Пошук 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}}}}