Linux kernel mailan kodea exekutatzeko aukera ematen duten eBPF azpisistemako ahultasunak

Bi ahultasun berri identifikatu dira eBPF azpisisteman, eta horri esker Linux nukleoaren barruan kudeatzaileak exekutatu ahal izango dituzu JIT duen makina birtual berezi batean. Bi ahulguneek zure kodea kernel eskubideekin exekutatzeko aukera ematen dute, eBPF makina birtual isolatu batetik kanpo. Arazoei buruzko informazioa Pwn2Own lehiaketa zuzentzen duen Zero Day Initiative taldeak argitaratu zuen, eta aurten Ubuntu Linux-en hiru eraso frogatu ziren aurretik ezezagunak diren ahultasunak erabiltzen zituzten (eBPF-ko ahultasunak eraso horiekin erlazionatuta dauden ala ez adierazten da) .

  • CVE-2021-3490 - Zaurgarritasuna eBPF ALU32-n bitarteko AND, EDO eta XOR eragiketak egitean 32 biteko mugaz kanpoko egiaztapenik ez izateak eragiten du. Erasotzaile batek errore hau aprobetxa dezake esleitutako buffer-aren mugetatik kanpo datuak irakurtzeko eta idazteko. XOR eragiketen arazoa kernelaren 5.7-rc1 bertsiotik hasita agertzen da, eta ETA eta OR - 5.10-rc1etik hasita.
  • CVE-2021-3489 - Ahultasuna eraztun-buffer-aren inplementazioaren akats batek eragindakoa da eta bpf_ringbuf_reserve funtzioak ez zuelako egiaztatu esleitutako memoria-eskualdearen tamaina benetako tamaina baino txikiagoa izan zitekeela. ringbuf-arena. Arazoa 5.8-rc1 bertsiotik agertzen da.

Banaketetako adabakien ahulezien egoera orri hauetan jarraipena egin daiteke: Ubuntu, Debian, RHEL, Fedora, SUSE, Arch). Konponketak adabaki gisa ere eskuragarri daude (CVE-2021-3489, CVE-2021-3490). Arazoa ustiatu daitekeen ala ez eBPF sistemaren deia erabiltzailearentzat eskuragarri dagoen ala ez araberakoa da. Adibidez, RHEL-en konfigurazio lehenetsian, ahultasuna ustiatzeak erabiltzaileak CAP_SYS_ADMIN eskubideak edukitzea eskatzen du.

Bereizita, Linux nukleoan beste ahultasun bat nabaritu dezakegu - CVE-2021-32606, tokiko erabiltzaile bati bere pribilegioak erro mailara igotzeko aukera ematen diona. Arazoa Linux kerneletik 5.11etik nabaria da eta CAN ISOTP protokoloaren inplementazioan lasterketa-baldintza batek eragiten du, eta horrek isotp_setsockopt() funtzioan blokeo egokiak ezartzeko aukera ematen du socket-en lotura-parametroak aldatzea. CAN_ISOTP_SF_BROADCAST bandera prozesatzen denean.

ISOTP socketa itxi ondoren, hartzailearen socketarekiko loturak indarrean jarraitzen du, eta horrek socketarekin lotutako egiturak erabiltzen jarraitu dezake haiekin lotutako memoria askatu ondoren (use-after-free isotp_rcv() deiaren ondorioz. dagoeneko askatuta dagoen isotp_sock egitura batean sartzea). Datuen manipulazioaren bidez, sk_error_report() funtzioaren erakuslea gainidatzi dezakezu eta zure kodea kernel mailan exekutatu.

Iturria: opennet.ru

Gehitu iruzkin berria