ارزیابی امنیت کانتینر

ارزیابی جامع امنیت کانتینر برای Docker و اپلیکیشن‌های کانتینری

درباره این سرویس

ارزیابی امنیت کانتینر ما، imageهای کانتینر و محیط اجرای آن‌ها را در برابر معیارهای شناخته‌شده می‌سنجد: CIS Docker Benchmark، بنچمارک CIS مربوط به container runtime، سند NIST SP 800-190 و فهرست OWASP Docker Top 10. هر دو نیمه‌ی مسئله را می‌بینیم: آنچه درون یک image پخته شده است (لایه‌ی پایه‌ی آسیب‌پذیر، secretی که اشتباهی داخل image مانده، فرآیندی که با کاربر root اجرا می‌شود) و آنچه runtime اجازه می‌دهد (capabilityهای اضافی لینوکس، اتصال قابل‌نوشتن به میزبان، مسیری از درون کانتینر به میزبان). هر یافته تا یک اثبات عملی دنبال می‌شود، در کنار اثر واقعی‌اش با CVSS رتبه می‌گیرد و همراه با یک گام مشخص سخت‌سازی نوشته می‌شود.

چه چیزی شامل می‌شود

اسکن آسیب‌پذیری image: لایه‌ی پایه و بسته‌های نصب‌شده در برابر CVEهای شناخته‌شده

بازبینی Dockerfile و فرآیند ساخت: کاربر root، secretهای جامانده در لایه‌ها، تگ پایه‌ی بدون قفل نسخه و افشا در زمان ساخت

پیکربندی runtime: حالت privileged، capabilityهای افزوده‌ی لینوکس، namespaceهای میزبان و فایل‌سیستم ریشه‌ی فقط‌خواندنی

کنترل‌های جداسازی: پروفایل‌های seccomp و AppArmor یا SELinux و user namespaceها

فرار از کانتینر و دسترسی به میزبان از یک کانتینر به‌خطرافتاده

نگه‌داری secret و اعتبارنامه در imageها، متغیرهای محیطی و mountها

افشای Docker daemon و socket، از جمله docker.sock متصل‌شده

امنیت registry: احراز هویت، امضا و اصالت image و سیاست‌های pull

محدودیت منابع و در معرض بودن در برابر منع سرویس

سخت‌سازی پیکربندی با سنجش در برابر CIS Docker Benchmark

چگونه کار می‌کند

1
دامنه‌گذاری و دسترسی
محدوده و معیار موفقیت را توافق می‌کنیم و دسترسی را فراهم می‌کنیم: imageهایی که باید بازبینی شوند (از راه pull از registry یا فایل‌های tar صادرشده) و برای تست runtime، یک میزبان که container runtime روی آن اجرا می‌شود یا یک پایگاه فرضِ‌نفوذ درون یک کانتینر. مشخص می‌کنیم که بستر، Docker ساده است، یک سرویس مدیریت‌شده یا یک ارکستریتور، چون همین تعیین می‌کند سخت‌سازی کدام لایه‌ها بر عهده‌ی شماست.
2
تحلیل Image و ساخت
هر image را برای بسته‌های آسیب‌پذیر اسکن می‌کنیم، سپس Dockerfile و لایه‌های ساخته‌شده را برای مسائلی می‌خوانیم که یک اسکنر نمی‌بیند: فرآیندی که با root اجرا می‌شود، secretهای واردشده در یک لایه، image پایه‌ی بدون قفل نسخه یا نامطمئن، و گام‌های ساختی که سطح حمله را گسترده می‌کنند.
3
تست runtime و جداسازی
بررسی می‌کنیم که کانتینر در عمل چگونه اجرا می‌شود: حالت privileged، capabilityهای افزوده، namespaceها و mountهای میزبان، و این‌که پروفایل‌های seccomp و AppArmor یا SELinux برقرارند یا نه. معیار، CIS Docker Benchmark و NIST SP 800-190 است و پرسش این است که جداسازی تا کجا پابرجا می‌ماند.
4
فرار و secretها (فرضِ‌نفوذ)
از درون یک کانتینر، مسیرهایی را می‌آزماییم که یک مهاجم واقعی می‌پیماید: فرار به میزبان از راه یک تنظیم privileged یا docker.sock متصل‌شده، دسترسی به فایل‌سیستم میزبان یا نقطه‌ی metadata ابری، و افشای secretها در متغیرهای محیطی، mountها یا registry. نتیجه، دامنه‌ی واقعی اثرِ یک کانتینر به‌خطرافتاده است.
5
اعتبارسنجی، گزارش‌دهی و تست مجدد
هر یافته با یک اثبات مفهوم تکرارپذیر تأیید می‌شود، با CVSS و اثر واقعی کسب‌وکار رتبه می‌گیرد و همراه با مسیر رفع اولویت‌دار نوشته می‌شود. پس از رفع، دوباره تست می‌کنیم تا مطمئن شویم رفع‌ها پابرجا هستند.
خروجی‌ها
  • خلاصه‌ی اجرایی با نمای کلی ریسک برای تصمیم‌گیرندگان
  • گزارش فنی تفصیلی، هر یافته با اثبات مفهوم تکرارپذیر
  • نتایج اسکن آسیب‌پذیری image همراه با بسته‌های متأثر و نسخه‌های رفع‌شده
  • یافته‌های Dockerfile و ساخت همراه با رفع‌های مشخص
  • بازبینی runtime و جداسازی با نگاشت به CIS Docker Benchmark
  • شدت CVSS و اثر کسب‌وکار برای هر یافته
  • نقشه‌ی راه سخت‌سازی کانتینر با اولویت
  • تست مجدد پس از رفع

چرا وادی ایمن حافظ

تخصص کانتینر و runtime
درک عمیق و به‌روز از امنیت کانتینر: لایه‌های image، Docker daemon، ابزارهای جداسازی لینوکس و مسیرهای فراری که یک اسکنر عمومی image آن‌ها را مدل نمی‌کند.
image و runtime، نه یک نیمه
هم آنچه درون image است و هم شیوه‌ی اجرای آن را می‌آزماییم، چون یک image پاک روی runtime سهل‌گیر، یا runtime سخت‌شده گرد یک image نشت‌دار، همچنان در معرض خطر است.
عمق فرضِ‌نفوذ
به یک اسکن پیکربندی بسنده نمی‌کنیم: از درون یک کانتینر می‌سنجیم که یک مهاجم واقعی چقدر به‌سوی میزبان و secretها پیش می‌رود، تا مسیرهای قابل بهره‌برداری را ببینید، نه فقط یک فهرست وارسی.
یافته‌های قابل اجرا و اولویت‌دار
راهنمایی روشن و اولویت‌بندی‌شده بر پایه‌ی ریسک، با اثبات مفهوم تکرارپذیر و گام‌های عملی سخت‌سازی برای هر یافته.

سوالات متداول

ارزیابی امنیت کانتینر چیست؟

ارزیابی امنیت کانتینر، imageهای کانتینر و محیط اجرای آن‌ها را برای ضعف‌های امنیتی می‌سنجد: لایه‌های آسیب‌پذیر image، گام‌های ناامن ساخت، تنظیمات بیش از حد باز runtime، فرار از کانتینر و افشای secret؛ در برابر CIS Docker Benchmark، NIST SP 800-190 و OWASP Docker Top 10، و هر یافته اثبات و رتبه‌بندی می‌شود.

ارزیابی را در برابر چه استانداردهایی انجام می‌دهید؟

CIS Docker Benchmark و بنچمارک CIS مربوط به container runtime برای سخت‌سازی پیکربندی، سند NIST SP 800-190 برای مدل تهدید کانتینرهای کاربردی، و OWASP Docker Top 10 برای دسته‌های رایج ریسک.

برای شروع چه دسترسی‌ای لازم دارید؟

برای بازبینی imageها باید بتوانیم آن‌ها را از registry شما pull کنیم یا فایل‌های tar صادرشده را دریافت کنیم. برای تست runtime و فرار، به میزبانی که container runtime را اجرا می‌کند یا یک پایگاه فرضِ‌نفوذ درون یک کانتینر نیاز داریم. پیش از شروع، دامنه و هر چیزی را که باید کنار گذاشته شود توافق می‌کنیم.

فقط image را تست می‌کنید یا runtime را هم؟

هر دو، و هرکدام به پرسشی متفاوت پاسخ می‌دهند. تحلیل image لایه‌های آسیب‌پذیر، secretها و انتخاب‌های ناامن ساخت را می‌یابد؛ تست runtime نشان می‌دهد آن imageها در عمل روی میزبان مجاز به چه کاری هستند. دامنه می‌تواند فقط‌image باشد اگر همین کافی است، اما این دو با هم تصویر واقعی را می‌دهند.

فرار از کانتینر چیست و چرا مهم است؟

فرار از کانتینر یعنی یک فرآیند از کانتینر خود به میزبان می‌گریزد؛ معمولاً از راه یک پرچم privileged، یک capability افزوده، یک mount میزبان یا socket متصل‌شده‌ی Docker. اهمیتش از این‌جاست که یک کانتینر به‌خطرافتاده را به تسلط بر میزبان و همه‌ی کانتینرهای دیگر روی آن تبدیل می‌کند، و یک اسکن ساده‌ی آسیب‌پذیری آن را نمی‌بیند.

آیا Docker daemon و registry را بررسی می‌کنید؟

بله. افشای daemon و socket را بررسی می‌کنیم (یک docker.sock متصل‌شده به کانتینر عملاً برابر با root میزبان است) و همچنین registry را: احراز هویت، این‌که imageها امضا شده و اصالتشان بررسی می‌شود یا نه، و این‌که سیاست‌های pull اجازه‌ی imageهای نامطمئن را می‌دهند یا خیر.

آیا تست برای یک محیط تولید در حال کار ایمن است؟

تحلیل image و بازبینی پیکربندی فقط‌خواندنی و ایمن است. آزمون‌های فعال (تلاش برای فرار) از پیش توافق و با احتیاط اجرا می‌شوند؛ ترجیح ما یک محیط staging است که آینه‌ی تولید باشد، و اگر ناچار روی تولید تست کنیم، محدودیت می‌گذاریم و یک نقطه‌ی تماس در سمت شما نگه می‌داریم تا اگر چیزی نادرست به نظر رسید فوراً متوقف شویم.

شدت یافته‌ها چگونه تعیین می‌شود؟

هر یافته یک امتیاز CVSS برای یک مبنای مشترک می‌گیرد که با اثر واقعی در محیط شما تعدیل می‌شود: مهاجم به چه می‌رسد، چقدر آسان، و آیا به میزبان یا داده‌ی حساس می‌انجامد. به همین دلیل دو مسئله با CVSS یکسان ممکن است اولویت متفاوت بگیرند.

آیا تست مجدد پس از رفع انجام می‌شود و چقدر طول می‌کشد؟

بله؛ پس از رفع، یافته‌های گزارش‌شده را دوباره تست می‌کنیم تا مطمئن شویم هر رفع پابرجاست و شکاف تازه‌ای باز نکرده است. مدت زمان به تعداد imageها و پیچیدگی runtime بستگی دارد؛ یک ارزیابی معمول حدود یک تا سه هفته طول می‌کشد و پس از دامنه‌گذاری برآورد دقیق می‌دهیم.

آماده شروع هستید؟
با تیم ما تماس بگیرید تا در مورد نیازهای ارزیابی امنیتی شما صحبت کنیم