بازنویسی‌های memory-safe به‌آرامی کدبیس‌های C و C++ را جایگزین می‌کنند، یک CVE در هر بار

اشتراک‌گذاری:
بازنویسی‌های memory-safe به‌آرامی کدبیس‌های C و C++ را جایگزین می‌کنند، یک CVE در هر بار

Google و Microsoft هر دو گزارش داده‌اند که حدود ۷۰ درصد از آسیب‌پذیری‌های امنیتی در کدبیس‌های C و C++ آن‌ها به خطاهای memory safety برمی‌گردد — buffer overflow، use-after-free و باگ‌های مشابهی که یک زبان memory-safe اصلاً نمی‌تواند آن‌ها را بنویسد. اتفاقی که در ۲۰۲۶ افتاد این بود که صنعت به‌جای بحث درباره این موضوع، شروع به عرضه راه‌حل کرد، زیرسیستم به زیرسیستم.

Linux Kernel دیگر Rust را «آزمایش» نمی‌داند

در نشست Maintainers Summit سال ۲۰۲۵، نگهدارندگان Linux رسماً پروژه چندساله «Rust for Linux» را موفق اعلام کردند. Greg Kroah-Hartman، نگهدارنده kernel، صریحاً گفته که Rust «لینوکس را نجات خواهد داد» با توجه به حجم CVEهایی که هر سال از کد C در kernel تولید می‌شود. اولین CVE اختصاص‌یافته به کد Rust در kernel، یعنی CVE-2025-68260، در سال ۲۰۲۶ ثبت شد — یادآوری این نکته که تضمین‌های Rust فقط در کد safe معتبرند و بلوک‌های unsafe همان دسته باگ را بازمی‌گردانند.

Coreutils تا اینجا بزرگ‌ترین موفقیت عملی Rust است

پروژه uutils coreutils، یک بازنویسی کامل GNU coreutils به Rust، تا اوایل ۲۰۲۶ به ۹۲.۲ درصد از test suite رسمی GNU رسید و تا آوریل به ۹۴.۷۴ درصد ارتقا یافت. Ubuntu نسخه ۲۵.۱۰ آن را پیش‌فرض کرده و نسخه ۰.۸.۰ آن — که شامل رفع ۱۱۳ مشکل کشف‌شده توسط audit شرکت Zellic است — در Ubuntu 26.04 LTS پیش‌فرض خواهد بود. ابزارهای cp، mv و rm همچنان به دلیل مشکلات TOCTOU حل‌نشده در نسخه Rust، از GNU باقی مانده‌اند؛ انتقال کامل برای Ubuntu 26.10 هدف‌گذاری شده است.

همه نگهدارندگان قانع نشده‌اند

curl مثال نقض جالبی است. Daniel Stenberg، نگهدارنده curl، بازنویسی کامل حدود ۱۸۰ هزار خط کد C پروژه را به‌طور صریح رد کرده. یک آزمایش قبلی با backend مبتنی بر Hyper (Rust) تا آوریل ۲۰۲۵ کنار گذاشته شد. با این حال، curl در بهار ۲۰۲۶ با موجی از گزارش‌های آسیب‌پذیری مواجه شد که آن‌قدر جدی بود که پروژه در جولای ۲۰۲۶ موقتاً پذیرش گزارش‌های جدید را متوقف کرد.

جایی که داده‌ها از این شرط‌بندی حمایت می‌کنند

قوی‌ترین مورد کمی از Android می‌آید. Google گزارش داده که در بخش‌های Rust کدبیس Android، تراکم آسیب‌پذیری‌های memory-safety حدود ۱۰۰۰ برابر کمتر از کد C و C++ است. این عدد استراتژی Android — نوشتن کد جدید به Rust به‌جای بازنویسی کامل کد قدیمی — را منعکس می‌کند.

چه چیزی را باید دنبال کرد

اگر زیرساختی نگهداری می‌کنید که با ورودی نامعتبر سروکار دارد، الگوی مرحله‌ای coreutils مفید است: ابتدا پرارزش‌ترین و پرحمله‌ترین جزء را شناسایی کنید، آن را با رابطی سازگار بازنویسی کنید، و پیش از تغییر پیش‌فرض، همان پوشش تست قبلی را اعمال کنید. «نوشته‌شده با Rust» به‌تنهایی تضمین امنیتی نیست.

اشتراک‌گذاری: