Ahultasun kritikoa Glibc-eko ARMv7-rako memcpy funtzioaren ezarpenean

Cisco Segurtasun Ikertzaileak estali gabe xehetasunak ahultasunak (CVE-2020-6096) Glibc-ek emandako memcpy() funtzioaren ezarpenean 32 biteko ARMv7 plataformarako. Arazoa kopiatutako eremuaren tamaina zehazten duen parametroaren balio negatiboen manipulazio okerra dela eta, sinatutako 32 biteko zenbaki osoak manipulatzen dituzten muntaketa optimizazioak erabiltzeagatik. Tamaina negatiboa duten ARMv7 sistemetan memcpy() deitzeak balioen konparaketa okerra eragiten du eta zehaztutako buffer-aren mugetatik kanpoko eremu batean idazten da.

Zaurgarritasuna kodea exekutatzeko balia daiteke erasotzaileak kopiatutako datuen tamaina transmititzen duen aldagaiaren balio negatibo baten eraketa antola dezakeen egoera batean (adibidez, negatiboa izango da 2 GB baino gehiago transferitzean. datuak, baina erasoan zehar, buffer-en mugak gainditzeko, gutxienez 4GB transferitu behar dituzu). Memcpy() funtzioa oso erabilia da aplikazioetan, eta ARMv7 prozesadoreak ohikoak dira automozio-sistemetan, mugikor, industria-, kontsumo-, komunikazio- eta kapsulatutako gailuetan, Bluetooth, HD Radio/DAB, USB, CAN bus erabiliz erasoak jasan ditzaketenak. Wi-Fi-a eta kanpoko beste datu-iturri batzuk (adibidez, tamaina-murrizketarik gabe sarrerako datuak onartzen dituzten sarearen bidez eskura daitezkeen zerbitzu eta aplikazioei eraso diezaiekete).

Adibide bat da ibilgailuen informazio sistemetan integratutako HTTP zerbitzari bati erasotzeko lan-explotazio bat sortzea, automobilaren Wi-Fi sarearen bidez eskura daitekeena. Kanpoko erasotzaile batek zerbitzari honetan memcpy ahultasun bat ustiatu dezake GET eskaera oso handia bidaliz eta sistemarako root sarbidea lortuz.

Ahultasun kritikoa Glibc-eko ARMv7-rako memcpy funtzioaren ezarpenean

32 biteko x86 sistemetan, arazoa ez da agertzen, arkitektura honen memcpy inplementazioak tamaina aldagaia behar bezala interpretatzen baitu size_t motako zenbaki osoko balio gisa (mihiztadura hizkuntzan). ezarpena ARMv7rako sinatutako zenbaki oso gisa tratatzen da size_t-ren ordez). Konponketa une honetan eskuragarri dago adabakia, abuztuko Glibc 2.32 eguneratzean sartuko dena.
Konponketa sinatutako eragiketetan (bge eta blt) sinatu gabeko kontrakoekin (blo eta bhs) funtzionatzen duten muntaketa-argibideen erabileran ordezkatzen da.

Arazoa ez da oraindik konpondu Debian 9 eta 10 (ez dago ikusgai Debian 8-n), Fedora, Ubuntu, OpenEmbedded, Tizen (glibc-ek erabiltzen du). RHEL ΠΈ SUSE Arazoak ez du eraginik 32 biteko ARMv7 sistemak onartzen ez dituztelako. Android-ek ez du ahultasunak eragiten bere libc (Bionic) inplementazioa erabiltzen duelako. IN OpenWRT Lehenespenez, eraikuntza gehienek Musl erabiltzen dute, baina glibc ere eskuragarri dago biltegian.

Iturria: opennet.ru

Gehitu iruzkin berria