Az Exim levelezőszerverben
Az alapértelmezett konfigurációban a támadást a helyi felhasználó szükségtelen bonyodalmak nélkül hajthatja végre, mivel a "verify = recipient" ACL kerül alkalmazásra, amely további ellenőrzéseket végez a külső címeknél. Távoli támadás történhet, amikor a beállításokat módosítják, például másodlagos MX-ként működnek egy másik tartományhoz, eltávolítják a "verify=recipient" ACL-t, vagy bizonyos módosításokat hajtanak végre a local_part_suffix értékben. Távoli támadás is lehetséges, ha a támadó képes 7 napig nyitva tartani a kapcsolatot a szerverrel (például percenként egy bájtot küld az időtúllépés megkerülésére). Ugyanakkor lehetséges, hogy léteznek egyszerűbb támadási vektorok a probléma távoli kihasználására.
A sérülékenységet a címzett címének helytelen ellenőrzése okozza a /src/deliver.c fájlban definiált delivery_message() függvényben. A címformázás manipulálásával a támadó elérheti, hogy adatait az execv() függvényen keresztül root jogokkal meghívott parancs argumentumaiba helyettesítsék. A működéshez nincs szükség a puffertúlcsordulásra vagy a memóriakárosodásra használt összetett technikák alkalmazására, elegendő az egyszerű karaktercsere.
A probléma a konstrukció címkonverziós használatához kapcsolódik:
delivery_localpart = expand_string(
string_sprintf("${local_part:%s}", új->cím));
szállítás_tartomány = expand_string(
string_sprintf("${domain:%s}", új->cím));
Az expand_string() függvény egy túlbonyolított kombináló, beleértve a „${run{command arguments}” parancs felismerését, amely egy külső kezelő elindításához vezet. Így az SMTP-munkameneten belüli támadáshoz a helyi felhasználónak csak egy parancsot kell küldenie, például: „RCPT TO „username+${run{...}}@localhost”', ahol a localhost a local_domains listában szereplő egyik gazdagép, a felhasználónév pedig egy meglévő helyi felhasználó neve.
Ha a szerver levéltovábbítóként működik, elegendő távolról elküldeni az „RCPT TO "${run{...}}@relaydomain.com"' parancsot, ahol a relaydomain.com a relay_to_domains listában szereplő gazdagépek egyike. beállítások részt. Mivel az Exim alapértelmezés szerint nem engedi el a jogosultságmódot (deliver_drop_privilege = false), a „${run{…}}”-en keresztül átadott parancsok rootként lesznek végrehajtva.
Figyelemre méltó, hogy a sebezhetőség az volt
A disztribúciókban továbbra is használt korábbi verziók javítása jelenleg csak a következő néven érhető el
Forrás: opennet.ru