Vulnerabilitat explotable de forma remota al servidor de correu qmail

Investigadors de seguretat de Qualys va mostrar oportunitat explotació vulnerabilitats al servidor de correu qmail, famós l'any 2005 (CVE-2005-1513), però va romandre sense pegat perquè l'autor de qmail va argumentar que no era realista crear un exploit que funcionés que es pogués utilitzar per atacar sistemes amb la configuració predeterminada. Qualys va poder preparar un exploit que refuta aquesta suposició i permet iniciar l'execució de codi remota al servidor enviant un missatge especialment dissenyat.

El problema és causat per un desbordament d'enters a la funció stralloc_readyplus(), que es pot produir quan es processa un missatge molt gran. El funcionament requeria un sistema de 64 bits amb més de 4 GB de memòria virtual. Quan la vulnerabilitat es va analitzar originalment l'any 2005, Daniel J. Bernstein va argumentar que la suposició al codi que la mida de la matriu assignada està sempre dins del valor de 32 bits es basa en el fet que ningú proporciona gigabytes de memòria a cada procés. Durant els últims 15 anys, els sistemes de 64 bits dels servidors han substituït els sistemes de 32 bits, i la quantitat de memòria subministrada i l'amplada de banda de la xarxa han augmentat dràsticament.

Els responsables del paquet qmail van tenir en compte la nota de Bernstein i van limitar la memòria disponible en iniciar el procés qmail-smtpd (per exemple, a Debian 10 el límit s'estableix en 7 MB). Però els enginyers de Qualys van trobar que això no n'hi ha prou i, a més de qmail-smtpd, es pot dur a terme un atac remot al procés qmail-local, que va romandre sense restriccions en tots els paquets provats. Com a prova, es va preparar un prototip d'explotació adequat per atacar el paquet Debian amb qmail en la configuració per defecte.
Per organitzar l'execució de codi remota durant un atac, el servidor requereix 4 GB d'espai lliure en disc i 8 GB de RAM.
L'explotació us permet executar qualsevol ordre d'intèrpret d'ordres amb els drets de qualsevol usuari del sistema, excepte els usuaris root i del sistema que no tenen el seu propi subdirectori al directori "/home" (el procés qmail-local s'inicia amb els drets de l'usuari local a qui es realitza el lliurament).

L'atac es porta a terme
mitjançant l'enviament d'un missatge de correu molt gran, incloses diverses línies de capçalera, que mesura aproximadament 4 GB i 576 MB. El processament d'aquesta cadena a qmail-local provoca un desbordament d'enters quan s'intenta lliurar un missatge a l'usuari local. Un desbordament d'enteres provoca un desbordament de memòria intermèdia quan es copien dades i la possibilitat de sobreescriure les pàgines de memòria amb codi libc. Mitjançant la manipulació de la disposició de les dades transmeses, també és possible reescriure l'adreça de la funció “open()”, substituint-la per l'adreça de la funció “system()”.

A continuació, en el procés de crida a qmesearch() a qmail-local, s'obre el fitxer ".qmail-extension" mitjançant la funció open(), que condueix a l'execució real de la funció.
system(".qmail-extension"). Però com que la part "extensió" del fitxer es genera en funció de l'adreça del destinatari (per exemple, "localuser-extension@localdomain"), els atacants poden organitzar que l'ordre s'enviï especificant l'usuari "localuser-;command". ;@localdomain” com a destinatari del missatge.

Durant l'anàlisi del codi, també es van identificar dues vulnerabilitats al pedaç addicional qmail-verify, que forma part del paquet per a Debian. Primera vulnerabilitat (CVE-2020-3811) us permet ometre la verificació de l'adreça de correu electrònic i el segon (CVE-2020-3812) condueix a la filtració d'informació local. En particular, la primera vulnerabilitat us permet ometre la verificació de la correcció de l'adreça utilitzada en l'explotació per enviar una ordre (la verificació no funciona per a adreces sense domini, com ara "localuser-;command;"). La segona vulnerabilitat es pot utilitzar per comprovar la presència de fitxers i directoris al sistema, inclosos els accessibles només per a root (qmail-verify s'executa amb drets d'arrel), mitjançant una trucada directa al controlador local.

Per solucionar el problema, Bernstein va recomanar executar processos de qmail amb un límit total de memòria disponible ("softlimit -m12345678"), en aquest cas el problema es bloqueja. Com a mètode alternatiu de protecció, també s'esmenta la limitació de la mida màxima del missatge processat mitjançant el fitxer "control/databytes" (per defecte no es crea amb la configuració predeterminada qmail segueix sent vulnerable). A més, "control/databytes" no protegeix contra atacs locals dels usuaris del sistema, ja que el límit només el té en compte qmail-smtpd.

El problema afecta el paquet netqmail, inclòs als repositoris de Debian. S'ha preparat un conjunt de pedaços per a aquest paquet, eliminant tant vulnerabilitats antigues del 2005 (afegint límits de memòria dura al codi de funció alloc()) com nous problemes a qmail-verify. Per separat preparat versió actualitzada del pedaç qmail-verify. Desenvolupadors branques notqmail van preparar els seus propis pedaços per bloquejar problemes antics i també van començar a treballar per eliminar tots els possibles desbordaments d'enters al codi.

Font: opennet.ru

Afegeix comentari