Exim pasta serverī
Noklusējuma konfigurācijā uzbrukumu var veikt bez liekiem sarežģījumiem vietējam lietotājam, jo tiek izmantots ACL “verify = recipient”, kas veic papildu ārējo adrešu pārbaudes. Attālināts uzbrukums var notikt, mainot iestatījumus, piemēram, darbojoties kā sekundāram MX citam domēnam, noņemot ACL "verify=recipient" vai veicot noteiktas izmaiņas lokālajā_part_sufiksā). Attālināts uzbrukums ir iespējams arī tad, ja uzbrucējs spēj uzturēt atvērtu savienojumu ar serveri 7 dienas (piemēram, nosūtot vienu baitu minūtē, lai apietu taimautu). Tajā pašā laikā ir iespējams, ka problēmas attālinātai izmantošanai ir vienkāršāki uzbrukuma vektori.
Ievainojamību izraisa nepareiza adresāta adreses pārbaude funkcijā delivery_message(), kas definēta failā /src/deliver.c. Manipulējot ar adreses formatējumu, uzbrucējs var panākt savu datu aizstāšanu ar komandas argumentiem, kas izsaukti, izmantojot funkciju execv() ar saknes tiesībām. Darbībai nav jāizmanto sarežģītas metodes, ko izmanto bufera pārpildīšanai vai atmiņas sabojāšanai; pietiek ar vienkāršu rakstzīmju aizstāšanu.
Problēma ir saistīta ar konstrukcijas izmantošanu adreses konvertēšanai:
piegādā_localpart = expand_string(
string_sprintf("${local_part:%s}", jauna->adrese));
piegādāt_domēns = expand_string(
string_sprintf("${domēns:%s}", jauna->adrese));
Funkcija expand_string() ir pārāk sarežģīts kombinētājs, tostarp komandas “${run{command arguments}” atpazīšana, kas noved pie ārējā apdarinātāja palaišanas. Tādējādi, lai uzbruktu SMTP sesijas ietvaros, vietējam lietotājam ir jānosūta tikai komanda, piemēram, “RCPT UZ “lietotājvārds+${run{...}}@localhost”, kur localhost ir viens no resursdatoriem no saraksta local_domains, un lietotājvārds ir esoša lokālā lietotāja vārds.
Ja serveris darbojas kā pasta relejs, pietiek attālināti nosūtīt komandu 'RCPT TO "${run{...}}@relaydomain.com"', kur relaydomain.com ir viens no resursdatoriem, kas norādīti relay_to_domains. iestatījumu sadaļa. Tā kā Exim pēc noklusējuma neatlaiž privilēģiju režīmu (deliver_drop_privilege = false), komandas, kas nodotas, izmantojot "${run{...}}", tiks izpildītas kā root.
Jāatzīmē, ka ievainojamība bija
Labojums iepriekšējām versijām, kuras joprojām tiek izmantotas izplatījumos, pašlaik ir pieejams tikai kā
Avots: opennet.ru