Na poštovom serveri Exim
V predvolenej konfigurácii môže útok vykonať bez zbytočných komplikácií lokálny používateľ, keďže je aplikovaný ACL „verify = recipient“, ktorý vykonáva dodatočné kontroly externých adries. Vzdialený útok môže nastať, keď sa zmenia nastavenia, ako napríklad pôsobenie ako sekundárny MX pre inú doménu, odstránenie ACL „verify=recipient“ alebo určité zmeny v prípone local_part_suffix). Vzdialený útok je možný aj vtedy, ak je útočník schopný udržať pripojenie k serveru otvorené 7 dní (napríklad odoslaním jedného bajtu za minútu, aby sa obišiel časový limit). Zároveň je možné, že existujú jednoduchšie vektory útoku na vzdialené využitie problému.
Zraniteľnosť je spôsobená nesprávnym overením adresy príjemcu vo funkcii delivery_message() definovanej v súbore /src/deliver.c. Manipuláciou s formátovaním adresy môže útočník dosiahnuť nahradenie svojich údajov do argumentov príkazu volaného cez funkciu execv() s právami root. Prevádzka nevyžaduje použitie zložitých techník používaných na pretečenie vyrovnávacej pamäte alebo poškodenie pamäte, postačuje jednoduchá náhrada znakov.
Problém súvisí s použitím konštrukcie na konverziu adresy:
delivery_localpart = expand_string(
string_sprintf("${miestna_časť:%s}", nová->adresa));
delivery_domain = expand_string(
string_sprintf("${doména:%s}", nová->adresa));
Funkcia expand_string() je príliš komplikovaný zlučovač vrátane rozpoznávania príkazu „${run{príkazové argumenty}“, ktorý vedie k spusteniu externého obslužného programu. Na útok v rámci relácie SMTP teda lokálny používateľ potrebuje poslať príkaz ako 'RCPT TO “username+${run{...}}@localhost”', kde localhost je jeden z hostiteľov zo zoznamu local_domains, a užívateľské meno je meno existujúceho lokálneho užívateľa.
Ak server funguje ako mail relay, stačí na diaľku poslať príkaz 'RCPT TO "${run{...}}@relaydomain.com"', kde relaydomain.com je jeden z hostiteľov uvedených v relay_to_domains sekcia nastavení. Keďže Exim štandardne nepúšťa režim privilégií (deliver_drop_privilege = false), príkazy odovzdané cez "${run{...}}" budú vykonávané ako root.
Je pozoruhodné, že zraniteľnosť bola
Oprava pre predchádzajúce verzie, ktoré sa naďalej používajú v distribúciách, je momentálne dostupná len ako
Zdroj: opennet.ru