Vundeblecoj en OpenSMTPD kiuj permesas malproksiman kaj lokan radikan aliron

Qualys Kompanio rivelis alia malproksima kritika vundebleco (CVE-2020-8794) en la poŝtservilo OpenSMTPD, evoluigita per la OpenBSD-projekto. Kiel tiu identigita fine de januaro vundebleco, nova afero ebligas malproksime ekzekuti arbitrajn ŝelkomandojn sur servilo kun radikaj uzantrajtoj. Vundebleco eliminita en afero OpenSMTPD 6.6.4p1.

La problemo estas kaŭzita de cimo en la kodo, kiu liveras poŝton al la fora poŝtservilo (ne en la kodo, kiu pritraktas envenantajn konektojn). La atako eblas ambaŭ ĉe la klienta flanko kaj ĉe la servilo. Ĉe la klientflanko, la atako eblas en la defaŭlta agordo de OpenSMTPD, en kiu OpenSMTPD akceptas petojn nur sur la interna reto-interfaco (localhost) kaj sendas retmesaĝojn al eksteraj serviloj. Por ekspluati la vundeblecon, sufiĉas ke, dum transdono de letero, OpenSMTPD establas kunsidon kun poŝtservilo kontrolita de la atakanto, aŭ ke la atakanto povas kojni en la klientkonekton (MITM aŭ alidirektado dum atakoj per DNS aŭ BGP). ).

Por servilflanka atako, OpenSMTPD devas esti agordita por ricevi eksterajn retajn petojn de aliaj poŝtserviloj aŭ servi triajn servojn, kiuj permesas vin sendi peton al arbitra retpoŝto (ekzemple, adreskonfirmformularoj en retejoj). Ekzemple, atakanto povas konektiĝi al la OpenSMTPD-servilo kaj sendi malĝustan leteron (al neekzistanta uzanto), kio kondukos al respondo sendanta leteron kun erarkodo (resalto) al la servilo de la atakanto. Atakanto povas ekspluati la vundeblecon kiam OpenSMTPD konektas por liveri sciigon al la servilo de la atakanto. La ŝelkomandoj injektitaj dum la atako estas metitaj en dosieron kiu estas ekzekutita kun radikrajtoj kiam OpenSMTPD estas rekomencita, do la atakanto devas atendi ke OpenSMTPD rekomencu aŭ komenci kraŝon de OpenSMTPD por kompletigi la atakon.

La problemo ĉeestas en la funkcio mta_io() en la kodo por analizi la multlinian respondon resenditan de la fora servilo post kiam konekto estas establita (ekzemple, "250-ENHANCEDSTATUSCODES" kaj "250 HELP"). OpenSMTPD kalkulas, ke la unua linio inkluzivas triciferan nombron kaj tekston apartigitajn per "-" signo, kaj la dua linio enhavas triciferan nombron kaj tekston apartigitan per spaco. Se tricifera nombro ne estas sekvata de spaco kaj teksto en la dua linio, la montrilo uzata por difini la tekston estas agordita al la bajto sekvanta la signon '\0' kaj oni provas kopii la datumojn post la fino. de la linio en la bufron.

Laŭ peto de la projekto OpenBSD, la publikigo de detaloj pri la ekspluatado de la vundebleco estis prokrastita ĝis la 26-a de februaro por permesi al uzantoj ĝisdatigi siajn sistemojn. La problemo ĉeestas en la kodbazo ekde decembro 2015, sed ekspluatado antaŭ koda ekzekuto kun radikaj privilegioj estas ebla ekde majo 2018. La esploristoj preparis funkciantan prototipon de la ekspluato, kiu estis sukcese provita en OpenSMTPD-konstruaĵoj por OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testado) kaj Fedora 31.

En OpenSMTPD ankaŭ identigita Alia vundebleco (CVE-2020-8793), kiu permesas al loka uzanto legi la unuan linion de iu ajn dosiero en la sistemo. Ekzemple, vi povas legi la unuan linion de /etc/master.passwd, kiu enhavas la pasvorton hash de la radika uzanto. La vundebleco ankaŭ permesas vin legi la tutan enhavon de dosiero posedata de alia uzanto se ĉi tiu dosiero troviĝas en la sama dosiersistemo kiel la dosierujo /var/spool/smtpd/. La problemo ne estas ekspluatebla en multaj Linukso-distribuoj kie la valoro de /proc/sys/fs/protected_hardlinks estas agordita al 1.

La problemo estas sekvo de nekompleta elimino problemoj, esprimita dum la revizio farita fare de Qualys en 2015. Atakanto povas atingi ekzekuton de sia kodo kun la rajtoj de la grupo "_smtpq" per agordo de la variablo "PATH=." kaj metante skripton nomitan makemap en la nunan dosierujon (la smtpctl ilo rulas makemap sen eksplicite specifi la vojon). Akirante aliron al la grupo "_smtpq", la atakanto povas tiam kaŭzi raskondiĉon (krei grandan dosieron en la eksterreta dosierujo kaj sendi SIGSTOP-signalon) kaj, antaŭ ol la prilaborado finiĝos, anstataŭigi la dosieron en la eksterreta dosierujo per malmola. simbolligo indikanta la celdosieron kies enhavo devas esti legita .

Estas rimarkinde, ke en Fedora 31 la vundebleco permesas vin tuj akiri la privilegiojn de la radika grupo, ĉar la smtpctl-procezo estas ekipita per la setgid radika flago, anstataŭ la setgid smtpq flago. Akirante aliron al la radika grupo, vi povas anstataŭigi la enhavon de /var/lib/sss/mc/passwd kaj akiri plenan radikan aliron al la sistemo.

fonto: opennet.ru

Aldoni komenton