Kriittinen haavoittuvuus Eximissä, joka mahdollistaa koodin suorittamisen palvelimella pääkäyttäjän oikeuksin

Exim-postipalvelimessa tunnistettu kriittinen haavoittuvuus (CVE-2019-10149), mikä voi johtaa koodin etäsuorittamiseen palvelimella pääkäyttäjän oikeuksin käsiteltäessä erityisesti muodostettua pyyntöä. Mahdollisuus hyödyntää ongelmaa huomattiin versioissa 4.87 - 4.91 tai kun rakennettiin EXPERIMENTAL_EVENT-vaihtoehdolla.

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 eliminoitu helmikuussa julkaistussa 4.92-julkaisussa korostamatta, että korjaus saattaa johtaa tietoturvaongelmiin. Ei ole mitään syytä uskoa, että Exim-kehittäjät salasivat haavoittuvuutta tahallaan, koska ongelma korjattiin oikaisua virhe, joka ilmenee, kun vääriä osoitteita lähetetään, ja Qualys havaitsi haavoittuvuuden tarkastellessaan Eximin muutoksia.

Korjaus aiemmille versioille, joita käytetään edelleen jakeluissa, on tällä hetkellä saatavilla vain nimellä laastari. Aiempien sivukonttoreiden korjaavat julkaisut ongelman korjaamiseksi on määrä julkaista 11. kesäkuuta. Pakettipäivitykset ovat valmiina Debian, Ubuntu, openSUSE. Arch Linux и Fedora He toimittavat version 4.92, jossa ongelmaa ei ilmene. RHEL- ja CentOS-ongelma ei ole herkkä, koska Exim ei sisälly heidän tavalliseen pakettivarastoon.

Lähde: opennet.ru

Lisää kommentti