Խոցելիություն Rust ստանդարտ գրադարանում

Rust ստանդարտ գրադարանում հայտնաբերվել է խոցելիություն (CVE-2022-21658)՝ std::fs::remove_dir_all() ֆունկցիայի ռասայական վիճակի պատճառով: Եթե ​​այս ֆունկցիան օգտագործվում է արտոնյալ հավելվածում ժամանակավոր ֆայլերը ջնջելու համար, հարձակվողը կարող է հասնել կամայական համակարգի ֆայլերի և գրացուցակների ջնջման, որոնք հարձակվողը սովորաբար մուտք չի ունենա ջնջելու համար:

Խոցելիությունը առաջանում է սիմվոլիկ հղումների սխալ իրականացումից՝ նախքան դիրեկտորիաների ռեկուրսիվ ջնջումը: Սիմհղումներին հետևելը կանխելու փոխարեն remove_dir_all() նախ ստուգում է, թե արդյոք ֆայլը սիմհղում է: Եթե ​​սահմանվում է հղում, ապա այն ջնջվում է որպես ֆայլ, իսկ եթե այն գրացուցակ է, ապա կոչվում է ռեկուրսիվ բովանդակության հեռացման գործողություն։ Խնդիրն այն է, որ ստուգման և ջնջման գործողության մեկնարկի միջև կա մի փոքր ուշացում:

Այն պահին, երբ ստուգումն արդեն իրականացվել է, բայց ջնջման համար տեղեկատուների թվարկման գործողությունը դեռ չի սկսվել, հարձակվողը կարող է տեղեկատուը փոխարինել ժամանակավոր ֆայլերով՝ խորհրդանշական հղումով։ Եթե ​​այն հարվածի ճիշտ ժամանակին, remove_dir_all() ֆունկցիան կվերաբերվի խորհրդանշական հղումին որպես գրացուցակի և կսկսի հեռացնել այն բովանդակությունը, որին ուղղված է հղումը: Չնայած այն հանգամանքին, որ հարձակման հաջողությունը կախված է գրացուցակը փոխարինելու ընտրված ժամանակի ճշգրտությունից և անհավանական է առաջին անգամ ճիշտ պահին հարվածելու համար, փորձերի ընթացքում հետազոտողները կարողացել են կրկնվող հաջող գրոհի հասնել՝ կիրառումը կատարելուց հետո: մի քանի վայրկյան.

Rust-ի բոլոր տարբերակները 1.0.0-ից մինչև 1.58.0 ներառյալ տուժել են: Խնդիրն առայժմ լուծվել է patch-ի տեսքով (շտկումը կներառվի 1.58.1 թողարկման մեջ, որը սպասվում է մի քանի ժամվա ընթացքում): Դուք կարող եք վերահսկել բաշխումների խոցելիության վերացումը այս էջերում՝ Debian, RHEL, SUSE, Fedora, Ubuntu, Arch, FreeBSD: Rust ծրագրերի բոլոր օգտվողներին, որոնք աշխատում են բարձր արտոնություններով և օգտագործում են remove_dir_all ֆունկցիան, խորհուրդ է տրվում շտապ թարմացնել Rust-ը 1.58.1 տարբերակին: Հետաքրքիր է, որ թողարկված պատչը չի լուծում խնդիրը բոլոր համակարգերում, օրինակ՝ REDOX OS-ում և macOS-ի մինչև 10.10 (Yosemite) տարբերակներում, խոցելիությունը արգելափակված չէ O_NOFOLLOW դրոշի բացակայության պատճառով, որն անջատում է սիմվոլիկան հետևելը: հղումներ.

Source: opennet.ru

Добавить комментарий