Eximi meiliserveris
Vaikekonfiguratsioonis saab rünnak läbi viia ilma tarbetute komplikatsioonideta kohaliku kasutaja poolt, kuna rakendatakse ACL-i "verify = recipient", mis teostab väliste aadresside täiendavat kontrolli. Kaugrünnak võib toimuda siis, kui sätteid muudetakse, näiteks teise domeeni sekundaarse MX-i toimimine, ACL-i "verify=recipient" eemaldamine või teatud muudatused loendis local_part_suffix). Kaugrünnak on võimalik ka siis, kui ründaja suudab hoida ühendust serveriga avatud 7 päeva (näiteks saadab ühe baiti minutis, et aegumistähtajast mööda minna). Samas on võimalik, et probleemi kaugkasutamiseks on olemas lihtsamad ründevektorid.
Haavatavuse põhjuseks on saaja aadressi vale kontrollimine failis /src/deliver.c määratletud funktsioonis delivery_message(). Aadressi vorminguga manipuleerides saab ründaja saavutada oma andmete asendamise käsu argumentidega, mida kutsutakse läbi funktsiooni execv() juurõigustega. Töötamine ei nõua keeruliste tehnikate kasutamist, mida kasutatakse puhvri ületäitumiseks või mälu rikkumiseks, piisab lihtsast märkide asendamisest.
Probleem on seotud konstruktsiooni kasutamisega aadressi teisendamiseks:
delivery_localpart = expand_string(
string_sprintf("${local_part:%s}", uus->aadress));
tarni_domeen = expand_string(
string_sprintf("${domeen:%s}", uus->aadress));
Funktsioon expand_string() on liiga keeruline kombineerija, mis hõlmab käsu "${run{command arguments}" äratundmist, mis viib välise töötleja käivitamiseni. Seega peab kohalik kasutaja SMTP-seansi jooksul ründamiseks saatma vaid käsu nagu „RCPT TO „kasutajanimi+${run{...}}@localhost”, kus localhost on üks loendis local_domains olevatest hostidest, ja kasutajanimi on olemasoleva kohaliku kasutaja nimi.
Kui server töötab meiliedastajana, piisab kaugkäskluse "RCPT TO "${run{...}}@relaydomain.com" saatmisest, kus relaydomain.com on üks hostidest, mis on loetletud relay_to_domains'is. seadete jaotis. Kuna Exim ei loo vaikimisi privileegide režiimi (deliver_drop_privilege = false), käivitatakse käsud, mis edastatakse "${run{...}}" kaudu, administraatorina.
Tähelepanuväärne on, et haavatavus oli
Distributsioonides jätkuvalt kasutatavate eelmiste versioonide parandus on praegu saadaval ainult kujul
Allikas: opennet.ru