Di OpenSMTPD de qelsiyên ku destûr didin gihîştina root ya dûr û herêmî

Qualys Company eşkere kirin di servera nameyê de xisarek din a krîtîk a dûr (CVE-2020-8794) OpenSMTPD, ji hêla projeya OpenBSD ve hatî pêşve xistin. Mîna ya ku di dawiya Çile de hate nas kirin lawazbûn, pirsgirêkek nû gengaz dike ku ji dûr ve fermanên şêlê yên kêfî li ser serverek bi mafên bikarhênerê root re bêne bicîh kirin. Zehfbûn tasfiye kirin di meseleyê de OpenSMTPD 6.6.4p1.

Pirsgirêk ji ber xeletiyek di kodê de ye ku e-nameyê digihîne servera nameyê ya dûr (ne di koda ku girêdanên gihîştî de digire dest). Êrîş hem ji aliyê muwekîlê û hem jî li aliyê serverê mimkun e. Ji hêla xerîdar ve, êrîş di veavakirina xwerû ya OpenSMTPD de mimkun e, ku tê de OpenSMTPD tenê daxwazan li ser pêwendiya torê ya navxweyî (localhost) qebûl dike û peyamên e-nameyê ji serverên derveyî re dişîne. Ji bo îstismarkirina qelsiyê, bes e ku, di dema radestkirina nameyekê de, OpenSMTPD bi serverek e-nameyê re ku ji hêla êrîşkar ve tê kontrol kirin rûniştinek saz dike, an jî ku êrîşkar dikare têkeve pêwendiya xerîdar (MITM an di dema êrîşan de bi riya DNS an BGP veguhezîne. ).

Ji bo êrîşek ji hêla serverê ve, divê OpenSMTPD were mîheng kirin da ku daxwazên torê yên derveyî ji pêşkêşkerên nameyê yên din werbigire an karûbarên sêyemîn pêşkêşî bike ku dihêle hûn daxwazek ji e-nameyek kêfî re bişînin (mînak, formên pejirandina navnîşan li ser malperan). Mînakî, êrîşkarek dikare bi servera OpenSMTPD ve girêbide û nameyek nerast bişîne (ji bikarhênerek neheyî re), ku dê bibe sedema bersivek ku nameyek bi kodek xeletiyê (bounce) ji servera êrîşkar re bişîne. Dema ku OpenSMTPD bi hev ve girêdide da ku agahiyek pêşkêşî servera êrîşkar bike, êrîşkar dikare qelsiyê îstismar bike. Fermanên şêlê yên ku di dema êrîşê de têne derzî kirin di pelek ku bi mafên root ve têne darve kirin dema ku OpenSMTPD ji nû ve dest pê dike de têne bicîh kirin, ji ber vê yekê êrîşkar divê li bendê bimîne ku OpenSMTPD ji nû ve dest pê bike an têkçûnek OpenSMTPD bide destpêkirin da ku êrîşê temam bike.

Pirsgirêk di fonksiyona mta_io() de di kodê de heye ji bo parkirina bersiva pirhêl a ku ji hêla servera dûr ve hatî vegerandin piştî ku pêwendiyek hate saz kirin (mînak, "250-PÊŞKIRIN STATUSCODES" û "250 ALÎKARÎ"). OpenSMTPD hesab dike ku rêza yekem jimareyek sê-reqemî û metnek ku bi tîpa "-" veqetandî dihewîne, û rêza duyemîn jimareyek sê-reqemî û nivîsek ku bi valahiyek veqetandî ye vedihewîne. Ger di rêza duyemîn de jimareyek sê-reqemî bi valahiyek û metnek neyê şopandin, nîşana ku ji bo danasîna nivîsê tê bikar anîn li baytê li dû karaktera '\0' tê danîn û hewl tê dayîn ku daneya li dû dawiyê were kopî kirin. xêza nav tamponê.

Li ser daxwaza projeya OpenBSD, weşandina hûrguliyên di derbarê îstismarkirina qelsiyê de heya 26-ê Sibatê hate paşxistin da ku bikarhêner bikarin pergalên xwe nûve bikin. Pirsgirêk ji Kanûna 2015-an vir ve di bingeha kodê de heye, lê ji Gulana 2018-an vir ve îstismarkirina berî darvekirina kodê bi îmtiyazên root ve gengaz e. Lekolînwanan prototîpek xebatê ya kedxwariyê amade kirin, ku bi serfirazî di avahîyên OpenSMTPD de ji bo OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (ceribandin) û Fedora 31 hate ceribandin.

Di OpenSMTPD de jî nas kirin Zelaliyek din (CVE-2020-8793) ku dihêle bikarhênerek herêmî rêza yekem a pelê li ser pergalê bixwîne. Mînakî, hûn dikarin rêza yekem a /etc/master.passwd-ê bixwînin, ku tê de şîfreya şîfreya bikarhênerê root heye. Di heman demê de qelsî dihêle hûn tevahiya naveroka pelê ku xwediyê bikarhênerek din e bixwînin ger ev pel di heman pergala pelê ya pelrêça /var/spool/smtpd/ de ye. Pirsgirêk li ser gelek belavkirinên Linux-ê ku nirxa /proc/sys/fs/protected_hardlinks li 1-ê hatî danîn nayê bikar anîn.

Pirsgirêk encama ji holê rakirina ne temam e pirsgirêkên, di dema kontrolkirina ku ji hêla Qualys ve di 2015-an de hatî kirin de deng veda. Êrîşkarek bi danîna guhêrbara “PATH=.” dikare bi mafên koma “_smtpq” koda xwe bicîh bîne. û skrîptek bi navê makemap di pelrêça heyî de bi cîh bikin (karsaziya smtpctl bêyî ku rê bi eşkere diyar bike makemap dimeşîne). Bi gihîştina koma "_smtpq", êrîşkar paşê dikare bibe sedema rewşek nijadê (pelek mezin di pelrêça negirêdayî de biafirîne û îşaretek SIGSTOP bişîne) û berî ku pêvajo biqede, pelê di pelrêça negirêdayî de bi peldankek hişk biguhezîne. symlink nîşanî pelê mebesta ku naveroka wê divê were xwendin destnîşan dike.

Hêjayî balkişandinê ye ku di Fedora 31 de qelsî dihêle hûn tavilê îmtiyazên koma root bi dest bixin, ji ber ku pêvajoya smtpctl li şûna ala setgid smtpq, bi ala root ya setgid ve hatî saz kirin. Bi bidestxistina gihandina koma root, hûn dikarin naveroka /var/lib/sss/mc/passwd binivîsin û bi tevahî gihandina root ya pergalê bistînin.

Source: opennet.ru

Add a comment