Раскрытыя падрабязнасці крытычнай уразлівасці ў Exim

Апублікаваны які карэктуе выпуск Exim 4.92.2 з ухіленнем крытычнай уразлівасці (CVE-2019-15846), якая ў канфігурацыі па змаўчанні можа прывесці да выдаленага выканання кода зламысніка з правамі root. Праблема праяўляецца толькі пры ўключэнні падтрымкі TLS і эксплуатуецца праз перадачу спецыяльна аформленага кліенцкага сертыфіката або мадыфікаванага значэння ў SNI. Уразлівасць выяўлена кампаніяй Qualys.

праблема прысутнічае у апрацоўшчыку экранавання спецзнакаў у радку (string_interpret_escape() з string.c) і выкліканая тым, што знак '\' у канцы радка інтэрпрэтуецца перад нулявым сімвалам ('\0') і экрануе яго. Пры экранаванні паслядоўнасць '\' і наступны далей нулявы код канца радка апрацоўваецца як адзін знак і паказальнік зрушваецца на дадзеныя за межамі радка, якія апрацоўваюцца як яе працяг.

Код, які выклікае string_interpret_escape(), вылучае буфер пад сцёку, кіруючыся фактычным памерам, і выстаўлены паказальнік апыняецца ў вобласці па-за межамі буфера. Адпаведна, пры спробе апрацоўкі ўваходнага радка ўзнікае сітуацыя чытання дадзеных з вобласці па-за межамі вылучанага буфера, а спроба запісу разэкранаванага радка можа прывесці да запісу за межы буфера.

У канфігурацыі па змаўчанні ўразлівасць можа быць эксплуатаваная праз перадачу адмыслова аформленых дадзеных у SNI пры ўсталёўцы абароненага злучэння да сервера. Праблема таксама можа быць эксаплуатаваная праз мадыфікацыю значэнняў peerdn у канфігурацыях, настроеных для аўтэнтыфікацыі па сертыфікаце кліента, або пры імпарце сертыфікатаў. Атака праз SNI і peerdn магчыма пачынаючы з выпуску Exim 4.80, у якім функцыя string_unprinting() была прыменена для расэкранавання змесціва peerdn і SNI.

Для нападу праз SNI падрыхтаваны прататып эксплоіта, які працуе на архітэктурах i386 і amd64 у Linux-сістэмах з Glibc. У эксплоіце выкарыстоўваецца накладанне дадзеных на вобласць кучы, якое прыводзіць да перазапісу памяці, у якой захоўваецца імя файла лога. Імя файла замяняецца на "/../../../../../../../../etc/passwd". Далей перазапісваецца зменная з адрасам адпраўніка, які першым захоўваецца ў лог, што дазваляе дадаць новага карыстача ў сістэму.

Абнаўленні пакетаў з ухіленнем уразлівасці выпушчана дыстрыбутывамі Debian, Ubuntu, Мяккая фетравы капялюш, SUSE/openSUSE и FreeBSD. RHEL і CentOS праблеме не схільныя, так як Exim не ўваходзіць у іх штатны рэпазітар пакетаў (у ЭПЕЛ абнаўленне ўжо сфарміравана, але пакуль не змешчана у публічны рэпазітар). У кодзе Exim праблема ўхіляецца аднарадковым патчам, які адключае экранавальнае дзеянне зваротнага слэша, калі ён знаходзіцца ў канцы радка.

У якасці абыходнага шляху для блакавання ўразлівасці можна адключыць падтрымку TLS ці дадаць у
секцыю ACL "acl_smtp_mail":

deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

Крыніца: opennet.ru

Дадаць каментар