Izplatīšanas pakotņu datubāzē Ubuntu 26.10 versija, kuras izlaišana paredzēta 15. oktobrī, iezīmē pilnīgu pāreju uz uutils coreutils (Rust Coreutils) rīkkopa, kas rakstīta Rust valodā. Rust Coreutils utilītas ir pilnībā aizstājušas visas GNU Coreutils pakotnes sastāvdaļas, tostarp cp, mv un rm utilītas, kas Ubuntu 26.04 tika piegādāti kā GNU Coreutils variants.
rust-coreutils pakotne sākotnēji tika iekļauta laidienā pēc noklusējuma. Ubuntu 25.10, bet LTS filiālē Ubuntu 26.04. aprīlī tika atcelta GNU Coreutils komplekta utilītu cp, mv un rm atiestatīšana. Šīs opcijas tika atjaunotas drošības problēmu dēļ, kas tika atklātas Rust Coreutils koda bāzes audita laikā. Lielāko daļu Rust Coreutils ievainojamību izraisa sacensību apstākļi, kas ļauj modificēt datus pēc informācijas pārbaudes, bet pirms operācijas veikšanas (TOCTOU — Time-Of-Check-To-Time-Of-Use). Cita starpā šādas ievainojamības ļauj aizstāt failu ar simbolisku saiti starp pārbaudes pabeigšanu un operācijas sākumu.
Izmantojot utilītas cp, mv un rm sistēmas skriptos, kas palaisti ar root privilēģijām, simboliskas saites aizstāšana ļauj kopēt, pārrakstīt vai dzēst patvaļīgus failus. Piemēram, rekursīvi dzēšot direktorijus, rm utilīta vispirms skenēja visus direktorijus un pēc tam secīgi tos izdzēsa apgrieztā secībā, izsaucot funkciju rmdir(). Aizstājot simbolisku saiti vecāku direktorijam tūlīt pēc šī direktorija skenēšanas, bet pirms tā bērnu direktoriju skenēšanas, varat izdzēst jebkuru direktoriju sistēmā, kad katru dienu tiek palaists cron skripts /etc/cron.daily/apport. Darbojoties kā root, skripts rekursīvi dzēš direktorijas /var/crash saturu, kurā var rakstīt visi sistēmas lietotāji.
Avots: opennet.ru
