Athari katika maktaba ya kiwango cha Rust

Athari ya kuathiriwa (CVE-2022-21658) imetambuliwa katika maktaba ya kawaida ya Rust kutokana na hali ya mbio katika std::fs::remove_dir_all() chaguo. Chaguo hili la kukokotoa likitumika kufuta faili za muda katika programu maalum, mshambulizi anaweza kufikia ufutaji wa faili na saraka zisizo za mfumo ambazo kwa kawaida mshambulizi hangeweza kuzifuta.

Athari hii inasababishwa na utekelezaji usio sahihi wa kuangalia viungo vya ishara kabla ya kufuta saraka kwa kujirudia. Badala ya kuzuia ulinganifu kufuatwa, remove_dir_all() angalia kwanza ili kuona ikiwa faili ni ulinganifu. Ikiwa kiungo kimefafanuliwa, basi kinafutwa kama faili, na ikiwa ni saraka, basi operesheni ya uondoaji wa maudhui ya kujirudia inaitwa. Tatizo ni kwamba kuna kuchelewa kidogo kati ya hundi na kuanza kwa operesheni ya kufuta.

Wakati ambapo hundi tayari imefanywa, lakini uendeshaji wa saraka za kuorodhesha kwa kufuta bado haujaanza, mshambuliaji anaweza kuchukua nafasi ya saraka na faili za muda na kiungo cha mfano. Ikifika kwa wakati ufaao, kitendakazi cha remove_dir_all() kitashughulikia kiungo cha mfano kama saraka na kuanza kuondoa maudhui ambayo kiungo kinaelekeza. Licha ya ukweli kwamba mafanikio ya shambulio hilo inategemea usahihi wa wakati uliochaguliwa wa kuchukua nafasi ya saraka na kupiga wakati unaofaa mara ya kwanza haiwezekani, wakati wa majaribio watafiti waliweza kufikia shambulio la mafanikio linaloweza kurudiwa baada ya kutekeleza unyonyaji ndani. sekunde chache.

Matoleo yote ya Rust kutoka 1.0.0 hadi 1.58.0 pamoja yanaathiriwa. Tatizo limetatuliwa kwa njia ya kiraka kwa sasa (marekebisho yatajumuishwa katika toleo la 1.58.1, ambalo linatarajiwa ndani ya saa chache). Unaweza kufuatilia uondoaji wa athari katika usambazaji kwenye kurasa hizi: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch, FreeBSD. Watumiaji wote wa programu za Rust zinazoendeshwa na mapendeleo ya hali ya juu na kutumia kitendaji cha remove_dir_all wanashauriwa kusasisha Rust kwa haraka hadi toleo la 1.58.1. Inafurahisha kwamba kiraka kilichotolewa hakisuluhishi shida kwenye mifumo yote; kwa mfano, katika REDOX OS na matoleo ya macOS kabla ya 10.10 (Yosemite), mazingira magumu hayajazuiwa kwa sababu ya kukosekana kwa bendera ya O_NOFOLLOW, ambayo inalemaza kufuata kwa ishara. viungo.

Chanzo: opennet.ru

Kuongeza maoni