Malproksime ekspluatebla vundebleco en la poŝtservilo qmail

Sekurecaj esploristoj de Qualys montris ŝanco ekspluatado vundeblecoj en la poŝtservilo qmail, fama reen en 2005 (CVE-2005-1513), sed restis neflakita ĉar la verkinto de qmail argumentis ke estis nereale krei funkciantan ekspluatadon kiu povus esti uzita por ataki sistemojn en la defaŭlta agordo. Qualys povis prepari ekspluataĵon kiu refutas ĉi tiun supozon kaj permesas al oni iniciati malproksiman kodekzekuton sur la servilo sendante speciale dizajnitan mesaĝon.

La problemo estas kaŭzita de entjera superfluo en la funkcio stralloc_readyplus(), kiu povas okazi dum prilaborado de tre granda mesaĝo. Funkciado postulis 64-bitan sistemon kun pli ol 4GB da virtuala memoro. Kiam la vundebleco estis origine analizita en 2005, Daniel J. Bernstein argumentis ke la supozo en la kodo ke la grandeco de la asignita aro ĉiam estas ene de 32-bita valoro estas bazita sur la fakto ke neniu disponigas gigabajtojn da memoro al ĉiu procezo. Dum la pasintaj 15 jaroj, 64-bitaj sistemoj sur serviloj anstataŭigis 32-bitajn sistemojn, kaj la kvanto de provizita memoro kaj reta bendolarĝo draste pliiĝis.

La prizorgantoj de qmail-pakaĵo konsideris la noton de Bernstein kaj limigis la disponeblan memoron dum komencado de la procezo qmail-smtpd (ekzemple, en Debian 10 la limo estas fiksita al 7MB). Sed inĝenieroj de Qualys trovis, ke tio ne sufiĉas kaj, krom qmail-smtpd, fora atako povas esti farita sur la qmail-loka procezo, kiu restis senrestrikta en ĉiuj testitaj pakaĵoj. Kiel pruvo, ekspluata prototipo estis preparita, kiu estis taŭga por ataki la Debianan pakaĵon kun qmail en la defaŭlta agordo.
Por organizi foran kodon dum atako, la servilo postulas 4GB da libera diskospaco kaj 8GB da RAM.
La ekspluato permesas al vi ruli ajnajn ŝelkomandojn kun la rajtoj de iu ajn uzanto en la sistemo, krom por radikaj kaj sistemuzantoj kiuj ne havas sian propran subdosierujon en la dosierujo "/home" (la qmail-local procezo estas lanĉita kun la rajtoj). de la loka uzanto al kiu liveras).

La atako estas farita
per sendado de tre granda retmesaĝo, inkluzive de pluraj kaplinioj, je proksimume 4GB kaj 576MB. Pretigi tian ĉenon en qmail-local rezultigas entjeran superfluon kiam oni provas liveri mesaĝon al la loka uzanto. Entjera superfluo tiam kondukas al bufrosuperfluo dum kopiado de datumoj kaj la ebleco anstataŭigi memorpaĝojn per libc-kodo. Manipulante la aranĝon de la transdonitaj datumoj, ankaŭ eblas reverki la adreson de la funkcio "open()", anstataŭigante ĝin per la adreso de la funkcio "system()".

Poste, en la procezo de vokado de qmesearch() en qmail-local, la dosiero ".qmail-extension" estas malfermita per la funkcio open(), kiu kondukas al la efektiva ekzekuto de la funkcio.
sistemo ("".qmail-extension"). Sed ĉar la "etendo" parto de la dosiero estas generita surbaze de la adreso de la ricevanto (ekzemple, "localuser-extension@localdomain"), atakantoj povas aranĝi ke la komando estu sendita por ruliĝi specifante la uzanton "localuser-;command". ;@localdomain” kiel la ricevanto de la mesaĝo.

Dum la kodanalizo, du vundeblecoj ankaŭ estis identigitaj en la kroma qmail-verify flikaĵo, kiu estas parto de la pakaĵo por Debian. Unua vundebleco (CVE-2020-3811) permesas al vi preteriri retpoŝtadreskonfirmon, kaj la duan (CVE-2020-3812) kondukas al elfluo de lokaj informoj. Precipe, la unua vundebleco ebligas al vi preteriri la konfirmon de la ĝusteco de la adreso uzata en la ekspluato por sendi komandon (la konfirmo ne funkcias por adresoj sen domajno, kiel "localuser-;command;"). La dua vundebleco povas esti uzata por kontroli la ĉeeston de dosieroj kaj dosierujoj en la sistemo, inkluzive de tiuj alireblaj nur por radiko (qmail-verify ruliĝas kun radikrajtoj), per rekta alvoko al la loka prizorganto.

Por solvi la problemon, Bernstein rekomendis ruli qmail-procezojn kun totala limo de disponebla memoro ("softlimit -m12345678"), en kiu kazo la problemo estas blokita. Kiel alternativa metodo de protekto, limigi la maksimuman grandecon de la prilaborita mesaĝo per la dosiero "kontrolo/datumbajtoj" ankaŭ estas menciita (defaŭlte ĝi ne estas kreita kun defaŭltaj agordoj qmail restas vundebla). Aldone, "kontrolo/datumbajtoj" ne protektas kontraŭ lokaj atakoj de sistemuzantoj, ĉar la limo estas nur konsiderata de qmail-smtpd.

La problemo influas la pakaĵon netqmail, inkluzivita en la Debianaj deponejoj. Aro da flikoj estis preparita por ĉi tiu pako, forigante kaj malnovajn vundeblecojn de 2005 (aldonante malmolajn memorlimojn al la funkciokodo alloc()) kaj novajn problemojn en qmail-verify. Aparte preparita ĝisdatigita versio de la flikaĵo qmail-verify. Programistoj branĉoj notqmail preparis siajn proprajn diakilojn por bloki malnovajn problemojn, kaj ankaŭ komencis labori por forigi ĉiujn eblajn entjerajn superfluojn en la kodo.

fonto: opennet.ru

Aldoni komenton