U Exim poslužitelju pošte
U zadanoj konfiguraciji napad bez nepotrebnih komplikacija može izvesti lokalni korisnik, budući da se primjenjuje ACL "verify = recipient" koji vrši dodatne provjere vanjskih adresa. Daljinski napad može se dogoditi kada se postavke promijene, kao što je djelovanje kao sekundarni MX za drugu domenu, uklanjanje ACL-a "verify=recipient" ili određene promjene u local_part_suffix). Daljinski napad također je moguć ako napadač može držati vezu s poslužiteljem otvorenom 7 dana (na primjer, slanje jednog bajta u minuti kako bi se zaobišao timeout). U isto vrijeme, moguće je da postoje jednostavniji vektori napada za daljinsko iskorištavanje problema.
Ranjivost je uzrokovana netočnom provjerom adrese primatelja u funkciji deliver_message() definiranoj u datoteci /src/deliver.c. Manipuliranjem formatiranja adrese, napadač može postići zamjenu svojih podataka u argumentima naredbe pozvane kroz funkciju execv() s root pravima. Operacija ne zahtijeva upotrebu složenih tehnika koje se koriste za prekoračenje međuspremnika ili oštećenje memorije; dovoljna je jednostavna zamjena znakova.
Problem je povezan s korištenjem konstrukcije za konverziju adresa:
dostavi_lokalnidio = proširi_string(
string_sprintf("${local_part:%s}", nova->adresa));
dostavi_domenu = proširi_string(
string_sprintf("${domain:%s}", nova->adresa));
Expand_string() funkcija je prekomplicirana kombinacija, uključujući prepoznavanje naredbe “${run{command arguments}”, što dovodi do pokretanja vanjskog rukovatelja. Stoga, za napad unutar SMTP sesije, lokalni korisnik treba samo poslati naredbu poput 'RCPT TO “username+${run{...}}@localhost”', gdje je localhost jedan od hostova s popisa local_domains, a korisničko ime je ime postojećeg lokalnog korisnika.
Ako poslužitelj radi kao relej pošte, dovoljno je daljinski poslati naredbu 'RCPT TO "${run{...}}@relaydomain.com"', gdje je relaydomain.com jedan od hostova navedenih u relay_to_domains odjeljak postavki. Budući da Exim ne postavlja prema zadanim postavkama način ispuštanja privilegija (deliver_drop_privilege = false), naredbe proslijeđene putem "${run{...}}" bit će izvršene kao root.
Važno je napomenuti da je ranjivost bila
Popravak za prethodne verzije koje se i dalje koriste u distribucijama trenutno je dostupan samo kao
Izvor: opennet.ru