Chyby v OpenSMTPD, ktoré umožňujú vzdialený a lokálny root prístup

Spoločnosť Qualys odhalené iná vzdialená kritická zraniteľnosť (CVE-2020-8794) na poštovom serveri OpenSMTPD, vyvinutý projektom OpenBSD. Ako ten identifikovaný koncom januára zraniteľnosť, nový problém umožňuje vzdialene vykonávať ľubovoľné príkazy shellu na serveri s právami užívateľa root. Zraniteľnosť eliminovaný vo vydaní OpenSMTPD 6.6.4p1.

Problém je spôsobený chybou v kóde, ktorý doručuje poštu na vzdialený poštový server (nie v kóde, ktorý spracováva prichádzajúce pripojenia). Útok je možný na strane klienta aj na strane servera. Na strane klienta je útok možný v predvolenej konfigurácii OpenSMTPD, v ktorej OpenSMTPD prijíma požiadavky iba na internom sieťovom rozhraní (localhost) a posiela mailové správy na externé servery. Na zneužitie zraniteľnosti stačí, aby OpenSMTPD pri doručovaní listu nadviazal reláciu s poštovým serverom kontrolovaným útočníkom, alebo aby sa útočník mohol vkliesniť do klientskeho spojenia (MITM alebo presmerovanie pri útokoch cez DNS alebo BGP ).

V prípade útoku na strane servera musí byť OpenSMTPD nakonfigurovaný tak, aby prijímal externé sieťové požiadavky z iných poštových serverov alebo obsluhoval služby tretích strán, ktoré vám umožňujú odoslať požiadavku na ľubovoľný e-mail (napríklad formuláre na potvrdenie adresy na webových stránkach). Útočník sa môže napríklad pripojiť k serveru OpenSMTPD a odoslať nesprávny list (neexistujúcemu používateľovi), čo povedie k odoslaniu listu s chybovým kódom (odskok) na server útočníka. Útočník môže zneužiť túto zraniteľnosť, keď sa OpenSMTPD pripojí na doručenie upozornenia na útočníkov server. Príkazy shellu vložené počas útoku sú umiestnené v súbore, ktorý sa vykoná s právami root pri reštarte OpenSMTPD, takže útočník musí počkať, kým sa OpenSMTPD reštartuje alebo iniciovať pád OpenSMTPD, aby dokončil útok.

Problém je prítomný vo funkcii mta_io() v kóde na analýzu viacriadkovej odpovede vrátenej vzdialeným serverom po vytvorení pripojenia (napríklad "250-ENHANCEDSTATUSCODES" a "250 HELP"). OpenSMTPD vypočíta, že prvý riadok obsahuje trojmiestne číslo a text oddelené znakom „-“ a druhý riadok obsahuje trojmiestne číslo a text oddelené medzerou. Ak za trojciferným číslom nenasleduje medzera a text v druhom riadku, ukazovateľ použitý na definovanie textu sa nastaví na bajt za znakom „\0“ a vykoná sa pokus o skopírovanie údajov za koncom riadku do vyrovnávacej pamäte.

Na žiadosť projektu OpenBSD bolo zverejnenie podrobností o zneužití zraniteľnosti odložené do 26. februára, aby používatelia mohli aktualizovať svoje systémy. Problém je prítomný v kódovej základni od decembra 2015, ale zneužitie pred spustením kódu s oprávneniami root je možné od mája 2018. Výskumníci pripravili funkčný prototyp exploitu, ktorý bol úspešne testovaný v zostavách OpenSMTPD pre OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testovanie) a Fedora 31.

Aj v OpenSMTPD identifikované Ďalšia chyba zabezpečenia (CVE-2020-8793), ktorá umožňuje lokálnemu používateľovi čítať prvý riadok ľubovoľného súboru v systéme. Môžete si napríklad prečítať prvý riadok súboru /etc/master.passwd, ktorý obsahuje hash hesla používateľa root. Zraniteľnosť vám tiež umožňuje prečítať celý obsah súboru, ktorý vlastní iný používateľ, ak sa tento súbor nachádza v rovnakom súborovom systéme ako adresár /var/spool/smtpd/. Problém nie je zneužiteľný v mnohých distribúciách Linuxu, kde je hodnota /proc/sys/fs/protected_hardlinks nastavená na 1.

Problém je dôsledkom neúplnej eliminácie problémy, vyjadrené počas auditu, ktorý vykonala spoločnosť Qualys v roku 2015. Útočník môže dosiahnuť spustenie svojho kódu s právami skupiny “_smtpq” nastavením premennej “PATH=.”. a umiestnením skriptu s názvom makemap do aktuálneho adresára (utilita smtpctl spustí makemap bez explicitného určenia cesty). Získaním prístupu ku skupine „_smtpq“ môže útočník spôsobiť konflikt (vytvoriť veľký súbor v offline adresári a odoslať signál SIGSTOP) a pred dokončením spracovania nahradiť súbor v offline adresári pevným symbolický odkaz smerujúci na cieľový súbor, ktorého obsah je potrebné prečítať.

Je pozoruhodné, že vo Fedore 31 vám zraniteľnosť umožňuje okamžite získať privilégiá koreňovej skupiny, pretože proces smtpctl je vybavený príznakom setgid root namiesto príznaku setgid smtpq. Získaním prístupu do koreňovej skupiny môžete prepísať obsah /var/lib/sss/mc/passwd a získať úplný root prístup do systému.

Zdroj: opennet.ru

Pridať komentár