Kynþáttaástand í Linux kjarna sorphirðu sem getur leitt til aukinna forréttinda

Jann Horn frá Google Project Zero teyminu, sem einu sinni greindi Spectre og Meltdown varnarleysið, birti tækni til að nýta sér varnarleysi (CVE-2021-4083) í Linux kjarna sorphirðu. Varnarleysið stafar af keppnisástandi þegar verið er að hreinsa upp skráarlýsingar á unix innstungum og gerir hugsanlega staðbundnum óforréttindum kleift að keyra kóðann sinn á kjarnastigi.

Vandamálið er áhugavert vegna þess að tíminn þar sem keppnisástandið á sér stað var áætlað að vera of lítill til að skapa raunveruleg hetjudáð, en höfundur rannsóknarinnar sýndi að jafnvel slíkir upphaflega efasemdar veikleikar geta orðið uppspretta raunverulegra árása ef ræningjahöfundurinn hefur nauðsynlega færni og tíma. Yann Horn sýndi hvernig, með hjálp filigree meðhöndlunar, er hægt að draga úr keppnisástandinu sem verður þegar hringt er í close() og fget() aðgerðirnar samtímis í fullkomlega nothæfan notkun-eftir-frjáls varnarleysi og fengið aðgang að þegar losuðum gögnum uppbyggingu inni í kjarnanum.

Keppnisástand á sér stað meðan á því stendur að loka skráarlýsingu á meðan hringt er í close() og fget() á sama tíma. Kallið til að loka() gæti átt sér stað áður en fget() er keyrt, sem mun rugla sorphirðuna vegna þess að samkvæmt endurtalningunni mun skráarbyggingin ekki hafa utanaðkomandi tilvísanir, heldur verða áfram tengd við skráarlýsinguna, þ.e. Sorphirðarinn mun halda að hann hafi einkaaðgang að mannvirkinu, en í stuttan tíma mun sú færsla sem eftir er í skráarlýsingartöflunni samt benda til þess að mannvirkið sé losað.

Til að auka líkurnar á að lenda í keppnisástandi var beitt nokkrum brögðum sem gerðu það mögulegt að auka líkur á nýtingarárangri í 30% þegar kerfissértækar hagræðingar voru teknar upp. Til dæmis, til að auka aðgangstíma að uppbyggingu með skráarlýsingum um nokkur hundruð nanósekúndur, var gögnum fjarlægt úr skyndiminni örgjörva með því að rusla skyndiminni með virkni á öðrum CPU kjarna, sem gerði það mögulegt að sækja uppbygginguna úr minni frekar en frá hraða CPU skyndiminni.

Annar mikilvægur eiginleikinn var notkun truflana sem myndast af vélbúnaðartímamæli til að auka ástandstíma keppninnar. Augnablikið var valið þannig að truflunarstjórinn myndi skjóta þegar keppnisástand átti sér stað og trufla framkvæmd kóðans í nokkurn tíma. Til að tefja enn frekar fyrir endurkomu stjórnarinnar, voru um 50 þúsund færslur í biðröðinni búnar til með epoll, sem krafðist þess að leitað væri í gegnum truflunarstjórann.

Tæknin til að nýta sér varnarleysið var birt eftir 90 daga þagnarskyldu. Vandamálið birtist síðan í kjarna 2.6.32 og var lagað í byrjun desember. Lagfæringin var innifalin í kjarna 5.16 og var einnig flutt yfir í LTS útibú kjarnans og kjarnapakkana sem eru til staðar í dreifingum. Það er athyglisvert að varnarleysið kom í ljós við greiningu á svipuðu vandamáli CVE-2021-0920, sem lýsir sér í sorphirðu við vinnslu MSG_PEEK fána.

Heimild: opennet.ru

Bæta við athugasemd