EN
→ بازگشت به خبرخوان
شمارهٔ ۰۴۰۲Rust۲ دقیقه۲ منبع

درس Miri از کش: در CI راست باید `target/` را خروجی آلوده فرض کرد

هشدار تیم پاسخ‌گویی امنیتی راست نشان می‌دهد که مدیریت متغیرهای محیطی در Miri چگونه می‌تواند کش معمولی `target/` را به مسیر افشای اسرار تبدیل کند. توسعه‌دهندگان راست و ICP باید مرز کش، دامنه دسترسی اسرار و مصنوعات موجود را بررسی کنند.

اشتراک‌گذاری
راست (Rust)
درس Miri از کش: در CI راست باید `target/` را خروجی آلوده فرض کرد
تصویر: تولید هوش مصنوعی

آخرین هشدار امنیتی راست درباره یک آسیب‌پذیری در کامپایلر نیست؛ درباره یک پوشهٔ build است. تیم پاسخ‌گویی امنیتی راست در ۲۱ سپتامبر اعلام کرد که Miri همهٔ متغیرهای محیطی را در target/ ذخیره می‌کرد تا بین اجراها باقی بمانند. اگر یک گردش‌کار CI در حالی که اسرار در محیط job حضور داشتند این پوشه را cache می‌کرد، آن اسرار می‌توانستند در کش باقی بمانند و در اختیار buildهای pull request قرار بگیرند.

این خطر به ترکیبی مشخص نیاز دارد: گردش‌کار، cargo miri را اجرا کند؛ مرحلهٔ Miri از طریق متغیرهای محیطی به اسرار دسترسی داشته باشد؛ گردش‌کار پوشهٔ target/ را، معمولاً با actions/cache یا swatinem/rust-cache، cache کند؛ و pull requestها بتوانند آن کش را بخوانند. مستندات GitHub توضیح می‌دهد که اسرار را می‌توان به‌عنوان ورودی یا متغیر محیطی در اختیار یک step گذاشت؛ بنابراین تنظیم گستردهٔ env در سطح job باید با دقت بررسی شود.

این تمایز برای تیم‌های canister در ICP مهم است. Miri می‌تواند برای آزمون کد ناامن و کتابخانه‌های سطح پایین مفید باشد، اما حضور آن در CI به این معنا نیست که job جای امنی برای اعتبارنامه‌های انتشار، توکن‌های registry، مواد امضای دیجیتال یا کلیدهای chain fusion است. کش یک محل نگهداری artifact است، نه یک مرز محرمانگی.

واکنش فوری باید عملیاتی باشد: اسرار را از job مربوط به Miri حذف کنید، caching همان job را غیرفعال کنید، یا موقتاً اجرای Miri را متوقف کنید. سپس کش‌های موجود را پاک کنید و هر اعتبارنامه‌ای را که احتمال می‌دهید افشا شده باشد، تعویض کنید. تیم راست می‌گوید نسخهٔ nightly با تاریخ ۲۲ سپتامبر تغییری دارد که فقط متغیرهای CARGO_*، به‌جز CARGO_*_TOKEN، و همچنین OUT_DIR را حفظ می‌کند.

یک caveat مهم وجود دارد: تیم راست می‌گوید اسکن اکوسیستم آن‌ها کامل نبوده و این رفتار به‌تنهایی لزوماً یک آسیب‌پذیری محسوب نمی‌شود. افشا به دامنهٔ دسترسی اسرار در workflow، مسیر کش و مجوزهای pull request بستگی دارد. بااین‌حال، درس گسترده‌تر از Miri فراتر می‌رود: هر فرایندی که خروجی build تولید می‌کند ممکن است داده‌های محیط را در artifactها کپی کند؛ بنابراین jobهایی که در کش مشترک یا عمومی می‌نویسند، نباید به اسرار دسترسی داشته باشند مگر اینکه این جریان به‌طور صریح طراحی و بازبینی شده باشد.

برچسب‌هاRustMiriامنیت CIGitHub Actions
منابع مستند۲ مرجع
  1. [۰۱]GitHub Actions leaking secrets when Miri output is cachedblog.rust-lang.org ↗
  2. [۰۲]Using secrets in GitHub Actionsdocs.github.com ↗
خواندنی بعدی

خبرخوان را در ایمیل بگیرید

هر سیگنال تازه، مستقیم از خط تولید. بدون مزاحمت، لغو عضویت در هر زمان.

خوراک RSS در دسترس · بدون هرزنامه