Exim-postipalvelimessa
Oletuskokoonpanossa hyökkäys voidaan suorittaa ilman tarpeettomia ongelmia paikallisen käyttäjän toimesta, koska käytössä on "verify = recipient" ACL, joka suorittaa lisätarkistuksia ulkoisille osoitteille. Etähyökkäys voi tapahtua, kun asetuksia muutetaan, kuten toimiminen toissijaisena MX:nä toiselle toimialueelle, poistamalla "verify=recipient" ACL tai tiettyjä muutoksia local_part_suffix). Etähyökkäys on myös mahdollinen, jos hyökkääjä pystyy pitämään yhteyden palvelimeen auki 7 päivää (esimerkiksi lähettämällä yhden tavun minuutissa aikakatkaisun ohittamiseksi). Samalla on mahdollista, että ongelman etäkäyttöön on olemassa yksinkertaisempia hyökkäysvektoreita.
Haavoittuvuus johtuu vastaanottajan osoitteen virheellisestä vahvistamisesta /src/deliver.c-tiedostossa määritetyssä toimitus_message()-funktiossa. Muokkaamalla osoitteen muotoilua hyökkääjä voi saada tietonsa korvattua execv()-funktion kautta kutsutun komennon argumenteilla pääkäyttäjän oikeuksin. Toiminta ei vaadi monimutkaisten puskurin ylivuotojen tai muistin vioittumisen tekniikoiden käyttöä; yksinkertainen merkkien korvaaminen riittää.
Ongelma liittyy konstruktin käyttöön osoitteen muuntamiseen:
toimitus_localpart = expand_string(
string_sprintf("${local_part:%s}", uusi->osoite));
toimitus_verkkotunnus = expand_string(
string_sprintf("${domain:%s}", uusi->osoite));
expand_string()-funktio on liian monimutkainen yhdistäjä, joka sisältää komennon "${run{command arguments}" tunnistamisen, mikä johtaa ulkoisen käsittelijän käynnistämiseen. Siten SMTP-istunnon sisällä hyökätäkseen paikallisen käyttäjän tarvitsee vain lähettää komento, kuten "RCPT TO "käyttäjänimi+${run{...}}@localhost", jossa localhost on yksi local_domains-luettelon isännistä, ja käyttäjätunnus on olemassa olevan paikallisen käyttäjän nimi.
Jos palvelin toimii sähköpostin välittäjänä, riittää, että lähetät etäkomennon "RCPT TO "${run{...}}@relaydomain.com"', jossa relaydomain.com on yksi relay_to_domains-kohdassa luetelluista isännistä. asetusosio. Koska Exim ei oletuksena pudota käyttöoikeustilaa (deliver_drop_privilege = false), "${run{...}}":n kautta välitetyt komennot suoritetaan pääkäyttäjänä.
On huomionarvoista, että haavoittuvuus oli
Korjaus aiemmille versioille, joita käytetään edelleen jakeluissa, on tällä hetkellä saatavilla vain nimellä
Lähde: opennet.ru