Circatori di sicurezza di Qualys
U prublema hè causatu da un overflow integer in a funzione stralloc_readyplus (), chì pò accade quandu si tratta un missaghju assai grande. L'operazione necessitava un sistema di 64-bit cù più di 4GB di memoria virtuale. Quandu a vulnerabilità hè stata analizata in u 2005, Daniel J. Bernstein hà sustinutu chì l'assunzione in u codice chì a dimensione di l'array assignata hè sempre in u valore di 32-bit hè basatu annantu à u fattu chì nimu ùn furnisce gigabytes di memoria à ogni prucessu. In l'ultimi 15 anni, i sistemi 64-bit in i servitori anu rimpiazzatu i sistemi 32-bit, è a quantità di memoria furnita è a larghezza di banda di a rete anu aumentatu dramaticamente.
I mantenitori di u pacchettu qmail anu pigliatu a nota di Bernstein in contu è limitanu a memoria dispunibule quandu principia u prucessu qmail-smtpd (per esempiu, in Debian 10 u limitu hè stabilitu à 7MB). Ma l'ingegneri di Qualys anu truvatu chì questu ùn hè micca abbastanza è, in più di qmail-smtpd, un attaccu remota pò esse realizatu nantu à u prucessu qmail-local, chì restava senza restrizioni in tutti i pacchetti pruvati. Comu prova, un prototipu di sfruttamentu hè statu preparatu chì era adattatu per attaccà u pacchettu Debian cù qmail in a cunfigurazione predeterminata.
Per urganizà l'esekzione di codice remota durante un attaccu, u servitore necessita 4GB di spaziu di discu liberu è 8GB di RAM.
U sfruttamentu permette di eseguisce qualsiasi cumandamenti di shell cù i diritti di qualsiasi utilizatore in u sistema, eccettu per l'utilizatori di root è di u sistema chì ùn anu micca u so propiu subdirectory in u cartulare "/home" (u prucessu qmail-local hè lanciatu cù i diritti). di l'utilizatore locale à quale a consegna hè fatta).
L'attaccu hè realizatu
attraversu l'inviu di un missaghju di mail assai grande, cumprese parechje linee d'intestazione, chì misura circa 4GB è 576MB. Trattamentu di una tale stringa in qmail-local risulta in un overflow integer quandu si prova di trasmette un missaghju à l'utilizatore locale. Un overflow integer allora porta à un buffer overflow quandu copia dati è a pussibilità di sovrascrive e pagine di memoria cù u codice libc. Manipulendu u layout di e dati trasmessi, hè ancu pussibule di riscrive l'indirizzu di a funzione "open()", rimpiazzà cù l'indirizzu di a funzione "system()".
Dopu, in u prucessu di chjamà qmesearch () in qmail-local, u schedariu ".qmail-extension" hè apertu à traversu a funzione open (), chì porta à l'esekzione attuale di a funzione.
system(".qmail-extension"). Ma siccomu a parte "estensione" di u schedariu hè generata basatu annantu à l'indirizzu di u destinatariu (per esempiu, "localuser-extension@localdomain"), l'attaccanti ponu organizà u cumandamentu per esse mandatu per eseguisce specificendu l'utilizatore "localuser-;command". ;@localdomain" cum'è u destinatariu di u messagiu.
Durante l'analisi di codice, duie vulnerabilità sò state identificate ancu in u patch qmail-verify supplementu, chì face parte di u pacchettu per Debian. Prima vulnerabilità (
Per trattà u prublema, Bernstein hà cunsigliatu di eseguisce i prucessi qmail cù un limitu tutale di memoria dispunibule ("softlimit -m12345678"), in quale casu u prublema hè bluccatu. Comu un metudu alternativu di prutezzione, limità a dimensione massima di u missaghju processatu attraversu u schedariu "control / databytes" hè ancu mintuatu (per difettu ùn hè micca creatu cù paràmetri predeterminati, qmail resta vulnerabile). Inoltre, "control / databytes" ùn prutege micca contru l'attacchi lucali da l'utilizatori di u sistema, postu chì u limitu hè solu cunsideratu in qmail-smtpd.
U prublema afecta u pacchettu
Source: opennet.ru