Vundebleco en la Linukso Netfilter-kernsubsistemo

Vulnerabileco (CVE-2021-22555) estis identigita en Netfilter, subsistemo de la Linukso-kerno uzita por filtri kaj modifi retajn pakaĵojn, kiu permesas al loka uzanto akiri radikprivilegiojn sur la sistemo, inkluzive dum en izolita ujo. Funkcianta prototipo de ekspluato kiu preteriras la KASLR, SMAP kaj SMEP-protektajn mekanismojn estis preparita por testado. La esploristo, kiu malkovris la vundeblecon, ricevis $ 20 rekompencon de Google pro identigi metodon por preteriri la izolitecon de Kubernetes-ujoj en kCTF-areto.

La problemo ekzistas ekde la kerno 2.6.19, publikigita antaŭ 15 jaroj, kaj estas kaŭzita de cimo en la pritraktiloj IPT_SO_SET_REPLACE kaj IP6T_SO_SET_REPLACE, kiu kaŭzas bufran superfluon dum sendado de speciale formatitaj parametroj per setsockopt-voko en kompatreĝimo. En normalaj cirkonstancoj, la voko al compat_setsockopt() povas esti farita nur de la radika uzanto, sed la privilegioj necesaj por fari la atakon ankaŭ povas esti akiritaj de senprivilegia uzanto en sistemoj kun subteno por uzantnomspacoj ebligita.

Uzanto povas krei ujon kun aparta radika uzanto kaj ekspluati la vundeblecon de tie. Ekzemple, "uzantnomspacoj" estas ebligita defaŭlte ĉe Ubuntu kaj Fedora, sed ne ebligitaj ĉe Debian kaj RHEL. La flikaĵo riparanta la vundeblecon estis adoptita en la Linuksan kernon la 13-an de aprilo. Pakaj ĝisdatigoj jam estis generitaj de la projektoj Debian, Arch Linux kaj Fedora. En Ubuntu, RHEL kaj SUSE, ĝisdatigoj estas preparitaj.

La problemo okazas en la funkcio xt_compat_target_from_user() pro malĝusta kalkulo de la memorgrando dum konservado de kernaj strukturoj post konvertiĝo de 32-bita al 64-bita reprezentado. La cimo permesas al kvar nulaj bajtoj esti skribitaj al iu ajn pozicio preter la asignita bufro limigita per ofseto 0x4C. Ĉi tiu funkcio montriĝis sufiĉa por krei ekspluatadon, kiu permesis al oni akiri radikrajtojn - malbarante la m_list->next-montrilon en la msg_msg strukturo, estis kreitaj kondiĉoj por aliri datumojn post liberigo de memoro (use-after-free), kiu tiam estis uzita por akiri informojn pri adresoj kaj ŝanĝoj al aliaj strukturoj per manipulado de la msgsnd() sistemvoko.

fonto: opennet.ru

Aldoni komenton