آخرین اخبار
همهٔ اخبار
امنیت زیرساخت و حوزه‌ها گزارش بحرانیت ۴/۱۰

رفع آسیب‌پذیری نشت داده‌های بین‌مستأجری در سرویس Cloudflare Containers

رفع آسیب‌پذیری نشت داده‌های بین‌مستأجری در سرویس Cloudflare Containers

شرکت Cloudflare اخیراً یک آسیب‌پذیری امنیتی در سرویس‌های Cloudflare Containers و Cloudflare Sandboxes را شناسایی و برطرف کرده است. این نقص امنیتی که توسط پژوهشگر امنیتی Oren Yomtov گزارش شده بود، امکان دسترسی به داده‌های باقی‌مانده (Residual Data) از سایر کاربران در یک زیرساخت مشترک (Multi-tenant) را فراهم می‌کرد.

جزئیات فنی و مکانیسم آسیب‌پذیری

سرویس Containers در Cloudflare از قابلیت Thin Provisioning در device mapper لینوکس (dm-thin) برای تخصیص دیسک‌های ریشه (Root Disk) استفاده می‌کند. در این ساختار، هر کانتینر در یک ماشین مجازی مجزا تحت مدیریت Firecracker اجرا می‌شود.

مشکل اصلی مربوط به فعال بودن گزینه skip_block_zeroing در پیکربندی استخرهای ذخیره‌سازی بود. در حالت عادی، سیستم باید بلوک‌های جدید تخصیص‌یافته را پاک‌سازی (Zeroing) کند، اما با فعال بودن این گزینه، این مرحله نادیده گرفته می‌شد. در نتیجه، اگر یک بلوک ۶۴ کیلوبایتی قبلاً توسط کاربر دیگری استفاده شده بود و سپس به کاربر جدید تخصیص می‌یافت، در صورت نوشتن داده‌های کم‌حجم (مثلاً ۴ کیلوبایت)، باقی‌مانده بلوک (۶۰ کیلوبایت) حاوی داده‌های کاربر قبلی باقی می‌ماند.

نحوه اجرای اکسپلویت (PoC)

  • عامل تهدید باید دارای یک حساب Workers Paid باشد.
  • با دسترسی به دیسک ریشه در مسیر /dev/vdc، نواحی تخصیص‌نیافته در سیستم‌فایل ext4 شناسایی می‌شدند.
  • با نوشتن یک بلوک کوچک ۴ کیلوبایتی، سیستم یک بلوک ۶۴ کیلوبایتی از استخر مشترک تخصیص می‌داد.
  • سپس با خواندن خام (Raw Read) از دیسک، داده‌های باقی‌مانده از مستأجران قبلی بازیابی می‌شد.

تاثیرات و دامنه نفوذ

این آسیب‌پذیری می‌توانست منجر به نقض مرزهای ایزولاسیون بین مستأجران (Tenant-isolation boundary) شود. داده‌های بازیابی شده شامل متادیتای سیستم‌فایل، ساختار دایرکتوری‌ها، صفحات دیتابیس و حتی دیتابیس‌های کامل SQLite بود. با این حال، مهاجم نمی‌توانست قربانی خاصی را هدف قرار دهد یا به دیسک‌های فعال دسترسی یابد؛ دسترسی به داده‌ها کاملاً وابسته به نحوه تخصیص بلوک‌ها توسط سیستم بود.

اقدامات اصلاحی و پاسخ Cloudflare

تیم امنیتی Cloudflare اقدامات زیر را برای رفع کامل مشکل انجام داد:

  • غیرفعال‌سازی skip_block_zeroing: بازگرداندن رفتار پیش‌فرض dm-thin برای پاک‌سازی بلوک‌های جدید.
  • پاک‌سازی کش: حذف تمامی Snapshotهای کش شده از لایه‌های تصاویر OCI که پیش از اصلاح ایجاد شده بودند.
  • بازراه‌اندازی زیرساخت: تخلیه (Drain) میزبان‌ها در ساعات کم‌ترافیک و ری‌استارت ماشین‌های مجازی برای اطمینان از اعمال تغییرات.

بررسی‌های تله‌متری (Telemetry) مربوط به I/O دیسک نشان می‌دهد که این نقص در محیط عملیاتی توسط هیچ عامل مخربی مورد سوءاستفاده قرار نگرفته و تنها توسط پژوهشگران برای تایید آسیب‌پذیری استفاده شده است.