Varnarleysi í Rust staðlaða bókasafninu

Varnarleysi (CVE-2022-21658) hefur verið greint í Rust staðlaða bókasafninu vegna keppnisástands í std::fs::remove_dir_all() aðgerðinni. Ef þessi aðgerð er notuð til að eyða tímabundnum skrám í forréttindaforriti getur árásarmaður náð að eyða handahófskenndum kerfisskrám og möppum sem árásarmaðurinn hefði venjulega ekki aðgang að eyða.

Varnarleysið stafar af rangri útfærslu á því að athuga táknræna tengla áður en möppum er eytt aftur og aftur. Í stað þess að koma í veg fyrir að samkennsla sé fylgt, athugar remove_dir_all() fyrst hvort skráin sé samkennd. Ef hlekkur er skilgreindur, þá er honum eytt sem skrá, og ef það er möppu, þá er endurkvæm aðgerð til að fjarlægja efni kallað. Vandamálið er að það er smá töf á milli athugunar og upphafs eyðingaraðgerðarinnar.

Á þeim tíma þegar athugun hefur þegar verið framkvæmd, en aðgerðin við að telja upp möppur til eyðingar er ekki enn hafin, getur árásarmaðurinn skipt út möppunni fyrir tímabundnar skrár með táknrænum hlekk. Ef það smellir á réttum tíma mun remove_dir_all() aðgerðin meðhöndla táknræna hlekkinn sem möppu og byrja að fjarlægja efnið sem hlekkurinn vísar á. Þrátt fyrir þá staðreynd að árangur árásarinnar veltur á nákvæmni valins tíma til að skipta um möppu og slá á rétta augnablikið í fyrsta skiptið er ólíklegt, meðan á tilraununum stóð gátu rannsakendur náð endurtekinni árangursríkri árás eftir að hafa framkvæmt hagnýtingu innan nokkrar sekúndur.

Allar útgáfur af Rust frá 1.0.0 til og með 1.58.0 verða fyrir áhrifum. Málið hefur verið leyst í plástraformi í bili (leiðréttingin verður innifalin í 1.58.1 útgáfunni, sem er væntanleg innan nokkurra klukkustunda). Þú getur fylgst með því að útrýma varnarleysinu í dreifingum á þessum síðum: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch, FreeBSD. Öllum notendum Rust forrita sem keyra með aukin réttindi og nota remove_dir_all aðgerðina er bent á að uppfæra Rust strax í útgáfu 1.58.1. Það er athyglisvert að útgefna plásturinn leysir ekki vandamálið á öllum kerfum; til dæmis í REDOX OS og útgáfum af macOS fyrir 10.10 (Yosemite), er varnarleysið ekki lokað vegna skorts á O_NOFOLLOW fánanum, sem slekkur á eftirfarandi táknrænum tengla.

Heimild: opennet.ru

Bæta við athugasemd