Kritikus biztonsági rése az Eximben, amely lehetővé teszi a kód futtatását a kiszolgálón root jogosultságokkal

Az Exim levelezőszerverben azonosított kritikai sebezhetőség (CVE-2019 10149-), amely távoli kódfuttatáshoz vezethet a root jogokkal rendelkező kiszolgálón egy speciálisan kialakított kérés feldolgozásakor. A probléma kihasználásának lehetőségét a 4.87-től a 4.91-ig terjedő verziókban, vagy az EXPERIMENTAL_EVENT opcióval történő építésnél feljegyezték.

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 Eltüntetett a februárban kiadott 4.92-es kiadásban, anélkül, hogy hangsúlyoznák, hogy a javítás biztonsági problémákat okozhat. Nincs okunk azt hinni, hogy az Exim fejlesztői szándékosan eltitkolták a sebezhetőséget, mivel a problémát a program során javították. helyesbítés hiba, amely helytelen címek továbbításakor következik be, és a sebezhetőséget a Qualys azonosította az Exim módosításainak ellenőrzése során.

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 tapasz. A hiba kijavítása érdekében a korábbi fiókok korrekciós kiadásai június 11-én várhatók. A csomagfrissítések készen állnak Debian, Ubuntu, openSUSE. Arch Linux и Fedora A 4.92-es verziót szállítják, amelyben a probléma nem jelenik meg. RHEL és CentOS probléma nem fogékony, mivel az Exim nem szerepel a szabványos csomagtárolójukban.

Forrás: opennet.ru

Hozzászólás