Qualys cég még egy távoli kritikus sebezhetőséget (CVE-2020-8794) találtak a levelező szerveren , amelyet az OpenBSD projekt fejleszt. Mint ami január végén került napvilágra , az új hiba lehetővé teszi a távoli, tetszőleges shell parancsok végrehajtását a szerveren root felhasználói jogokkal. A sebezhetőség a kiadásban .
A probléma a levél távoli levelező szerverre történő kézbesítését végző kód hibájából fakad (nem a bejövő kapcsolatok kezelését végző kódból). A támadás lehetősége fennáll a kliens és a szerver oldalán is. A kliens oldalán a támadás a szokásos OpenSMTPD konfigurációban lehetséges, amelyben az OpenSMTPD csak a belső hálózati interfészen (localhost) fogadja a kéréseket, és levélüzeneteket küld külső szerverekre. A sebezhetőség kihasználásához elegendő, hogy a levél kézbesítése során az OpenSMTPD kapcsolatba lépjen egy támadó által irányított levelező szerverrel, vagy hogy a támadó bele tudjon avatkozni a kliens kapcsolatába (MITM vagy átirányítás DNS vagy BGP támadások közben).
A szerver oldalán történő támadáshoz az OpenSMTPD-nak be kell állítva lennie olyan külső hálózati kérések fogadására más levelező szerverektől, vagy külső szolgáltatásokat kell üzemeltetnie, amelyek lehetővé teszik, hogy tetszőleges e-mail címre küldjenek kéréseket (például címmegerősítő űrlapokat webhelyeken). Például a támadó csatlakozhat az OpenSMTPD szerverhez, és küldhet egy hibás levelet (nem létező felhasználónak), amely az elküldött levél hibakódjával (bounce) tér vissza a támadó szerverére. A támadó kihasználhatja a sebezhetőséget, amikor az OpenSMTPD értesítést küld a támadó szerverére. A támadás során bejuttatott shell parancsokat egy fájlba helyezik, amely root jogokkal fut le, amikor az OpenSMTPD újraindul, ezért a támadónak meg kell várnia az OpenSMTPD újraindítását, vagy szándékosan össze kell törnie az OpenSMTPD-t.
A probléma a mta_io() függvényben van, amely a távoli szervertől kapott több sorból álló választ értelmezi a kapcsolat felállítása után (például „250-ENHANCEDSTATUSCODES” és „250 HELP”). Az OpenSMTPD-ben úgy van számítva, hogy az első sorban egy három számjegyű szám és szöveg szerepel, amelyet a „-” karakter választ el, a második sorban pedig egy három számjegyű szám és szöveg, amelyet egy szóköz választ el. Ha a második sorban a három számjegyű szám után nem következik szóköz, a szöveg meghatározására használt mutató a ‘\0’ karakter utáni byte-ra áll be, és megpróbálják átmásolni az adatbővítmény következő byte-jait a sor végén.
Az OpenBSD projekt kérésére a sebezhetőség kihasználásának részleteit 2023. február 26-ig késleltették a felhasználók rendszereik frissítésének lehetőségéért. A probléma a kódalapban 2015 december óta jelen van, de a root jogosultságokkal történő kódfuttatás kihasználása 2018 május óta lehetséges. A kutatók egy működő kihasználási prototípust készítettek, amely sikeresen tesztelve lett az OpenSMTPD OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (tesztelés) és Fedora 31 verzióiban.
Az OpenSMTPD-ben is van egy másik sebezhetőség (CVE-2020-8793), amely lehetővé teszi a helyi felhasználó számára, hogy elolvassa bármely fájl első sorát a rendszeren. Például elolvasható az első sor az /etc/master.passwd fájlban, amelyben a root felhasználó jelszavának hash-e található. A sebezhetőség lehetővé teszi a más felhasználó által birtokolt fájl teljes tartalmának elolvasását is, ha az a /var/spool/smtpd/ könyvtárral egy fájlrendszerben található. A probléma sok Linux disztribúcióban nem kihasználható, ahol a /proc/sys/fs/protected_hardlinks értéke 1.
A probléma az audit során megfogalmazott, 2015-ben a Qualys által végzett, nem teljes körű megszüntetésének következménye. A támadó képes kódot végrehajtani a „_smtpq” csoport jogosultságaival, ha a „PATH=.” változót állítja be, és a jelenlegi könyvtárban egy makemap nevű szkriptet helyez el (az smtpctl program a makemap-ot explicit útvonal megadása nélkül futtatja). Miután hozzáférést kap a „_smtpq” csoporthoz, a támadó egy versenyhelyzetet idézhet elő (nagy fájlt létrehozva az offline könyvtárban és SIGSTOP jelet küldve), és a feldolgozás befejezése előtt megváltoztathatja a fájlt az offline könyvtárban egy kemény szimbolikus linkre, amely a célfájlra mutat, amelynek tartalmát el kell olvasni.
Érdekes, hogy a Fedora 31-ben a sebezhetőség lehetővé teszi a root csoport privilégiumainak azonnali megadását, mivel a smtpctl folyamat setgid root zászlóval van ellátva, nem pedig setgid smtpq-val. A root csoporthoz való hozzáféréssel át lehet írni a /var/lib/sss/mc/passwd tartalmát, és teljes root hozzáférést lehet szerezni a rendszerben.
Forrás: opennet.ru
