Qualys Maatskappy
Die probleem word veroorsaak deur 'n fout in die kode wat pos aan die afgeleë posbediener aflewer (nie in die kode wat inkomende verbindings hanteer nie). Die aanval is moontlik aan die kliëntkant sowel as aan die bedienerkant. Aan die kliëntkant is die aanval moontlik in die verstekkonfigurasie van OpenSMTPD, waarin OpenSMTPD versoeke slegs op die interne netwerkkoppelvlak (localhost) aanvaar en posboodskappe na eksterne bedieners stuur. Om die kwesbaarheid te ontgin, is dit genoeg dat, tydens die aflewering van 'n brief, OpenSMTPD 'n sessie met 'n e-posbediener wat deur die aanvaller beheer word tot stand bring, of dat die aanvaller in die kliëntverbinding kan inwig (MITM of herleiding tydens aanvalle via DNS of BGP) ).
Vir 'n bedienerkant-aanval moet OpenSMTPD gekonfigureer word om eksterne netwerkversoeke van ander posbedieners te ontvang of derdepartydienste te bedien wat jou toelaat om 'n versoek na 'n arbitrêre e-pos te stuur (byvoorbeeld adresbevestigingsvorms op webwerwe). Byvoorbeeld, 'n aanvaller kan aan die OpenSMTPD-bediener koppel en 'n verkeerde brief stuur (aan 'n nie-bestaande gebruiker), wat sal lei tot 'n reaksie wat 'n brief met 'n foutkode (weiering) na die aanvaller se bediener stuur. 'n Aanvaller kan die kwesbaarheid uitbuit wanneer OpenSMTPD koppel om 'n kennisgewing aan die aanvaller se bediener te lewer. Die dopopdragte wat tydens die aanval ingespuit word, word in 'n lêer geplaas wat met wortelregte uitgevoer word wanneer OpenSMTPD herbegin word, dus moet die aanvaller wag vir OpenSMTPD om te herbegin of 'n ongeluk van OpenSMTPD inisieer om die aanval te voltooi.
Die probleem is teenwoordig in die mta_io()-funksie in die kode vir die ontleding van die multilyn-antwoord wat deur die afgeleë bediener teruggestuur word nadat 'n verbinding tot stand gebring is (byvoorbeeld "250-ENHANCEDSTATUSCODES" en "250 HELP"). OpenSMTPD bereken dat die eerste reël 'n driesyfergetal en teks bevat wat deur 'n "-"-karakter geskei is, en die tweede reël bevat 'n driesyfergetal en teks geskei deur 'n spasie. As 'n driesyfergetal nie gevolg word deur 'n spasie en teks in die tweede reël nie, word die wyser wat gebruik word om die teks te definieer op die greep gestel wat volg op die '\0' karakter en 'n poging word aangewend om die data na die einde te kopieer van die lyn in die buffer.
Op versoek van die OpenBSD-projek is die publikasie van besonderhede oor die uitbuiting van die kwesbaarheid tot 26 Februarie uitgestel om gebruikers in staat te stel om hul stelsels op te dateer. Die probleem is sedert Desember 2015 in die kodebasis aanwesig, maar uitbuiting voor kode-uitvoering met wortelvoorregte is sedert Mei 2018 moontlik. Die navorsers het 'n werkende prototipe van die ontginning voorberei, wat suksesvol getoets is in OpenSMTPD-bou vir OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (toets) en Fedora 31.
Ook in OpenSMTPD
Die probleem is 'n gevolg van onvolledige uitskakeling
Dit is opmerklik dat die kwesbaarheid in Fedora 31 jou toelaat om onmiddellik die voorregte van die wortelgroep te verkry, aangesien die smtpctl-proses toegerus is met die setgid-wortelvlag, in plaas van die setgid smtpq-vlag. Deur toegang tot die wortelgroep te verkry, kan jy die inhoud van /var/lib/sss/mc/passwd oorskryf en volle worteltoegang tot die stelsel kry.
Bron: opennet.ru