Sekuriteitsnavorsers van Qualys
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 (
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
Bron: opennet.ru