پرش به محتوا
منو
داده‌نوشت
فناوری، زیرساخت و هوش مصنوعی
توسعه نرم‌افزار

Rust 1.98 منتشر شد؛ هم‌زمان حملهٔ زنجیرهٔ تأمین به کریت arrayref افشا شد

Rust 1.98.0 در ۲۰ اوت ۲۰۲۶ منتشر شد و همان روز، وبلاگ رسمی Rust تحلیل حملهٔ زنجیرهٔ تأمین علیه کریت arrayref را افشا کرد.

انتشار: ۲۹ مرداد ۱۴۰۵به‌روزرسانی: ۲ شهریور ۱۴۰۵4 دقیقه
لوگوی زبان Rust
انتشار Rust 1.98.0 با افشای یک حملهٔ زنجیرهٔ تأمین همراه شد — Rust Foundation

پروژهٔ Rust در ۲۰ اوت ۲۰۲۶ نسخهٔ پایدار 1.98.0 را منتشر کرد؛ اما خبر مهم‌تر روز، افشای یک حملهٔ زنجیرهٔ تأمین علیه کریت محبوب arrayref بود که تیم امنیت Rust آن را مهار و تحلیلش را هم‌زمان با ریلیز منتشر کرد.

#چه اتفاقی افتاد؟

Rust 1.98.0 مطابق چرخهٔ منظم شش‌هفته‌ای زبان عرضه شد و جانشین نسخهٔ 1.97 می‌شود که در ۹ ژوئیه با دو تغییر مهم — پیش‌فرض شدن symbol mangling نسخهٔ v0 و اصلاح صحت (soundness) ماکروی pin! — منتشر شده بود. یک روز بعد، در ۲۱ اوت، وبلاگ Rust از فعال شدن نسل بعدی حل‌کنندهٔ trait (trait solver) روی نسخهٔ nightly خبر داد.

اما روایت امنیتی ماجرا جذاب‌تر است: وبلاگ رسمی Rust در همان روز انتشار 1.98.0، تحلیل کامل (post-mortem) حملهٔ زنجیرهٔ تأمین علیه کریت arrayref را منتشر کرد؛ کریت سبکی که برای دسترسی به آرایه‌ها به‌صورت ارجاعی استفاده می‌شود و در وابستگی‌های بسیاری از پروژه‌ها حضور دارد.

#جزئیات فنی

حملهٔ زنجیرهٔ تأمین در crates.io معمولاً الگویی آشنا دارد: تصاحب یا تقلید یک بستهٔ کم‌اهمیت، تزریق کد مخرب — اغلب از طریق build script یا وابستگی proc-macro — و انتشار نسخه‌ای که به‌ظاهر بی‌ضرر است. در این مورد نیز مهاجمان از مسیر وابستگی مخرب به arrayref نزدیک شده بودند. تیم امنیت Rust پس از شناسایی، نسخه‌های آلوده را yank کرد و post-mortem شفافی از خط زمانی و اقدامات مهار ارائه داد؛ الگویی که اکوسیستم‌های بزرگ‌تر هم همیشه به آن پایبند نیستند.

در سمت زبان، تمرکز 1.98.0 بیشتر روی پایداری و ادامهٔ مسیر بهسازی کامپایلر است و فعال شدن trait solver نسل بعد روی nightly، مهم‌ترین سیگنال فنی این هفته است: حل‌کنندهٔ جدید قرار است بسیاری از محدودیت‌های تاریخی سیستم تایپ Rust — از خطاهای عجیب coherence تا رفتارهای غیرقابل‌پیش‌بینی استنتاج — را مرتفع کند.

لوگوی Rust و نماد امنیت زنجیرهٔ تأمین crates.io به هدف فعال حملات زنجیرهٔ تأمین تبدیل شده است — Rust Foundation

#چرا مهم است؟

دو خبر هم‌زمان، دو وجه اکوسیستم Rust را نشان می‌دهند. وجه روشن: چرخهٔ شش‌هفته‌ای منظم و شفاف که برای تیم‌های زیرساخت قابل‌اتکاست و اجازه می‌دهد ارتقای toolchain به‌جای یک پروژهٔ ترسناک، یک عادت هفتگی باشد. وجه تیره‌تر: crates.io به‌عنوان هدف فعال حملات زنجیرهٔ تأمین شناسایی شده و این دومین یادآوری بزرگ امسال است.

درس عملی برای تیم‌ها روشن است: پین کردن دقیق نسخه‌ها در Cargo.lock، فعال کردن cargo audit و مرور وابستگی‌های تازه‌اضافه‌شده در CI دیگر کارهای «خوب اگر انجام شود» نیستند؛ لازمهٔ بقای زنجیرهٔ تأمین شما هستند. شفافیت تیم Rust در انتشار post-mortem هم قابل‌تقدیر است و معیاری است که باید از دیگر اکوسیستم‌ها مطالبه کرد.

#اعداد و ارقام

  • ۲۰ اوت ۲۰۲۶: انتشار Rust 1.98.0 و افشای حمله به arrayref
  • ۹ ژوئیه ۲۰۲۶: انتشار نسخهٔ 1.97 (پیش‌فرض شدن mangling نسخهٔ v0)
  • ۲۱ اوت ۲۰۲۶: فعال شدن trait solver نسل بعد روی nightly
  • چرخهٔ انتشار: هر ۶ هفته یک نسخهٔ پایدار

#چرخهٔ شش‌هفته‌ای و اقتصاد اعتماد

مدل انتشار شش‌هفته‌ای Rust — که از ۲۰۱۵ تاکنون بدون وقفه ادامه دارد — یکی از قابل‌اعتمادترین تقویم‌های دنیای نرم‌افزار است و برای تیم‌های زیرساخت یعنی ارتقای کامپایلر هیچ‌وقت یک «مهاجرت» بزرگ نیست، بلکه یک روال کم‌ریسک است که با ابزارهایی مثل rustup و تست‌های crater (اجرای تست روی هزاران کریت پیش از انتشار) پشتیبانی می‌شود.

در مقابل، امنیت crates.io همچنان یک مسئلهٔ حل‌ناشدهٔ صنعتی است. اقداماتی مانند اجبار به احراز هویت دوعاملی برای ناشران پرنفوذ و گزارش‌دهی سریع در سال‌های اخیر اضافه شده‌اند، اما ماهیت باز رجیستری یعنی هر توسعه‌دهنده‌ای می‌تواند وابستگی جدید منتشر کند. حمله به arrayref نشان می‌دهد که حتی کریت‌های کوچک و «غیرقابل‌توجه» هم می‌توانند نقطهٔ نفوذ باشند، چون در عمق درخت وابستگی صدها پروژهٔ دیگر نشسته‌اند.

#جمع‌بندی

هفتهٔ گذشتهٔ پروژهٔ Rust دو روایت موازی بود: بلوغ فرایندی — با ریلیز منظم 1.98.0 و پیشروی trait solver نسل بعد — و آسیب‌پذیری ساختاری در برابر حملات زنجیرهٔ تأمین. هیچ‌کدام دیگری را ابطال نمی‌کند؛ اما با هم تصویری واقع‌بینانه از اکوسیستم مدرن می‌سازند: ابزارهای فوق‌العاده، روی زیرساختی که دائماً مورد هدف است. پاسخ درست، ترکیب اعتمادِ محتاطانه با نظارت دائمی است.

#منابع

مطالب مرتبط

برای ادامه مطالعه

این یادداشت‌ها بر اساس موضوع مشترک، هم‌پوشانی برچسب‌ها و تازگی انتشار انتخاب می‌شوند.