Exim-en ahultasun larria, root pribilegioak dituen zerbitzarian kodea exekutatzea ahalbidetzen duena

Exim posta zerbitzarian identifikatu kritikoa zaurgarritasuna (CVE-2019-10149), eta horrek erro-eskubideak dituen zerbitzarian urruneko kodea exekutatzea ekar dezake bereziki landutako eskaera bat prozesatzen denean. Arazoa ustiatzeko aukera 4.87tik 4.91ra bitarteko bertsioetan edo EXPERIMENTAL_EVENT aukerarekin eraikitzean adierazi zen.

Lehenetsitako konfigurazioan, erasoa tokiko erabiltzaile batek alferrikako konplikaziorik gabe egin dezake, "egiaztatu = hartzailea" ACL aplikatzen baita, kanpoko helbideetarako egiaztapen gehigarriak egiten dituena. Urruneko eraso bat gerta daiteke ezarpenak aldatzen direnean, adibidez, beste domeinu baterako bigarren MX gisa jardutea, "verify=recipient" ACL kentzea edo local_part_suffix-en zenbait aldaketa). Urruneko erasoa ere posible da, erasotzaileak zerbitzariarekiko konexioa zabalik mantentzeko gai bada 7 egunez (adibidez, minutuko byte bat bidaliz denbora-muga bat saihesteko). Aldi berean, baliteke arazoaren urrutiko ustiapenerako eraso-bektore sinpleagoak egotea.

Zaurgarritasuna /src/deliver.c fitxategian definitutako deliver_message() funtzioan hartzailearen helbidea egiaztatzeak okerretik eragiten du. Helbideen formatua manipulatuz, erasotzaileak bere datuak execv() funtzioaren bidez deitutako komando baten argumentuetan ordezkatzea lor dezake root eskubideekin. Funtzionamenduak ez du beharrezkoa buffer gainezka edo memoria hondatzeko erabiltzen diren teknika konplexuak erabiltzea; nahikoa da karaktere-ordezkapen soila.

Arazoa helbideak bihurtzeko konstruktuaren erabilerarekin lotuta dago:

delivery_localpart = zabaldu_katea(
string_sprintf("${local_part:%s}", berria->helbidea));
entrega_domeinua = zabaldu_katea(
string_sprintf("${domeinua:%s}", berria->helbidea));

Expand_string() funtzioa konbinatzaile konplikatua da, "${exekutatu{agindu argumentuak}" komandoa ezagutzea barne, eta horrek kanpoko kudeatzaile bat abiarazten du. Horrela, SMTP saio baten barruan erasotzeko, tokiko erabiltzaileak 'RCPT TO β€œerabiltzaile izena+${exekutatu{...}}@localhost”' bezalako komandoa besterik ez du bidali behar, non localhost tokiko_domeinuen zerrendako ostalarietako bat den. eta username lehendik dagoen tokiko erabiltzaile baten izena da.

Zerbitzariak posta-errelebo gisa funtzionatzen badu, nahikoa da 'RCPT TO "${run{...}}@relaydomain.com"' komandoa urrunetik bidaltzea, non relaydomain.com relay_to_domains-en zerrendatutako ostalarietako bat den. ezarpenen atalean. Exim-ek pribilegio modua kentzea lehenesten ez duenez (deliver_drop_privilege = false), "${run{...}}" bidez emandako komandoak root gisa exekutatuko dira.

Azpimarratzekoa da ahultasuna izan zela ezabatuta otsailean kaleratutako 4.92 bertsioan, konponketak segurtasun arazoak sor ditzakeela azpimarratu gabe. Ez dago arrazoirik Exim-eko garatzaileek ahultasuna nahita ezkutatu zutela sinesteko, arazoa zehar konpondu baitzen. konponketak helbide okerrak transmititzen direnean gertatzen den hutsegitea eta ahultasuna Qualys-ek Exim-en aldaketen auditoria batean identifikatu zuen.

Banaketetan erabiltzen jarraitzen duten aurreko bertsioen konponketa une honetan bakarrik dago eskuragarri adabakia. Arazoa konpontzeko aurreko sukurtsalentzako argitalpen zuzentzaileak ekainaren 11rako aurreikusita daude. Paketeen eguneraketak prest daude Debian, Ubuntu, openSUSE. Arch Linux ΠΈ Fedora 4.92 bertsioa ematen dute, non arazoa agertzen ez den. RHEL eta CentOS arazoa ez gaia, Exim ez baitago bere ohiko paketeen biltegian sartzen.

Iturria: opennet.ru

Gehitu iruzkin berria