U Exim mail serveru
U zadanoj konfiguraciji, napad se može izvesti bez nepotrebnih komplikacija od strane lokalnog korisnika, jer se primjenjuje ACL "verify = recipient", koji vrši dodatne provjere za eksterne adrese. Do udaljenog napada može doći kada se postavke promijene, kao što je djelovanje kao sekundarni MX za drugu domenu, uklanjanje "verify=recipient" ACL-a ili određene promjene u local_part_suffix). Daljinski napad je također moguć ako je napadač u mogućnosti da zadrži vezu sa serverom otvorenu 7 dana (na primjer, šalje jedan bajt u minuti da zaobiđe vremensko ograničenje). Istovremeno, moguće je da postoje jednostavniji vektori napada za daljinsku eksploataciju problema.
Ranjivost je uzrokovana neispravnom verifikacijom adrese primaoca u funkciji dostavi_message() definiranoj u datoteci /src/deliver.c. Manipulišući formatiranjem adrese, napadač može postići supstituciju svojih podataka u argumente komande pozvane preko funkcije execv() sa root pravima. Operacija ne zahtijeva korištenje složenih tehnika koje se koriste za prekoračenje bafera ili oštećenje memorije; dovoljna je jednostavna zamjena znakova.
Problem je vezan za upotrebu konstrukcije za konverziju adresa:
dostavi_localpart = expand_string(
string_sprintf("${local_part:%s}", novo->adresa));
dostavi_domena = expand_string(
string_sprintf("${domena:%s}", novo->adresa));
Funkcija expand_string() je prekompliciran kombinator, uključujući prepoznavanje naredbe “${run{command arguments}”, što dovodi do pokretanja vanjskog rukovatelja. Dakle, da bi napao unutar SMTP sesije, lokalni korisnik treba samo poslati komandu poput 'RCPT TO “username+${run{...}}@localhost”', gdje je localhost jedan od hostova sa liste local_domains, a korisničko ime je ime postojećeg lokalnog korisnika.
Ako server radi kao mail relej, dovoljno je daljinski poslati naredbu 'RCPT NA "${run{...}}@relaydomain.com"', gdje je relaydomain.com jedan od hostova navedenih u relay_to_domains odjeljak postavki. Pošto Exim ne podrazumeva da ispušta režim privilegija (deliver_drop_privilege = false), komande prosleđene preko "${run{...}}" će biti izvršene kao root.
Važno je napomenuti da je ranjivost bila
Ispravka za prethodne verzije koje se i dalje koriste u distribucijama trenutno je dostupna samo kao
izvor: opennet.ru