Sikkerhedsforskere fra firmaet Qualys mulighed sårbarheder i mailserveren qmail, siden 2005 (CVE-2005-1513), men har forblevet udbedret, da forfatteren af qmail hævdede, at det var urealistisk at skabe en fungerende udnyttelse, der kunne anvendes til at angribe systemer i standardkonfiguration. I Qualys lykkedes det at forberede en udnyttelse, der modbeviser denne antagelse og muliggør initiativet til fjernudførelse af kode på serveren ved at sende en specielt udformet besked.
Problemet skyldes et integer overflow i funktionen stralloc_readyplus(), som kan opstå ved behandling af en meget stor besked. For at udnytte dette kræves et 64-bit system med mere end 4 GB virtuel hukommelse. Ved den første analyse af sårbarheden i 2005 hævdede Daniel Bernstein, at den antagelse i koden, at størrelsen af det allokerede array altid ligger inden for et 32-bit værdi, er baseret på, at ingen giver gigabyte hukommelse til hver proces. I løbet af de seneste 15 år har 64-bit systemer på servere udkonkurreret 32-bit, mens mængden af leveret hukommelse og netværksbåndbredde er steget markant.
De medfølgende pakker med qmail tog Bernsteins kommentar i betragtning, og ved opstart af processen qmail-smtpd begrænsede de den tilgængelige hukommelse (for eksempel er der i Debian 10 et loft på 7 MB). Men ingeniører fra Qualys fandt ud af, at dette ikke var tilstrækkeligt, og at en fjernangreb også kunne udføres på qmail-local processen, som i alle kontrollerede pakker forblev uden begrænsninger. Som bevis blev der udviklet en prototypeudnyttelse, der er egnet til at angribe den Debian-pakke med qmail i standardkonfiguration.
For at organisere fjernudførelse af kode under angrebet kræves der 4 GB ledig diskplads og 8 GB RAM på serveren.
Udnyttelsen tillader at køre vilkårlige shell-kommandoer med rettighederne af enhver bruger i systemet, undtagen root og systembrugere, der ikke har deres eget underkatalog i «/home»-kataloget (qmail-local processen køres med de lokale brugeres rettigheder, som leveres til).
Angrebet udføres
gennem afsendelse af en meget stor e-mail, der inkluderer flere linjer i overskriften, med en størrelse på omkring 4 GB og 576 MB. Behandling af en sådan linje i qmail-local fører til integer overflow ved forsøget på at levere beskeden til en lokal bruger. Integer overflow fører herefter til buffer overflow under kopiering af data og muligheden for at overskrive hukommelsessider med libc-kode. Gennem manipulation af layoutet af de sendte data er det muligt at overskrive adressen til funktionen "open()" og erstatte den med adressen til funktionen "system()".
Dernæst, under kaldet til qmesearch() i qmail-local, åbnes filen ".qmail-extension" gennem funktionen open(), hvilket fører til faktisk eksekvering af funktionen
system(".qmail-extension"). Men da en del af filen "extension" dannes baseret på modtagerens adresse (for eksempel "localuser-extension@localdomain"), kan angribere organisere kommandooverførsel ved at angive brugeren "localuser-;command;@localdomain" som modtageren af beskeden.
Under analyse af koden blev der også identificeret to sårbarheder i det ekstra patch qmail-verify, som er inkluderet i Debian-pakken. Den første sårbarhed () tillader omgåelse af e-mailadressekontrollen, og den anden () fører til lækage af lokal information. Især tillader den første sårbarhed omgåelse af kontrol af gyldigheden af adressen, der bruges i exploiten til kommandooverførsel (kontrollen aktiveres ikke for adresser uden domæne, såsom "localuser-;command;"). Den anden sårbarhed kan bruges til at kontrollere tilstedeværelsen af filer og mapper i systemet, herunder dem, der kun er tilgængelige for root (qmail-verify køres med root-rettigheder), gennem direkte adgang til den lokale behandler.
For at omgå problemet anbefalede Bernstein at køre qmail-processer med et fælles loft for tilgængelig hukommelse ("softlimit -m12345678"), og i så fald blokeres problemet. Som et alternativt beskyttelsesmiddel nævnes også begrænsning af den maksimale størrelse på den behandlede besked via filen "control/databytes" (som ikke oprettes som standard ved de standardindstillinger, qmail forbliver sårbar). Desuden beskytter "control/databytes" ikke mod lokale angreb fra systembrugere, da begrænsningen kun overvejes i qmail-smtpd.
Problemet vedrører pakken , som er en del af Debian-pakkerepositorierne. For denne pakke er der forberedt et sæt patches, der adresserer både gamle sårbarheder fra 2005 (ved at tilføje strenge hukommelsesgrænser i koden med funktionen alloc()) og nye problemer i qmail-verify. Separat den opdaterede version af qmail-verify patch. Udviklerne har forberedt deres patches til blokering af gamle problemer og har også påbegyndt arbejdet med at fjerne alle potentielle integer overflow fejl i koden.
Kilde: opennet.ru
