Bod yn agored i niwed yn llyfrgell safonol Rust

Mae bregusrwydd (CVE-2022-21658) wedi'i nodi yn llyfrgell safonol Rust oherwydd cyflwr hil yn y swyddogaeth std::fs::remove_dir_all(). Os defnyddir y swyddogaeth hon i ddileu ffeiliau dros dro mewn cais breintiedig, gall ymosodwr gyflawni dileu ffeiliau system a chyfeiriaduron mympwyol na fyddai gan yr ymosodwr fynediad i'w dileu fel arfer.

Mae'r bregusrwydd yn cael ei achosi gan weithredu anghywir o wirio cysylltiadau symbolaidd cyn dileu cyfeiriaduron ailadroddus. Yn lle atal symlinks rhag cael eu dilyn, mae remove_dir_all() yn gwirio yn gyntaf a yw'r ffeil yn ddolen syml. Os diffinnir dolen, yna caiff ei ddileu fel ffeil, ac os yw'n gyfeiriadur, yna gelwir gweithrediad tynnu cynnwys ailadroddus. Y broblem yw bod ychydig o oedi rhwng y siec a dechrau'r llawdriniaeth dileu.

Ar adeg pan fo'r gwiriad eisoes wedi'i wneud, ond nid yw gweithrediad rhifo cyfeirlyfrau i'w dileu wedi dechrau eto, gall yr ymosodwr ddisodli'r cyfeiriadur gyda ffeiliau dros dro gyda dolen symbolaidd. Os yw'n taro ar yr amser iawn, bydd y swyddogaeth remove_dir_all() yn trin y ddolen symbolaidd fel cyfeiriadur ac yn dechrau tynnu'r cynnwys y mae'r ddolen yn pwyntio ato. Er gwaethaf y ffaith bod llwyddiant yr ymosodiad yn dibynnu ar gywirdeb yr amser a ddewiswyd ar gyfer ailosod y cyfeiriadur a tharo'r foment gywir y tro cyntaf yn annhebygol, yn ystod yr arbrofion roedd yr ymchwilwyr yn gallu cyflawni ymosodiad llwyddiannus ailadroddadwy ar Γ΄l cyflawni'r camfanteisio o fewn. ychydig eiliadau.

Effeithir ar bob fersiwn o Rust o 1.0.0 i 1.58.0 cynhwysol. Mae'r mater wedi'i ddatrys ar ffurf patsh am y tro (bydd yr atgyweiriad yn cael ei gynnwys yn y datganiad 1.58.1, a ddisgwylir o fewn ychydig oriau). Gallwch fonitro dileu'r bregusrwydd mewn dosbarthiadau ar y tudalennau hyn: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch, FreeBSD. Cynghorir holl ddefnyddwyr rhaglenni Rust sy'n rhedeg gyda breintiau uchel ac sy'n defnyddio'r swyddogaeth remove_dir_all i ddiweddaru Rust i fersiwn 1.58.1 ar frys. Mae'n ddiddorol nad yw'r clwt a ryddhawyd yn datrys y broblem ar bob system; er enghraifft, yn REDOX OS a fersiynau o macOS cyn 10.10 (Yosemite), nid yw'r bregusrwydd yn cael ei rwystro oherwydd absenoldeb y faner O_NOFOLLOW, sy'n analluogi'r symbolaidd canlynol dolenni.

Ffynhonnell: opennet.ru

Ychwanegu sylw