Eximi postiserveris kriitiline (), mis võib viia kaugkoodide täitmisele serveris root õigustes, kui töödeldakse spetsiaalselt vormindatud päringut. Probleemi väljendusvõimet on märgatud versioonides 4.87 kuni 4.91, sealhulgas või versioonide puhul, mis on koostatud EXPERIMENTAL_EVENT valikuga.
Vaikeseadistuses saab rünnakut teha kohaliku kasutaja poolt kergesti, kuna rakendatakse ACL «verify = recipient», mis teostab täiendavaid kontrollimisi väliste aadresside suhtes. Kaugrünnak on võimalik, kui muudate seadeid, näiteks töötades teise domeeni teisese MX-ina, eemaldades ACL «verify = recipient» või tehes teatud muudatusi local_part_suffix). Kaugrünnak on samuti võimalik, kui kurjategija suudab serveriga ühendust hoida avatud seitse päeva (näiteks saatma ühe baidi minutis, et vältida katkestust ajaülesande tõttu). Samuti ei saa välistada, et probleemi kaugkasutamiseks on olemas lihtsamad rünnakute vektorid.
Haavatavus on põhjustatud vigasest adressaadi kontrollimisest funktsioonis deliver_message(), mis on määratletud failis /src/deliver.c. Ahnuseraadios formateerimise manipuleerimise kaudu suudab ründaja sisestada oma andmed käskude argumentidesse, mida kutsutakse funktsiooni execv() kaudu root õigustes. Kasutamiseks ei ole vaja keerukate tehnikate rakendamist, mis on seotud puhversettide ülevälitamise või mälukahjustustega, piisab lihtsalt märkide sisestamisest.
Probleem on seotud aadresside muutmise keelestruktuuride 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õistetav tool, sealhulgas tuvastades käsu '${run{komanda argumendid}', mis toob kaasa välist käsitlejat käivitava. Seega, rünnakuks SMTP seansi raames on kohaliku kasutaja jaoks piisav edastada käsk 'RCPT TO "username+${run{…}}@localhost"', kus localhost on üks hostidest loetelus local_domains ja username on olemasoleva kohaliku kasutaja nimi.
Kui server töötab postiserverina, piisab kaugelt edastatud käsu 'RCPT TO "${run{…}}@relaydomain.com"' saatmisest, kus relaydomain.com on üks hostidest, mis on loetletud relay_to_domains seades. Kuna vaikeseadistuses ei rakendata Eximis privileegide tühistamise režiimi (deliver_drop_privilege = false), siis antud 'run{…}' käsud täidetakse root õigustes.
Tähtis on, et haavatavus oli välja antud veebruaris versioonis 4.92 ilma sellele tähelepanu juhtimata, et parandamine võib tekitada turvaprobleeme. Pole põhjusi arvata, et Eximi arendajad oleksid teadlikult haavatavust varjanud, kuna probleem raviti viga, mis tekkis, kui edastati valeid aadresse, ja haavatavus avastati ettevõtte Qualys poolt Eximi muudatuste auditi käigus.
Parandus varasemate versioonide jaoks, mida jätkuvalt kasutatakse jaotustes, on hetkel saadaval vaid . Probleemide lahendamiseks kavandatud parandused vanadele versioonidele plaanitakse 11. juuniks. Pakettide värskendused on ette valmistatud , , . ja toodavad versioon 4.92, milles probleem ei esine. RHEL ja CentOS probleemile , kuna Exim ei kuulu nende tavapärase paketiloendi hulka.
Allikas: opennet.ru
