Op afstand uitvoerbare kwetsbaarheid in de mailserver qmail

Beveiligingsonderzoekers van Qualys aangetoond de mogelijkheid uitbuiting kwetsbaarheden in de mailserver qmail, het beroemde al sinds 2005 (CVE-2005-1513), maar nog steeds niet verholpen omdat de auteur van qmail de onrealistische opvatting had dat het maken van een werkende exploit voor aanvallen op systemen met de standaardconfiguratie niet mogelijk was. Bij Qualys is het gelukt om een exploit voor te bereiden die dit idee weerlegt en waarmee op afstand code kan worden uitgevoerd op de server door het verzenden van een speciaal opgemaakt bericht.

Het probleem wordt veroorzaakt door een integer overflow in de functie stralloc_readyplus(), die kan optreden bij de verwerking van een zeer groot bericht. Voor exploiteren was een 64-bits systeem met meer dan 4 GB aan virtueel geheugen vereist. Bij de eerste analyse van de kwetsbaarheid in 2005 beweerde Daniel Bernstein dat de aanname in de code dat de grootte van de toegewezen array altijd binnen 32-bits waarde valt, voortkwam uit het idee dat niemand gigabytes aan geheugen aan elke proces ter beschikking stelt. In de afgelopen 15 jaar hebben 64-bits systemen de 32-bits systemen op servers verdrongen, zijn de hoeveelheden geleverde geheugen drastisch toegenomen en is de netwerksnelheid toegenomen.

De bijbehorende pakketten met qmail hebben de opmerking van Bernstein meegenomen en beperkten bij het starten van het qmail-smtpd-proces het beschikbare geheugen (bijvoorbeeld in Debian 10 is er een limiet van 7 MB ingesteld). Maar ingenieurs van Qualys ontdekten dat dit niet genoeg was en dat naast qmail-smtpd een externe aanval ook kon worden uitgevoerd op het qmail-local-proces, dat in alle gecontroleerde pakketten onbeperkt bleef. Ter bewijs is er een prototype-exploit ontwikkeld dat kan worden gebruikt voor een aanval op het in Debian geleverde qmail-pakket met de standaardconfiguratie.
Om op afstand code uit te voeren tijdens de aanval is er 4 GB vrije schijfruimte en 8 GB RAM op de server vereist.
De exploit maakt het mogelijk om willekeurige shell-opdrachten uit te voeren met de rechten van elke gebruiker in het systeem, behalve root en systeemgebruikers die geen eigen subdirectory in de directory '/home' hebben (het qmail-local-proces wordt uitgevoerd met de rechten van de lokale gebruiker aan wie de aflevering plaatsvindt).

De aanval wordt uitgevoerd
door het verzenden van een zeer groot e-mailbericht, inclusief meerdere regels in de header, met een grootte van ongeveer 4GB en 576MB. Het verwerken van een dergelijke regel in qmail-local leidt tot een integer overflow bij het proberen te bezorgen van het bericht aan een lokale gebruiker. De integer overflow leidt vervolgens tot een buffer overflow tijdens het kopiƫren van gegevens en de mogelijkheid om geheugensegmenten te overschrijven met libc-code. Door manipulatie van de indeling van de verzonden gegevens is het ook mogelijk om het adres van de functie 'open()' te overschrijven, door het te vervangen door het adres van de functie 'system()'.

Verder vindt tijdens het aanroepen van qmesearch() in qmail-local het openen van het bestand '.qmail-extension' plaats via de functie open(), wat leidt tot de daadwerkelijke uitvoering van de functie
system('.qmail-extension'). Maar aangezien een deel van het bestand 'extension' is gebaseerd op het adres van de ontvanger (bijvoorbeeld 'localuser-extension@localdomain'), kunnen aanvallers een commando verzenden om uit te voeren door 'localuser-;command;@localdomain' als ontvanger van het bericht op te geven.

Bij de analyse van de code zijn ook twee kwetsbaarheden ontdekt in de aanvullende patch qmail-verify, die deel uitmaakt van het pakket voor Debian. De eerste kwetsbaarheid (CVE-2020-3811) stelt in staat om de controle van e-mailadressen te omzeilen, en de tweede (CVE-2020-3812) leidt tot een lek van lokale informatie. In het bijzonder stelt de eerste kwetsbaarheid in staat om de controle op geldigheid van het adres, dat in de exploit wordt gebruikt om het commando over te dragen, te omzeilen (de controle werkt niet voor adressen zonder domein, zoals 'localuser-;command;'). De tweede kwetsbaarheid kan worden gebruikt om de aanwezigheid van bestanden en mappen in het systeem te controleren, inclusief die alleen toegankelijk zijn voor root (qmail-verify wordt met root-rechten uitgevoerd) via directe toegang tot de lokale handler.

Om het probleem te omzeilen, adviseerde Bernstein om qmail-processen te starten met een algemene limiet voor het beschikbare geheugen ('softlimit -m12345678'), en in dat geval wordt het probleem geblokkeerd. Als alternatieve beschermingsmethoden wordt ook vermeld het beperken van de maximale grootte van de verwerkte berichten via het bestand 'control/databytes' (standaard niet aangemaakt bij de standaardinstellingen blijft qmail kwetsbaar). Bovendien biedt 'control/databytes' geen bescherming tegen lokale aanvallen van gebruikers van het systeem, omdat de beperking alleen wordt toegepast in qmail-smtpd.

Het probleem betreft het pakket netqmail, opgenomen in de Debian-repositories. Voor dit pakket is een reeks patches voorbereid die zowel oude kwetsbaarheden uit 2005 verhelpt (door harde geheugengrenzen toe te voegen aan de alloc() functie) als nieuwe problemen in qmail-verify aanpakt. Apart voorbereid de bijgewerkte versie van de qmail-verify patch. De ontwikkelaars de tak notqmail hebben hun patches voorbereid om oude problemen te blokkeren en hebben ook gewerkt aan het oplossen van alle mogelijke integer-overflows in de code.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster