Kwesbaarheid in Rust Standard Library

'n Kwesbaarheid (CVE-2022-21658) is in die Rust-standaardbiblioteek geïdentifiseer as gevolg van 'n rastoestand in die std::fs::remove_dir_all()-funksie. As hierdie funksie gebruik word om tydelike lêers in 'n bevoorregte toepassing uit te vee, kan 'n aanvaller die verwydering van arbitrêre stelsellêers en -gidse bewerkstellig wat die aanvaller normaalweg nie toegang sou hê om uit te vee nie.

Die kwesbaarheid word veroorsaak deur die verkeerde implementering van die kontrolering van simboliese skakels voordat die gidse rekursief uitgevee word. In plaas daarvan om te verhoed dat simlinks gevolg word, kontroleer remove_dir_all() eers of die lêer 'n simlink is. As 'n skakel gedefinieer is, word dit as 'n lêer uitgevee, en as dit 'n gids is, word 'n rekursiewe inhoudverwyderingsoperasie genoem. Die probleem is dat daar 'n effense vertraging is tussen die kontrole en die begin van die uitvee-operasie.

Op 'n tyd wanneer die kontrole reeds uitgevoer is, maar die operasie van die opsomming van gidse vir uitvee nog nie begin het nie, kan die aanvaller die gids vervang met tydelike lêers met 'n simboliese skakel. As dit op die regte tyd tref, sal die remove_dir_all() funksie die simboliese skakel as 'n gids hanteer en begin om die inhoud te verwyder waarna die skakel verwys. Ten spyte van die feit dat die sukses van die aanval afhang van die akkuraatheid van die gekose tyd om die gids te vervang en die eerste keer op die regte oomblik te slaan, is dit onwaarskynlik, tydens die eksperimente was die navorsers in staat om 'n herhaalbare suksesvolle aanval te bereik nadat hulle die ontginning binne uitgevoer het 'n paar sekondes.

Alle weergawes van Rust van 1.0.0 tot en met 1.58.0 word geraak. Die probleem is vir nou in pleistervorm opgelos (die oplossing sal ingesluit word in die 1.58.1-vrystelling, wat binne 'n paar uur verwag word). U kan die uitskakeling van die kwesbaarheid in verspreidings op hierdie bladsye monitor: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch, FreeBSD. Alle gebruikers van Rust-programme wat met verhoogde voorregte loop en die remove_dir_all-funksie gebruik, word aangeraai om Rust dringend op te dateer na weergawe 1.58.1. Dit is interessant dat die vrygestelde pleister nie die probleem op alle stelsels oplos nie; byvoorbeeld, in REDOX OS en weergawes van macOS voor 10.10 (Yosemite), word die kwesbaarheid nie geblokkeer nie as gevolg van die afwesigheid van die O_NOFOLLOW vlag, wat die volgende simboliese deaktiveer skakels.

Bron: opennet.ru

Voeg 'n opmerking