Fjernudnyttelig sårbarhed i qmail-mailserveren

Sikkerhedsforskere fra Qualys show lejlighed operation sårbarheder i qmail-mailserveren, berømt tilbage i 2005 (CVE-2005-1513), men forblev upatchet, fordi forfatteren af ​​qmail hævdede, at det var urealistisk at skabe en fungerende udnyttelse, der kunne bruges til at angribe systemer i standardkonfigurationen. Qualys var i stand til at forberede en udnyttelse, der modbeviser denne antagelse og tillader en at starte fjernudførelse af kode på serveren ved at sende en specialdesignet besked.

Problemet er forårsaget af et heltalsoverløb i stralloc_readyplus()-funktionen, som kan opstå ved behandling af en meget stor besked. Betjening krævede et 64-bit system med mere end 4 GB virtuel hukommelse. Da sårbarheden oprindeligt blev analyseret i 2005, argumenterede Daniel J. Bernstein for, at antagelsen i koden om, at størrelsen af ​​det allokerede array altid er inden for 32-bit værdi, er baseret på, at ingen leverer gigabyte hukommelse til hver proces. I løbet af de sidste 15 år har 64-bit systemer på servere erstattet 32-bit systemer, og mængden af ​​leveret hukommelse og netværksbåndbredde er steget dramatisk.

Vedligeholderne af qmail-pakken tog Bernsteins notat i betragtning og begrænsede den tilgængelige hukommelse, da de startede qmail-smtpd-processen (for eksempel i Debian 10 er grænsen sat til 7MB). Men ingeniører fra Qualys fandt ud af, at dette ikke er nok, og ud over qmail-smtpd kan et fjernangreb udføres på qmail-local-processen, som forblev ubegrænset i alle testede pakker. Som bevis blev der udarbejdet en exploit-prototype, der var egnet til at angribe Debian-pakken med qmail i standardkonfigurationen.
For at organisere fjernudførelse af kode under et angreb kræver serveren 4 GB ledig diskplads og 8 GB RAM.
Udnyttelsen giver dig mulighed for at køre enhver shell-kommando med rettighederne for enhver bruger i systemet, undtagen for root- og systembrugere, der ikke har deres egen undermappe i "/home"-mappen (qmail-local-processen startes med rettighederne af den lokale bruger, til hvem leveringen udføres).

Angrebet udføres
ved at sende en meget stor postbesked, inklusive flere header-linjer, der måler ca. 4GB og 576MB. Behandling af en sådan streng i qmail-local resulterer i et heltalsoverløb, når man forsøger at levere en besked til den lokale bruger. Et heltalsoverløb fører så til et bufferoverløb ved kopiering af data og muligheden for at overskrive hukommelsessider med libc-kode. Ved at manipulere layoutet af de transmitterede data er det også muligt at omskrive adressen på funktionen "open()" og erstatte den med adressen på funktionen "system()".

Dernæst, i processen med at kalde qmesearch() i qmail-local, åbnes filen ".qmail-extension" gennem funktionen open(), hvilket fører til den faktiske udførelse af funktionen
system(".qmail-udvidelse"). Men da "udvidelses"-delen af ​​filen er genereret baseret på modtagerens adresse (for eksempel "localuser-extension@localdomain"), kan angribere sørge for, at kommandoen sendes til at køre ved at angive brugeren "localuser-;command ;@localdomain" som modtager af beskeden.

Under kodeanalysen blev to sårbarheder også identificeret i den ekstra qmail-verify patch, som er en del af pakken til Debian. Første sårbarhed (CVE-2020-3811) giver dig mulighed for at omgå bekræftelse af e-mailadresse, og den anden (CVE-2020-3812) fører til lækage af lokal information. Især giver den første sårbarhed dig mulighed for at omgå verifikationen af ​​rigtigheden af ​​den adresse, der bruges i udnyttelsen til at sende en kommando (verifikationen virker ikke for adresser uden et domæne, såsom "localuser-;command;"). Den anden sårbarhed kan bruges til at kontrollere tilstedeværelsen af ​​filer og mapper på systemet, inklusive dem, der kun er tilgængelige for root (qmail-verify kører med root-rettigheder), gennem et direkte opkald til den lokale handler.

For at omgå problemet anbefalede Bernstein at køre qmail-processer med en samlet begrænsning på tilgængelig hukommelse ("softlimit -m12345678"), i hvilket tilfælde problemet er blokeret. Som en alternativ beskyttelsesmetode nævnes også begrænsning af den maksimale størrelse af den behandlede meddelelse gennem "control/databytes"-filen (som standard er den ikke oprettet med standardindstillinger qmail forbliver sårbar). Derudover beskytter "control/databytes" ikke mod lokale angreb fra systembrugere, da grænsen kun tages i betragtning af qmail-smtpd.

Problemet påvirker pakken netqmail, inkluderet i Debian-lagrene. Et sæt patches er blevet forberedt til denne pakke, der eliminerer både gamle sårbarheder fra 2005 (ved at tilføje grænser for hård hukommelse til alloc() funktionskoden) og nye problemer i qmail-verify. Separat forberedt opdateret version af qmail-verify-patchen. Udviklere grene notqmail forberedte deres egne patches for at blokere gamle problemer, og begyndte også at arbejde på at eliminere alle mulige heltalsoverløb i koden.

Kilde: opennet.ru

Tilføj en kommentar