ICP·Devآی‌سی‌پی‌·دِو
بازگشت به مقالات
راست۵ تیر ۱۴۰۵3 دقیقه مطالعه

اکسیداسیون بزرگ فضای کاربری: Rust Coreutils 0.9.0، حسابرسی Zellic و پورت ویندوز مایکروسافت

نسخه 0.9.0 ابزارهای Coreutils در زبان راست با امنیت به‌شدت ارتقایافته و موتور کپی مقاوم در برابر TOCTOU منتشر شد. تحت تأثیر یک حسابرسی امنیتی بزرگ برای اوبونتو و پورت بومی غافلگیرکننده ویندوز توسط مایکروسافت، ابزارهای خط فرمان حیاتی اکنون رسماً با راست ایمن بازنویسی می‌شوند.

نکات کلیدی

  • نسخه 0.9.0 ابزارهای Coreutils در زبان راست با امنیت به‌شدت ارتقایافته و موتور کپی مقاوم در برابر TOCTOU منتشر شد
  • تحت تأثیر یک حسابرسی امنیتی بزرگ برای اوبونتو و پورت بومی غافلگیرکننده ویندوز توسط مایکروسافت، ابزارهای خط فرمان حیاتی اکنون رسماً با راست ایمن بازنویسی می‌شوند
اشتراک‌گذاری
اکسیداسیون بزرگ فضای کاربری: Rust Coreutils 0.9.0، حسابرسی Zellic و پورت ویندوز مایکروسافت

اکسیداسیون بزرگ فضای کاربری: Rust Coreutils 0.9.0، حسابرسی Zellic و پورت ویندوز مایکروسافت

سال‌هاست که رویای «اکسید کردن» فضای کاربری (userland) سیستم‌عامل، تلاشی پرشور از سوی جامعه کاربری بوده است. بازنویسی ابزارهای خط فرمان اصلی — مانند cat، ls، cp و mv — به زبان راست (Rust) نویدبخش ریشه‌کن کردن باگ‌های ایمنی حافظه بود که دهه‌ها سیستم‌های گنو (GNU) را آزار داده‌اند.

با انتشار Rust Coreutils 0.9.0 (uutils)، این رویا به یک واقعیت در سطح سازمانی تبدیل شده است. تحت تأثیر یک حسابرسی امنیتی شخص ثالث سخت‌گیرانه برای اوبونتو ۲۶.۰۴ LTS و اعلامیه غافلگیرکننده ادغام بومی توسط مایکروسافت، زبان راست رسماً در حال تصاحب ترمینال است.


حسابرسی Zellic: حل باگ‌هایی که بررسی‌کننده مالکیت (Borrow Checker) نادیده گرفت

هنگامی که کانونیکال تصمیم گرفت Coreutils سنتی گنو را با uutils راست در اوبونتو جایگزین کند، می‌دانست که یک بررسی داخلی کافی نخواهد بود. آن‌ها به شرکت تحقیقاتی زبده امنیت سایبری Zellic مأموریت دادند تا یک حسابرسی خارجی جامع انجام دهند.

این حسابرسی به یک درک بسیار مهم منجر شد: بررسی‌کننده مالکیت (borrow checker) در برابر شرایط رقابتی منطقی محافظت نمی‌کند.

در حالی که راست به طور ذاتی از سرریز بافر و خطاهای استفاده پس از آزادسازی (use-after-free) جلوگیری می‌کند، نمی‌تواند به طور بومی جلوی آسیب‌پذیری‌های TOCTOU (زمان بررسی تا زمان استفاده) را بگیرد. در ابزارهای سیستم فایل، یک باگ TOCTOU زمانی رخ می‌دهد که برنامه وضعیت فایل را تأیید می‌کند (Check)، اما مهاجم قبل از اجرای عملیات برنامه (Use)، فایل را با یک پیوند نمادین (symlink) تعویض می‌کند.

یک نمودار فنی و حرفه‌ای برای به تصویر کشیدن آسیب‌پذیری TOCTOU

برای حذف این نقص‌های منطقی، نسخه 0.9.0 از Coreutils یک موتور کپی کاملاً جدید و مقاوم در برابر TOCTOU را تحت ماژول uucore::safe_copy معرفی می‌کند. این معماری تضمین می‌کند که توصیف‌گرهای فایل (file descriptors) به صورت اتمیک باز شده و روی آن‌ها عملیات انجام می‌شود، که حملات تعویض دایرکتوری در میان کار را غیرممکن می‌سازد.


پاک‌سازی وابستگی‌های C با rustix و ورودی/خروجی بدون کپی (Zero-Copy I/O)

امنیت در Coreutils 0.9.0 فراتر از اصلاحات منطقی است. توسعه‌دهندگان کمپین بزرگی را برای کاهش ردپای باقی‌مانده از کدهای ناامن (unsafe) آغاز کردند.

پیش از این، uutils برای ارتباط با سیستم‌عامل به بایندرهایی مانند nix و libc متکی بود. این امر مستلزم نوشتن اشاره‌گرهای خام به سبک زبان C بود. Coreutils 0.9.0 این فراخوانی‌های سیستمی سطح پایین را به rustix، یک رابط فراخوانی سیستمی مبتنی بر راست خالص، مهاجرت می‌دهد. با حذف بایندرهای زمان اجرای C، پایگاه کد دستکاری مستقیم حافظه را به حداقل ممکن می‌رساند.

در بخش عملکرد، این نسخه بهینه‌سازی‌های ورودی/خروجی بدون کپی (zero-copy I/O) خام را معرفی می‌کند:

  • خط لوله‌های بدون کپی (Zero-Copy Pipelines): با استفاده از فراخوانی‌های سیستمی خام لینوکس مانند splice، tee و pipe، ابزارها می‌توانند داده‌ها را به طور مستقیم بین بافرهای هسته منتقل کنند.
  • ترفند "tee": ابزارهای با توان عملیاتی بالا مانند yes و cp اکنون به طور بومی از tee استفاده می‌کنند و به آن‌ها اجازه می‌دهد گیگابایت‌ها داده را با بار پردازشی تقریباً صفر روی پردازنده لوله‌کشی (pipe) کنند.

مایکروسافت به موج اکسیداسیون می‌پیوندد

شاید غافلگیرکننده‌ترین چرخش از سوی ردموند رخ داد. در کنفرانس مایکروسافت بیلد ۲۰۲۶، مایکروسافت "Coreutils for Windows" را معرفی کرد.

مایکروسافت به جای بسته‌بندی دستورات در لایه‌های شبیه‌ساز یا استفاده از WSL، پروژه uutils را به صورت بومی برای شل‌های ویندوز کامپایل کرده است. توسعه‌دهندگان ویندوز اکنون می‌توانند دستوراتی مانند cat، ls و uptime را به طور بومی با استفاده از باینری‌های بسیار بهینه‌شده و ایمن از نظر حافظه که در راست خالص کامپایل شده‌اند، اجرا کنند.

همان‌طور که Rust Coreutils 0.9.0 ثابت می‌کند، بازنویسی هسته پردازش صرفاً برای جلوگیری از کرش‌ها نیست، بلکه درباره ساخت آینده‌ای سریع‌تر، اتمیک و واقعاً چندسکویی است.

برچسب‌ها

#راست#لینوکس#ویندوز#برنامه‌نویسی سیستم#امنیت

منابع و ارجاعات مستند

پیشنهاد مطالعه بعدی

خوشتان آمد؟ مقاله بعدی را بگیرید

در خبرنامه عضو شوید تا راهنمای بعدی در ایمیلتان باشد — بدون مزاحمت، لغو عضویت در هر زمان.