Pagkahuyang sa Rust standard library

Ang usa ka kahuyang (CVE-2022-21658) giila sa Rust standard library tungod sa usa ka kondisyon sa lumba sa std::fs::remove_dir_all() function. Kung kini nga function gigamit sa pagtangtang sa temporaryo nga mga file sa usa ka pribilihiyo nga aplikasyon, ang usa ka tig-atake mahimo’g makuha ang pagtangtang sa mga arbitraryong file sa sistema ug mga direktoryo nga ang tig-atake dili kasagaran adunay access aron mapapas.

Ang pagkahuyang tungod sa dili husto nga pagpatuman sa pagsusi sa simbolikong mga link sa dili pa balikbalik nga pagtangtang sa mga direktoryo. Imbis nga pugngan ang mga symlink nga sundan, remove_dir_all() una nga susihon kung ang file usa ka symlink. Kung ang usa ka link gihubit, nan kini mapapas ingon nga usa ka file, ug kung kini usa ka direktoryo, nan ang usa ka recursive content removal operation gitawag. Ang problema mao nga adunay gamay nga paglangan tali sa tseke ug pagsugod sa operasyon sa pagtangtang.

Sa usa ka panahon nga ang tseke nahimo na, apan ang operasyon sa pag-ihap sa mga direktoryo alang sa pagtangtang wala pa magsugod, ang tig-atake mahimong mopuli sa direktoryo sa temporaryo nga mga file nga adunay simbolo nga sumpay. Kung naigo kini sa husto nga oras, ang function nga remove_dir_all() magtagad sa simbolikong link ingon usa ka direktoryo ug magsugod sa pagtangtang sa sulud diin gipunting ang link. Bisan pa sa kamatuoran nga ang kalampusan sa pag-atake nagdepende sa katukma sa gipili nga oras sa pag-ilis sa direktoryo ug pag-igo sa husto nga higayon sa unang higayon dili tingali, sa panahon sa mga eksperimento ang mga tigdukiduki nakahimo sa pagkab-ot sa usa ka balik-balik nga malampuson nga pag-atake human sa pagpatuman sa pagpahimulos sa sulod. pipila ka segundo.

Ang tanan nga mga bersyon sa Rust gikan sa 1.0.0 hangtod sa 1.58.0 lakip ang apektado. Ang isyu nasulbad na sa patch nga porma sa pagkakaron (ang pag-ayo ilakip sa 1.58.1 nga pagpagawas, nga gilauman sulod sa pipila ka oras). Mahimo nimong bantayan ang pagwagtang sa pagkahuyang sa mga pag-apod-apod sa kini nga mga panid: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch, FreeBSD. Ang tanan nga tiggamit sa Rust nga mga programa nga nagdagan nga adunay taas nga mga pribilehiyo ug gamit ang remove_dir_all function gitambagan nga dinalian nga i-update ang Rust sa bersyon 1.58.1. Makapainteres nga ang gipagawas nga patch wala makasulbad sa problema sa tanan nga mga sistema; pananglitan, sa REDOX OS ug mga bersyon sa macOS sa wala pa ang 10.10 (Yosemite), ang pagkahuyang wala gibabagan tungod sa pagkawala sa O_NOFOLLOW nga bandila, nga nagpugong sa pagsunod sa simbolikong mga link.

Source: opennet.ru

Idugang sa usa ka comment