Viga Linuxi tuumas, mis mÔjutab CAN BCM vÔrgu protokolli.

Linuxi tuumas leiti haavatavus (CVE-2021-3609), mis vĂ”imaldab kohalikul kasutajal oma Ă”igusi sĂŒsteemis tĂ”sta. Probleem on tingitud vĂ”istlusolukorrast CAN BCM protokolli rakenduses ja see avaldub Linuxi tuumade versioonides 2.6.25 kuni 5.13-rc6. Probleem on jaotustes endiselt parandamata (RHEL, Fedora, Debian, Ubuntu, SUSE, Arch).

Haavatavuse avastanud teadlane suutis valmistada ette eksploiti root-Ă”iguste saamiseks Linuxi tuumadega sĂŒsteemides, mille versioon on 5.4 ja uuem, sealhulgas on nĂ€idatud vĂ”imalust edukaks rĂŒnnakuks Ubuntu 20.04.02 LTS. Ei saa vĂ€listada eksploidi ĂŒmbertegemise vĂ”imalust ka vanemate tuumade jaoks (tuumas 5.4 on CAN BCM kood (net/can/bcm.c) muudetud hrtimer_tasklet'ilt HRTIMER_MODE_SOFT'ile).

CAN BCM protokoll vĂ”imaldab registreerida oma teate töötleja, mis saab teateid CAN (controller area network) bussist, ja siduda selle konkreetse vĂ”rgu soketiga. Sissetuleva sĂ”numi saabudes kutsutakse funktsioon bcm_rx_handler(). RĂŒndaja vĂ”ib kasutada vĂ”istlusolukorda ja saavutada vĂ”rgu soketi sulgemise samal ajal bcm_rx_handler() tĂ€itmisega. Soketi sulgemisel kutsutakse esile funktsioon bcm_release(), kus vabastatakse mĂ€lu, mis on eraldatud bcm_op ja bcm_sock struktuuride jaoks, mida kasutatakse endiselt aktiivses bcm_rx_handler() töötlejas. Tekib olukord, mis viib juba vabastatud mĂ€luploki juurde (use-after-free).

RĂŒnnak seisneb kahe CAN BCM soketi avamises ja nende sidumises vcan liidesega. Esimeses soketis tehakse sendmsg() kutsumine RX_SETUP lipuga, et seadistada sissetulevate CAN sĂ”numite töötlejat, ja teises soketis tehakse sendmsg() kutsumine, et saata sĂ”num esimesse soketisse. PĂ€rast sĂ”numi saamist kutsub bcm_rx_handler() vĂ€lja, samas kui rĂŒndaja valib Ă”ige hetke ja sulgeb esimese soketi, mis viib bcm_release() kĂ€ivitamiseni ja bcm_op ja bcm_sock struktuuride vabastamiseni, kuigi bcm_rx_handler() töö ei ole veel lĂ”ppenud.

Manipuleerides bcm_sock sisu kaudu, saab rĂŒndaja ĂŒmber kirjutada sk->sk_data_ready(sk) funktsiooni nĂ€itajat, suunata tĂ€itmise muudesse kohtadesse ning kasutada tagasipöörduva programmeerimise tehnikat (ROP – Return-Oriented Programming), et ĂŒmber kirjutada modprobe_path parameeter ja saavutada oma koodi tĂ€itmine root Ă”igustes. ROP tehnikat kasutades ei pĂŒĂŒa rĂŒndaja oma koodi mĂ€lu paigutada, vaid opereerib juba olemasolevate masinakeele kĂ€sudega, mis on laaditud raamatukogudesse ja lĂ”ppevad juhtimise tagastamise kĂ€suga (ĂŒldjuhul on need raamatukogude funktsioonide lĂ”pppunktid). Eksploitatsiooni töö seisneb selliste plokkide (“gadgetide”) jĂ€rjestamise loomises vajalikku funktsionaalsuse saavutamiseks.

Viga Linuxi tuumas, mis mÔjutab CAN BCM vÔrgu protokolli.

RĂŒnnaku jaoks on vajalik juurdepÀÀs CAN sokkide loomisele ja seadistatud vcan vĂ”rguliides. RĂŒnnakuks vajalikud Ă”igused vĂ”ivad olla saadud mitteprivilegiseeritud kasutajale konteinerites, mis on loodud sĂŒsteemides, kus on aktiveeritud kasutaja identifikaatori nimespaced (user namespaces) tugi. NĂ€iteks on Ubuntu ja Fedora vaikimisi lĂŒlitatud kasutaja nimespaced, kuid Debianis ja RHEL-is pole see aktiveeritud.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster