Kritisk sÄrbarhet i Exim som möjliggör kodexekvering pÄ server med root-rÀttigheter

I e-postservern Exim upptÀcktes kritisk sÄrbarhet (CVE-2019-10149), vilket kan leda till fjÀrrkodexekvering pÄ servern med root-rÀttigheter vid behandling av speciellt formaterade förfrÄgningar. Utnyttjande av problemet har noterats i versioner frÄn 4.87 till och med 4.91 eller i byggnader med alternativet EXPERIMENTAL_EVENT.

I standardkonfigurationen kan attacken utföras utan ytterligare komplikationer av en lokal anvÀndare, eftersom ACL "verify = recipient" anvÀnds, vilket utför ytterligare kontroller för externadresser. En fjÀrrattack kan genomföras vid förÀndring av instÀllningar, till exempel nÀr den fungerar som en sekundÀr MX för en annan domÀn, genom att ta bort ACL "verify = recipient" eller specifika Àndringar i local_part_suffix). En fjÀrrattack Àr ocksÄ möjlig om angriparen kan hÄlla anslutningen till servern öppen under 7 dagar (till exempel genom att skicka en byte per minut för att kringgÄ timeout-avbrott). Det utesluts inte att det finns enklare vektorer för attack för att utnyttja problemet pÄ distans.

SÄrbarheten orsakas av felaktig kontroll av mottagaradressen i funktionen deliver_message(), definierad i filen /src/deliver.c. Genom att manipulera formatet pÄ adressen kan angriparen fÄ sina uppgifter att sÀttas in i argumenten för kommandot som anropas via funktionen execv() med root-rÀttigheter. För att utnyttja detta krÀvs inga komplicerade tekniker som anvÀnds vid buffertöverskridningar eller minneskorruption, det rÀcker med att bara sÀtta in tecken.

Problemet Àr kopplat till anvÀndningen av konstruktionen för att omvandla adresser:

deliver_localpart = expand_string(
string_sprintf("${local_part:%s}", new->address));
deliver_domain = expand_string(
string_sprintf("${domain:%s}", new->address));

Funktionen expand_string() Ă€r en överkomplicerad maskin, bland annat kĂ€nner den igen kommandot "${run{kommando argument}" som leder till att en extern bearbetare startas. DĂ€rför Ă€r det tillrĂ€ckligt för en lokal anvĂ€ndare under SMTP-sessionen att skicka ett kommando av typen 'RCPT TO "username+${run{
}}@localhost"', dĂ€r localhost Ă€r en av vĂ€rdarna i listan local_domains, och username Ă€r namnet pĂ„ en befintlig lokal anvĂ€ndare.

Om servern fungerar som en e-postrelay rĂ€cker det att skicka kommandot 'RCPT TO "${run{
}}@relaydomain.com"', dĂ€r relaydomain.com Ă€r en av vĂ€rdarna som listas i instĂ€llningarna för relay_to_domains. Eftersom privilegiefri lĂ€ge (deliver_drop_privilege = false) som standard inte tillĂ€mpas i exim, kommer kommandon som skickas via "${run{
}}" att utföras med root-behörigheter.

Det Àr vÀrt att notera att sÄrbarheten var har ÄtgÀrdats i version 4.92 som slÀpptes i februari utan att uppmÀrksamma att ÄtgÀrden kan leda till sÀkerhetsproblem. Det finns ingen anledning att tro att det skett en avsiktlig tÀckning av sÄrbarheten av Exims utvecklare, eftersom problemet ÄtgÀrdades under ÄtgÀrden för en krasch som uppstÄr vid överföring av felaktiga adresser, och sÄrbarheten upptÀcktes av Qualys under en revision av Àndringar i Exim.

ÅtgĂ€rden för tidigare versioner, som fortfarande anvĂ€nds i distributioner, finns hittills endast i form av en patch. Korrigerande versioner för tidigare grenar som Ă„tgĂ€rdar problemet planeras den 11 juni. Paketuppdateringar har förberetts för Debian, Ubuntu, openSUSE. Arch Linux och Fedora levererar version 4.92, dĂ€r problemet inte yttrar sig. RHEL och CentOS Ă€r inte pĂ„verkade, eftersom Exim inte ingĂ„r i deras officiella paketrepository.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster