Kwetsberheden yn OpenSMTPD dy't tagong op ôfstân en lokale root tastean

It bedriuw Qualys Company iepenbiere in oare krityske kwetsberens op ôfstân (CVE-2020-8794) yn 'e e-posttsjinner Iepen SMTPD, ûntwikkele troch it OpenBSD-projekt. Lykas de ein fan jannewaris identifisearre kwetsberens, in nij probleem makket it mooglik om op ôfstân willekeurige shell-kommando's út te fieren op in server mei root-brûkersrjochten. Kwetsberens eliminearre yn issue Iepen SMTPD 6.6.4p1.

It probleem wurdt feroarsake troch in brek yn 'e koade dy't e-post leveret oan 'e e-posttsjinner op ôfstân (net yn 'e koade dy't ynkommende ferbiningen behannelet). De oanfal is mooglik sawol oan 'e kliïntkant as oan' e serverkant. Oan 'e kliïntkant is de oanfal mooglik yn' e standertkonfiguraasje fan OpenSMTPD, wêryn OpenSMTPD allinich oanfragen akseptearret op 'e ynterne netwurkynterface (localhost) en stjoert e-postberjochten nei eksterne tsjinners. Om de kwetsberens te eksploitearjen, is it genôch dat OpenSMTPD, tidens de levering fan in brief, in sesje fêststelt mei in e-posttsjinner kontrolearre troch de oanfaller, of dat de oanfaller yn 'e kliïntferbining kin wigge (MITM of trochferwizing by oanfallen fia DNS of BGP) ).

Foar in oanfal oan 'e tsjinner moat OpenSMTPD konfigurearre wurde om eksterne netwurkoanfragen fan oare e-posttsjinners te ûntfangen of tsjinsten fan tredden te tsjinjen wêrmei jo in fersyk kinne stjoere nei in willekeurige e-post (bygelyks adresbefêstigingsformulieren op websiden). Bygelyks, in oanfaller kin ferbine mei de OpenSMTPD-tsjinner en stjoer in ferkearde brief (nei in net-besteande brûker), dy't sil liede ta in antwurd stjoeren fan in brief mei in flaterkoade (bounce) nei de oanfaller syn tsjinner. In oanfaller kin de kwetsberens benutte as OpenSMTPD ferbynt om in notifikaasje te leverjen oan de tsjinner fan de oanfaller. De shell-kommando's dy't yn 'e oanfal ynjeksje wurde pleatst yn in bestân dat wurdt útfierd mei root-rjochten as OpenSMTPD opnij starte, sadat de oanfaller wachtsje moat op OpenSMTPD om opnij te begjinnen of in crash fan OpenSMTPD te begjinnen om de oanfal te foltôgjen.

It probleem is oanwêzich yn 'e funksje mta_io () yn' e koade foar it parsearjen fan 'e multiline-antwurd weromjûn troch de tsjinner op ôfstân nei in ferbining is oprjochte (Bygelyks "250-ENHANCEDSTATUSCODES" en "250 HELP"). OpenSMTPD berekkent dat de earste rigel in trije-sifers nûmer en tekst omfettet skieden troch in "-" karakter, en de twadde rigel befettet in trije-sifers nûmer en tekst skieden troch in spaasje. As in trijesifers nûmer net folge wurdt troch in spaasje en tekst yn 'e twadde rigel, wurdt de oanwizer dy't brûkt wurdt om de tekst te definiearjen ynsteld op de byte nei it '\0' karakter en wurdt besocht de gegevens nei it ein te kopiearjen fan de line yn de buffer.

Op fersyk fan it OpenBSD-projekt is de publikaasje fan details oer de eksploitaasje fan 'e kwetsberens útsteld oant febrewaris 26th om brûkers har systemen te aktualisearjen. It probleem is oanwêzich yn 'e codebase sûnt desimber 2015, mar eksploitaasje foar útfiering fan koade mei root-privileges is sûnt maaie 2018 mooglik. De ûndersikers hawwe in wurkjend prototype makke fan 'e eksploitaasje, dy't mei súkses waard hifke yn OpenSMTPD-builds foar OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testen) en Fedora 31.

Yn OpenSMTPD ek identifisearre In oare kwetsberens (CVE-2020-8793) wêrtroch in lokale brûker de earste rigel fan elk bestân op it systeem kin lêze. Jo kinne bygelyks de earste rigel fan /etc/master.passwd lêze, dy't de wachtwurdhash fan 'e root-brûker befettet. De kwetsberens lit jo ek de hiele ynhâld lêze fan in bestân dat eigendom is fan in oare brûker as dit bestân yn itselde bestânsysteem leit as de map /var/spool/smtpd/. It probleem is net eksploitabel op in protte Linux-distribúsjes wêr't de wearde fan /proc/sys/fs/protected_hardlinks is ynsteld op 1.

It probleem is in gefolch fan ûnfolsleine eliminaasje problemen, útsprutsen tidens de kontrôle útfierd troch Qualys yn 2015. In oanfaller kin de útfiering fan syn koade berikke mei de rjochten fan 'e groep "_smtpq" troch de fariabele "PATH=." yn te stellen. en it pleatsen fan in skript neamd makemap yn 'e aktuele map (it smtpctl-hulpprogramma rint makemap sûnder eksplisyt it paad oan te jaan). Troch tagong te krijen ta de groep "_smtpq" kin de oanfaller dan in racebetingst feroarsaakje (in grut bestân oanmeitsje yn 'e offline map en in SIGSTOP-sinjaal stjoere) en foardat it ferwurkjen foltôge is, it bestân yn 'e offline map ferfange mei in hurde symlink dy't wiist nei it doeltriem wêrfan de ynhâld lêzen wurde moat.

It is opmerklik dat yn Fedora 31 de kwetsberens jo direkt de privileezjes fan 'e rootgroep kinne krije, om't it smtpctl-proses is foarsjoen fan de setgid-rootflagge, ynstee fan de setgid smtpq-flagge. Troch tagong te krijen ta de root-groep kinne jo de ynhâld fan /var/lib/sss/mc/passwd oerskriuwe en folsleine root tagong krije ta it systeem.

Boarne: opennet.ru

Add a comment