Kwesbaarheid wat op afstand kan ontgin in die qmail-posbediener

Sekuriteitsnavorsers van Qualys show geleentheid uitbuiting kwesbaarhede in die qmail-posbediener, beroemde terug in 2005 (CVE-2005-1513), maar het onaangepas gebly omdat die skrywer van qmail aangevoer het dat dit onrealisties was om 'n werkende uitbuiting te skep wat gebruik kan word om stelsels in die verstekkonfigurasie aan te val. Qualys was in staat om 'n uitbuiting voor te berei wat hierdie aanname weerlê en 'n mens toelaat om afgeleë kode-uitvoering op die bediener te begin deur 'n spesiaal ontwerpte boodskap te stuur.

Die probleem word veroorsaak deur 'n heelgetal oorloop in die stralloc_readyplus() funksie, wat kan voorkom wanneer 'n baie groot boodskap verwerk word. Bediening het 'n 64-bis-stelsel met meer as 4 GB virtuele geheue vereis. Toe die kwesbaarheid oorspronklik in 2005 ontleed is, het Daniel J. Bernstein aangevoer dat die aanname in die kode dat die grootte van die toegekende skikking altyd binne 32-bis waarde is, gebaseer is op die feit dat niemand gigagrepe geheue aan elke proses verskaf nie. Oor die afgelope 15 jaar het 64-bis-stelsels op bedieners 32-bis-stelsels vervang, en die hoeveelheid verskafde geheue en netwerkbandwydte het dramaties toegeneem.

Die qmail-pakketonderhouers het Bernstein se nota in ag geneem en die beskikbare geheue beperk wanneer die qmail-smtpd-proses begin word (byvoorbeeld, Debian 10 stel 'n limiet van 7MB). Maar ingenieurs van Qualys het gevind dat dit nie genoeg is nie en, benewens qmail-smtpd, kan 'n afgeleë aanval op die qmail-local-proses uitgevoer word, wat onbeperk gebly het in alle getoetste pakkette. As bewys is 'n ontginningsprototipe voorberei wat geskik is om die Debian-pakket aan te val met qmail in die verstekkonfigurasie.
Om die uitvoering van afgeleë kode tydens 'n aanval te organiseer, benodig die bediener 4 GB vrye skyfspasie en 8 GB RAM.
Die ontginning laat jou toe om enige dop-opdragte uit te voer met die regte van enige gebruiker in die stelsel, behalwe vir wortel- en stelselgebruikers wat nie hul eie subgids in die "/home"-gids het nie (die qmail-local-proses word met die regte geloods van die plaaslike gebruiker aan wie aflewering uitgevoer word).

Die aanval word uitgevoer
deur 'n baie groot posboodskap te stuur, insluitend verskeie kopreëls, wat ongeveer 4GB en 576MB meet. Die verwerking van so 'n string in qmail-local lei tot 'n heelgetal oorloop wanneer 'n boodskap aan die plaaslike gebruiker probeer afgelewer word. 'n Heelgetal-oorloop lei dan tot 'n buffer-oorloop wanneer data gekopieer word en die moontlikheid om geheuebladsye met libc-kode te oorskryf. Deur die uitleg van die oorgedrade data te manipuleer, is dit ook moontlik om die adres van die "open()"-funksie te herskryf en dit te vervang met die adres van die "system()"-funksie.

Vervolgens, in die proses om qmesearch() in qmail-local te roep, word die lêer ".qmail-extension" deur die open() funksie oopgemaak, wat lei tot die werklike uitvoering van die funksie
stelsel(".qmail-uitbreiding"). Maar aangesien die "uitbreiding"-deel van die lêer gegenereer word op grond van die ontvanger se adres (byvoorbeeld, "localuser-extension@localdomain"), kan aanvallers reël dat die opdrag gestuur word om te loop deur die gebruiker "localuser-;opdrag" te spesifiseer ;@localdomain" as die ontvanger van die boodskap.

Tydens die kode-analise is twee kwesbaarhede ook geïdentifiseer in die bykomende qmail-verify-pleister, wat deel is van die pakket vir Debian. Eerste kwesbaarheid (CVE-2020-3811) laat jou toe om e-posadresverifikasie te omseil, en die tweede (CVE-2020-3812) lei tot lekkasie van plaaslike inligting. In die besonder, die eerste kwesbaarheid laat jou toe om die verifikasie van die korrektheid van die adres wat gebruik word in die uitbuiting te omseil om 'n opdrag te stuur (die verifikasie werk nie vir adresse sonder 'n domein, soos "localuser-;command;"). Die tweede kwesbaarheid kan gebruik word om die teenwoordigheid van lêers en gidse op die stelsel na te gaan, insluitend dié wat slegs toeganklik is vir wortel (qmail-verifieer lopies met wortelregte), deur 'n direkte oproep na die plaaslike hanteerder.

Om die probleem te omseil, het Bernstein aanbeveel dat qmail-prosesse uitgevoer word met 'n totale beperking op beskikbare geheue ("softlimit -m12345678"), in welke geval die probleem geblokkeer word. As 'n alternatiewe metode van beskerming word die beperking van die maksimum grootte van die verwerkte boodskap deur die "control/databytes"-lêer ook genoem (by verstek word dit nie geskep met verstekinstellings nie qmail bly kwesbaar). Boonop beskerm "beheer/datagrepe" nie teen plaaslike aanvalle van stelselgebruikers nie, aangesien die limiet slegs deur qmail-smtpd in ag geneem word.

Die probleem raak die pakket netqmail, ingesluit in die Debian-bewaarplekke. 'n Stel pleisters is vir hierdie pakket voorberei, wat beide ou kwesbaarhede vanaf 2005 uitskakel (deur harde geheue limiete by die alloc() funksiekode by te voeg) en nuwe probleme in qmail-verify. Afsonderlik voorberei opgedateerde weergawe van die qmail-verify-pleister. Ontwikkelaars takke nieqmail het hul eie pleisters voorberei om ou probleme te blokkeer, en het ook begin werk om alle moontlike heelgetal-oorvloeie in die kode uit te skakel.

Bron: opennet.ru

Voeg 'n opmerking