Qualys säkerhetsforskare har visat möjligheten att utnyttja en sårbarhet i qmail-servern, känd sedan 2005 (CVE-2005-1513), men inte korrigerad, sedan qmail hävdade att det var orealistiskt att skapa en fungerande exploatering som kan användas för att attackera system i standardkonfigurationen.
Men det verkar som om qmail-utvecklarna de hade fel, eftersom Qualys lyckades förbereda en exploatering vilket motbevisar detta antagande och gör det möjligt att starta fjärrkörning av kod på servern genom att skicka ett speciellt utformat meddelande.
Problemet orsakas av ett överflöde i stralloc_readyplus () -funktionen, vilket kan uppstå när ett mycket stort meddelande bearbetas. För operationen krävdes ett 64-bitars system med en virtuell minneskapacitet på mer än 4 GB.
I den initiala sårbarhetsanalysen 2005 hävdade Daniel Bernstein att antagandet i koden att storleken på den tilldelade matrisen alltid passar ett 32-bitarsvärde baseras på det faktum att ingen tillhandahåller gigabyte minne till varje process.
Under de senaste 15 åren har 64-bitars system på servrar ersatt 32-bitars system, mängden minne som tillhandahålls och nätverksbandbredden har ökat dramatiskt.
Paketen som åtföljer qmail tog hänsyn till Bernsteins kommentar och när du startar qmail-smtpd-processen begränsade de tillgängligt minne (Till exempel, på Debian 10 sattes gränsen till 7 MB).
Men Qualys ingenjörer upptäckte att detta inte räcker och förutom qmail-smtpd kan en fjärranfall utföras på den qmail-lokala processen, som förblev obegränsad på alla testade paket.
Som bevis förbereddes en exploateringsprototyp, vilket är lämpligt för att attackera det Debian-levererade paketet med qmail i standardkonfigurationen. För att organisera fjärrkörning av kod under en attack, servern kräver 4 GB ledigt diskutrymme och 8 GB RAM.
Utnyttjandet gör det möjligt att utföra alla kommandon skal med rättigheterna för alla användare på systemet, förutom root- och systemanvändare som inte har sin egen underkatalog i katalogen "/ home"
Attacken utförs genom att skicka ett mycket stort e-postmeddelande, som innehåller flera rader i sidhuvudet, ungefär 4 GB och 576 MB i storlek.
Vid bearbetning av nämnda rad i qmail-local Ett heltalsöverskott inträffar när du försöker leverera ett meddelande till en lokal användare. Ett heltalsöverflöde leder sedan till ett buffertöverflöde när du kopierar data och möjligheten att skriva över minnessidor med libc-kod.
Vid uppringning av qmesearch () på qmail-local öppnas också filen ".qmail-extension" via funktionen open (), vilket leder till att systemet faktiskt startas (". Qmail-extension"). Men eftersom en del av filen "förlängning" bildas baserat på mottagarens adress (till exempel "localuser-extension @ localdomain") kan angripare organisera början på kommandot genom att ange användaren "localuser-;" kommando; @localdomain »som mottagare av meddelandet.
Analys av koden avslöjade också två sårbarheter i den ytterligare korrigeringen kontroll av qmail, som ingår i Debian-paketet.
- Den första sårbarheten (CVE-2020-3811) möjliggör förbikoppling av verifiering av e-postadresser, och den andra (CVE-2020-3812) leder till en lokal informationsläcka.
- Den andra sårbarheten kan användas för att verifiera förekomsten av filer och kataloger i systemet, inklusive de som endast är tillgängliga för root (qmail-verifiering börjar med root-behörigheter) genom ett direkt samtal till den lokala drivrutinen.
En uppsättning korrigeringsfiler har förberetts för detta paket, vilket eliminerar gamla sårbarheter från 2005 genom att lägga till hårda minnesgränser i alloc () -funktionskoden och nya problem i qmail.
Dessutom utarbetades en uppdaterad version av qmail-korrigeringen separat. Utvecklarna av notqmail-versionen förberedde sina korrigeringar för att blockera gamla problem och började också arbeta för att eliminera alla möjliga heltalsflöden i koden.
Fuente: https://www.openwall.com/