Pribilegioen igoera ekar dezakeen Linux nukleoaren zabor biltzailean lasterketa-baldintza

Google Project Zero taldeko Jann Hornek, behin Spectre eta Meltdown ahultasunak identifikatu zituenak, Linux kernelaren zabor-biltzailean ahultasun bat ustiatzeko teknika bat argitaratu zuen (CVE-2021-4083). Ahultasuna arraza-baldintza bati dagokio unix-en socketetako fitxategi-deskribatzaileak garbitzean eta, baliteke, tokiko pribilegiorik gabeko erabiltzaile bati bere kodea kernel mailan exekutatzeko aukera ematen dio.

Arazoa interesgarria da, lasterketa-baldintza gertatzen den denbora-leihoa txikiegia zela uste baitute benetako ustiapenak sortzeko, baina ikerketaren egileak erakutsi zuen hasierako ahultasun eszeptiko horiek ere benetako erasoen iturri bihur daitezkeela ustiategien sortzaileak baldin baditu. beharrezko trebetasunak eta denbora. Yann Horn-ek erakutsi zuen nola, filigranaren manipulazioen laguntzaz, close() eta fget() funtzioei aldi berean deitzean gertatzen den lasterketa-baldintza murriztu dezakezun guztiz ustiatu daitekeen erabilera-ondoren ahultasun batera eta dagoeneko askatuta dagoen datuetarako sarbidea lor dezakezu. nukleoaren barruko egitura.

Lasterketa-baldintza bat gertatzen da fitxategi deskribatzailea ixteko prozesuan, aldi berean close() eta fget() deitzen diren bitartean. Itxi() deia fget() exekutatu baino lehen gerta daiteke, eta horrek zabor-biltzailea nahasi egingo du, errefcount-aren arabera, fitxategi-egiturak ez du kanpoko erreferentziarik izango, baina fitxategi-desskribatzaileari atxikita geratuko da, hau da. Zabor-biltzaileak egiturarako sarbide esklusiboa duela pentsatuko du, baina, hain zuzen ere, denbora tarte laburrean, fitxategi deskribatzaileen taulan geratzen den sarrerak egitura askatu dela adieraziko du oraindik.

Lasterketa-egoera batean sartzeko probabilitatea handitzeko, hainbat trikimailu erabili ziren, sistemaren optimizazio espezifikoak sartzerakoan ustiapenaren arrakastaren probabilitatea % 30era igotzea ahalbidetu zutenak. Adibidez, fitxategi deskribatzaileak dituen egitura batean sartzeko denbora ehunka nanosegundo handitzeko, prozesadorearen cachetik datuak kendu ziren PUZaren beste nukleo batean jarduerarekin zipriztinduz, eta horri esker, egitura memoriatik berreskuratzea posible zen. CPU cache azkarra.

Bigarren ezaugarri garrantzitsua hardware tenporizadore batek sortutako etenen erabilera izan zen lasterketa-baldintza-denbora handitzeko. Momentua hautatu zen, eten-kudeatzaileak lasterketa-baldintza bat gertatzen denean su eman eta kodearen exekuzioa denbora batez eten zezan. Kontrolaren itzulera gehiago atzeratzeko, itxaron-ilaran 50 mila sarrera inguru sortu ziren epoll erabiliz, eta horrek eten kudeatzailearen bidez bilatu behar zuen.

Ahultasuna ustiatzeko teknika 90 eguneko ezezagunaren epearen ondoren ezagutarazi zen. Arazoa 2.6.32 kerneletik agertzen da eta abenduaren hasieran konpondu zen. Konponketa 5.16 nukleoan sartu zen eta banaketetan hornitutako nukleo eta nukleo paketeen LTS adarretara ere transferitu zen. Aipagarria da ahultasuna CVE-2021-0920 antzeko arazo baten azterketan identifikatu zela, MSG_PEEK bandera prozesatzen duenean zabor-biltzailean agertzen dena.

Iturria: opennet.ru

Gehitu iruzkin berria