Eximi posti server kriitiline (), mis vÔib viia koodi kaugse tÀitmiseni serveris root Ôigustes spetsiaalselt vormindatud pÀringu töötlemisel. Probleemi Àrakasutamise vÔimalust on mÀrgitud versioonides 4.87 kuni 4.91, sealhulgas vÔi versioonide kogumisel EXPERIMENTAL_EVENT vÔimalusega.
Vaikimisi konfiguratsioonis vĂ”ib rĂŒnnak toimuda ilma suuremate raskusteta kohalikul kasutajal, kuna kasutatakse ACL 'verify = recipient', mis viib lĂ€bi tĂ€iendavaid kontrollimist vĂ€liste aadresside jaoks. KaugrĂŒnnaku teostamine on vĂ”imalik seadete muutmise korral, nĂ€iteks töö kĂ€igus teise domeeni sekundaarse MX-na, ACL 'verify = recipient' eemaldamise vĂ”i teatud muudatuste korral local_part_suffix). KaugrĂŒnnak on samuti vĂ”imalik, kui rĂŒndaja suudab hoida ĂŒhendust serveriga avatud seitse pĂ€eva (nĂ€iteks, saates ĂŒhe baiti minutis, et vĂ€ltida ajutise katkestuse rikkumist). Samuti ei ole vĂ€listatud, et probleemi kaugkasutamiseks on olemas lihtsamad rĂŒndesuunad.
Haavatavus tuleneb saaja aadressi vale kontrollimise tĂ”ttu funktsioonis deliver_message(), mis on mÀÀratletud failis /src/deliver.c. Aadressi vormindamise manipuleerimise kaudu saab rĂŒndaja oma andmeid sisestada juurĂ”igustega execv() funktsiooni kaudu kutsutud kĂ€su argumentidesse. TĂ”rke Ă€rakasutamiseks ei ole vajalik keerukate tehnikate rakendamine, mis on seotud puutĂŒkkide ĂŒlevoolu vĂ”i mĂ€lu kahjustamisega, piisab lihtsalt sĂŒmbolite sisestamisest.
Probleem on seotud aadresside muutmiseks konstruktsiooni rakendamisega:
deliver_localpart = expand_string(
string_sprintf('${local_part:%s}', new->address));
deliver_domain = expand_string(
string_sprintf('${domain:%s}', new->address));
Funktsioon expand_string() on ĂŒlemÀÀraselt keeruline kombain, sealhulgas tuvastab kĂ€su '${run{kĂ€sk argumentides}', mis viib vĂ€list töötlejat kĂ€ivitamiseni. Seega, rĂŒnnaku toimetamiseks SMTP sessiooni raames on kohaliku kasutaja jaoks piisav edastada kĂ€sk kuju 'RCPT TO "username+${run{âŠ}}@localhost"', kus localhost on ĂŒks kohalike domeenide nimekirjast, ja username on olemasoleva kohaliku kasutaja nimi.
Kui server töötab meiliserverina, piisab, kui saata kaugelt kĂ€sk âRCPT TO «${run{âŠ}}@relaydomain.com»â, kus relaydomain.com on ĂŒks hoste, mis on loetletud relay_to_domains seadistuste sektsioonis. Kuna vaikimisi ei rakendata eximis privileegide langetamise reĆŸiimi (deliver_drop_privilege = false), siis kĂ€sud, mis saadetakse lĂ€bi «${run{âŠ}}», tĂ€idetakse root Ă”igustes.
Oluline on mÀrkida, et haavatavus esines vÀljaandmisel veebruaris 4.92, mitte pöörates tÀhelepanu sellele, et parandamine vÔib tekitada turvaprobleeme. Ei ole alust arvata, et Eximi arendajad kikitasid teadlikult haavatavust, kuna probleem lahendati probleemi kÀigus, mis tekkis vale aadresside edastamisel, ja haavatavuse avastas Qualys saatel Eximi muudatusi.
Parandus vanadele versioonidele, mis jÀtkuvad jaotustes, on seni saadaval ainult kujul . Parandavaid vÀljalaskmisi vanadele harudele probleemide lahendamiseks on plaanitud 11. juuniks. Pakettide uuendused on ette valmistatud , , . ja toovad versiooni 4.92, kus probleem ei esine. RHEL ja CentOS probleem , kuna Exim ei kuulu nende vaikimisi pakettide hoidlasse.
Allikas: opennet.ru
