У пакетнай базе дыстрыбутыва Ubuntu 26/10, рэліз якога намечаны на 15 кастрычніка, ажыццёўлены поўны пераход на інструментар uutils coreutils (Rust Coreutils), напісаны на мове Rust. Утыліты са складу Rust Coreutils цалкам замянілі ўсе кампаненты пакета GNU Coreutils, уключаючы ўтыліты cp, mv і rm, якія ў Ubuntu 26/04 пастаўляліся ў варыянце з GNU Coreutils.
Пакет rust-coreutils першапачаткова быў уключаны па змаўчанні ў выпуску Ubuntu 25.10, але ў LTS-галінцы Ubuntu 26/04 быў здзейснены адкат на пастаўку ўтыліт cp, mv і rm з набору GNU Coreutils. Варыянты cp, mv і rm былі вернутыя з-за праблем з бяспекай, выяўленых падчас аўдыту кодавай базы Rust Coreutils. Вялікая частка ўразлівасцяў у Rust Coreutils выклікана наяўнасцю стану гонкі, якія дазваляюць змяніць дадзеныя ў момант пасля праверкі карэктнасці інфармацыі, але да выканання аперацыі з імі (TOCTOU – Time-Of-Check-To-Time-Of-Use). Сярод іншага, падобныя ўразлівасці дазваляюць падмяніць файл на сімвалічную спасылку ў момант паміж завяршэннем праверкі і пачаткам выкананні аперацыі.
У кантэксце выкарыстання ўтыліт cp, mv і rm у сістэмных скрыптах, якія запускаюцца з правамі root, падстаноўка сімвалічнай спасылкі дае магчымасць скапіяваць, перазапісаць або выдаліць адвольныя файлы. Напрыклад, пры рэкурсіўным выдаленні каталогаў утыліта rm спачатку правярала ўсе каталогі, а затым паслядоўна выдаляла іх у зваротным парадку, выклікаючы функцыю rmdir(). Калі падмяніць бацькоўскі каталог на сімвалічную спасылку адразу пасля праверкі гэтага каталога, але да праверкі ўкладзеных у яго даччыных каталогаў, можна дамагчыся выдаленні любога каталога ў сістэме пры штодзённым запуску з cron скрыпта /etc/cron.daily/apport, які працуючы з правамі root рэкурсіўна выдаляе сістэме.
Крыніца: opennet.ru
