Vzdialene zneužívaná zraniteľnosť v poštovom serveri qmail

Bezpečnostní výzkumníci z firmy Qualys ukázali možnosť využití zranitelnosti na mailovém serveru qmail, známé již od roku 2005 (CVE-2005-1513), ale zůstávala neopravená, protože autor qmail tvrdil, že je nerealistické vytvořit fungující exploit, který by mohl být použit k útoku na systémy v základní konfiguraci. V Qualys se podařilo připravit exploit, který tuto představu vyvrací a umožňuje iniciovat vzdálené spuštění kódu na serveru prostřednictvím odeslání speciálně upravené zprávy.

Problém je způsoben přetečením celého čísla ve funkci stralloc_readyplus(), které může nastat při zpracování velmi velké zprávy. K exploataci byla potřeba 64bitová soustava s objemem virtuální paměti přes 4GB. Při prvním rozboru zranitelnosti v roce 2005 Daniel Bernstein tvrdil, že předpoklad v kódu, že velikost alokovaného pole se vždy vejde do 32bitové hodnoty, je založen na tom, že nikdo neposkytuje gigabyty paměti každému procesu. V posledních 15 letech 64bitové soustavy na serverech vytlačily 32bitové, dramaticky vzrostly objemy dodávané paměti a propustnost sítí.

Doprovodné balíčky s qmail zohlednily poznámku Bernsteina a při spuštění procesu qmail-smtpd omezily dostupnou paměť (například v Debianu 10 je nastaven limit na 7MB). Ale inženýři z Qualys zjistili, že to nestačí a kromě qmail-smtpd může být vzdálený útok proveden na proces qmail-local, který ve všech ověřených balíčcích zůstával neomezen. Jako důkaz byl připraven prototyp exploit, vhodný k útoku na dodávaný balíček qmail v Debianu v základní konfiguraci.
K organizaci vzdáleného spuštění kódu během útoku je potřeba mít na serveru 4GB volného místa na disku a 8GB RAM.
Exploit umožňuje spouštět libovolné shellové příkazy s oprávněním jakéhokoliv uživatele v systému, kromě root a systémových uživatelů, kteří nemají svůj podsložku v adresáři „/home“ (proces qmail-local se spouští s oprávněním místního uživatele, kterému je doručováno).

Útok je prováděn
prostredníctvom odosielania veľmi veľkej e-mailovej správy, ktorá zahŕňa niekoľko riadkov v hlavičke, s veľkosťou približne 4GB a 576MB. Spracovanie takého riadku v qmail-local vedie k pretečeniu celého čísla pri pokuse o dodanie správy miestnemu používateľovi. Pretečenie celého čísla následne vedie k pretečeniu vyrovnávacej pamäte pri kopírovaní údajov a možnosti prepísať stránky pamäte s kódom libc. Prostredníctvom manipulácií s usporiadaním prenášaných údajov je možné prepísať adresu funkcie „open()“, pričom ju nahradíte adresou funkcie „system()“.

Následne, počas volania qmesearch() v qmail-local dochádza k otvoreniu súboru „.qmail-extension“ prostredníctvom funkcie open(), čo vedie k skutočnému spusteniu funkcie
system(„.qmail-extension“). Avšak, pretože časť súboru „extension“ sa vytvára na základe adresy príjemcu (napríklad „localuser-extension@localdomain“), útočníci môžu usporiadať prenos príkazu na spustenie, pričom ako príjemcu správy uvedú „localuser-;command;@localdomain“.

Počas analýzy kódu boli tiež identifikované dve zraniteľnosti v dodatočnom patchi qmail-verify, ktorý je súčasťou balíka pre Debian. Prvá zraniteľnosť (CVE-2020-3811) umožňuje obísť overenie e-mailovej adresy, zatiaľ čo druhá (CVE-2020-3812) vedie k úniku lokálnych informácií. Konkrétne prvá zraniteľnosť umožňuje obísť overenie správnosti adresy použitej v exploite na prenos príkazu (overenie nefunguje pre adresy bez domény, ako je „localuser-;command;“). Druhá zraniteľnosť môže byť použitá na overenie existencie súborov a adresárov v systéme, vrátane tých, ktoré sú prístupné iba pre root (qmail-verify sa spúšťa s právami root), prostredníctvom priameho prístupu k miestnemu spracovateľovi.

Na obídenie problému Bernstein odporúčal spúšťať procesy qmail s nastavením spoločného limitu na dostupnú pamäť („softlimit -m12345678“) a v tomto prípade je problém zablokovaný. Ako alternatívny spôsob ochrany sa spomína aj obmedzenie maximálnej veľkosti spracovávanej správy prostredníctvom súboru „control/databytes“ (podľa predvoleného nastavenia sa pri predvolenom nastavení qmail nevytvára a zostáva zraniteľný). Okrem toho „control/databytes“ neochráni pred miestnymi útokmi zo strany používateľov systému, pretože obmedzenie sa zohľadňuje iba v qmail-smtpd.

Problém sa týka balíka netqmail, nachádzajúci sa v repozitároch Debian. Pre tento balík bol pripravený súbor patchov, ktorý rieši staré zraniteľnosti z roku 2005 (pridaním pevných limitov na pamäť do kódu pomocou funkcie alloc()), ako aj nové problémy v qmail-verify. Samostatne bol pripravený aktualizovaná verzia patchu qmail-verify. Vývojári vetvy notqmail pripravili svoje patche na blokovanie starých problémov a taktiež spustili prácu na odstránení všetkých možných celočíselných preplnení v kóde.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster