در پایگاه داده بستههای توزیع Ubuntu نسخه ۲۶.۱۰ که قرار است در ۱۵ اکتبر منتشر شود، نشاندهندهی یک گذار کامل به جعبهابزار uutils coreutils (Rust Coreutils) است که به زبان Rust نوشته شده است. ابزارهای Rust Coreutils به طور کامل جایگزین تمام اجزای بسته GNU Coreutils، از جمله ابزارهای cp، mv و rm شدهاند که Ubuntu 26.04 در نوعی از GNU Coreutils ارائه شدند.
بسته rust-coreutils در ابتدا به طور پیشفرض در نسخه منتشر شده گنجانده شده بود. Ubuntu ۲۵.۱۰، اما در شاخه LTS Ubuntu در تاریخ ۲۶ آوریل، ابزارهای cp، mv و rm از مجموعه GNU Coreutils به حالت قبل بازگردانده شدند. این گزینهها به دلیل مشکلات امنیتی کشف شده در طول ممیزی کد Rust Coreutils به حالت قبل بازگردانده شدند. اکثر آسیبپذیریها در Rust Coreutils ناشی از شرایط رقابتی هستند که اجازه میدهند دادهها پس از تأیید اطلاعات اما قبل از انجام عملیات (TOCTOU - زمان بررسی تا زمان استفاده) اصلاح شوند. از جمله موارد دیگر، چنین آسیبپذیریهایی اجازه میدهند یک فایل با یک پیوند نمادین بین تکمیل بررسی و شروع عملیات جایگزین شود.
هنگام استفاده از ابزارهای cp، mv و rm در اسکریپتهای سیستمی که با امتیازات root اجرا میشوند، جایگزینی یک پیوند نمادین اجازه میدهد تا فایلهای دلخواه کپی، رونویسی یا حذف شوند. به عنوان مثال، هنگام حذف بازگشتی دایرکتوریها، ابزار rm ابتدا تمام دایرکتوریها را اسکن کرده و سپس با فراخوانی تابع rmdir() آنها را به ترتیب معکوس حذف میکند. با جایگزینی یک پیوند نمادین برای دایرکتوری والد بلافاصله پس از اسکن آن دایرکتوری، اما قبل از اسکن دایرکتوریهای فرزند آن، میتوانید هر دایرکتوری را در سیستم هنگام اجرای روزانه اسکریپت cron /etc/cron.daily/apport حذف کنید. با اجرا به عنوان root، اسکریپت به صورت بازگشتی محتویات دایرکتوری /var/crash را که توسط همه کاربران سیستم قابل نوشتن است، حذف میکند.
منبع: opennet.ru
