KavLabs
خانهبلاگ
KavLabs

یادداشت‌هایی از ذهن‌های کاوشگر، برای ذهن‌های کنجکاو

پرهام·پرهام·زال·زال·
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
نوشته‌هادسته‌بندی‌هاجستجوی پیشرفتهلاگ تغییرات

©۲٬۰۲۶ KavLabs — تمام حقوق محفوظ است

ساخته‌شده با عشق توسط پرهام و زال

واژه‌نامه
۰۷ اسفند ۱۴۰۴امنیت ابرمتوسطزبان: فارسی

سرویس متادیتای نمونه(IMDS)

متوسطنسخه انگلیسی

سرویسی در محیط‌های ابری که اطلاعاتی درباره خود نمونه‌ها از جمله اعتبارنامه‌های موقت را فراهم می‌کند و در آدرس 169.254.169.254 قابل دسترسی است.

ابرawsمتادیتااعتبارنامهssrf

تعریف کوتاه

IMDS یه نقطه پایان جادوییه که سرورهای ابری می‌تونن باهاش حرف بزنن. ازش بپرس "من کی هستم؟" و همه چیز رو بهت می‌گه — از جمله رمزهای موقت (اعتبارنامه) برای دسترسی به منابع ابری دیگه. مشکل: مهاجمان عاشق هدف قرار دادنش از طریق SSRF هستن.

تعریف کامل

سرویس متادیتای نمونه (IMDS) سرویسی است که توسط پلتفرم‌های ابری (AWS، GCP، Azure) ارائه می‌شود و به نمونه‌های در حال اجرا اجازه می‌دهد بدون فراخوانی API خارجی، اطلاعاتی درباره خودشان دریافت کنند.

چه چیزی ارائه می‌دهد:

  • اعتبارنامه نقش IAM (کلیدهای دسترسی)
  • شناسه نمونه و پیکربندی
  • اطلاعات شبکه
  • داده کاربر (اغلب حاوی اسرار)
  • جزئیات گروه امنیتی

روش دسترسی:

  • AWS: http://169.254.169.254/latest/meta-data/
  • GCP: http://metadata.google.internal/
  • Azure: http://169.254.169.254/metadata/instance

نسخه‌ها:

  • IMDSv1: HTTP GET ساده (بدون احراز هویت)
  • IMDSv2: نیاز به توکن جلسه (امن‌تر)

چرا مهم است

  • حیاتی برای عملیات ابری (نمونه‌ها به اعتبارنامه نیاز دارند)
  • هدف اصلی در حملات SSRF
  • اعتبارنامه‌های IMDS می‌توانند به کل زیرساخت دسترسی پیدا کنند
  • پیش‌فرض در اکثر استقرارهای ابری

چگونه مهاجمان از آن استفاده می‌کنند

  1. پیدا کردن آسیب‌پذیری SSRF در برنامه
  2. وادار کردن برنامه به درخواست http://169.254.169.254/...
  3. استخراج اعتبارنامه موقت از پاسخ
  4. استفاده از اعتبارنامه با AWS CLI/SDK برای دسترسی به منابع
  5. افزایش امتیازات اگر نقش دسترسی بیش از حد داشته باشد

مثال معروف: نقض Capital One دقیقاً از این روش استفاده کرد

چگونه تشخیص یا پیشگیری کنیم

پیشگیری:

  • استفاده از IMDSv2 (نیاز به درخواست PUT برای توکن اولیه)
  • اعمال محدودیت hop برابر ۱ (جلوگیری از ارسال)
  • استفاده از نقش‌های IAM با حداقل مجوزها
  • مسدود کردن 169.254.169.254 در فایروال برنامه
  • اعتبارسنجی و محدود کردن ورودی‌های URL

تشخیص:

  • نظارت بر الگوهای دسترسی غیرعادی به متادیتا
  • هشدار در مورد استفاده از اعتبارنامه از مکان‌های غیرمنتظره
  • ردیابی فراخوانی‌های API انجام شده با اعتبارنامه متادیتا
  • ثبت تمام درخواست‌های توکن IMDSv2

باورهای غلط رایج

  • "IMDS فقط مخصوص AWS است" - همه ارائه‌دهندگان بزرگ ابری آن را دارند
  • "IMDSv2 از همه SSRFها جلوگیری می‌کند" - کمک می‌کند اما کاملاً بی‌اشکال نیست
  • "نمی‌توان از کانتینرها به IMDS دسترسی داشت" - می‌توانید (مگر اینکه مسدود شده باشد)
  • "اعتبارنامه‌های IMDS دائمی هستند" - هر ۶ ساعت چرخش می‌کنند

مثال واقعی

نقض Capital One (۲۰۱۹)

کد آسیب‌پذیر:

python
1url = request.args.get('url')
2response = requests.get(url)
3return response.content

حمله:

bash
1url=http://169.254.169.254/latest/meta-data/iam/security-credentials/ISRM-WAF-Role

نتیجه: اعتبارنامه موقت گرفت، از آنها برای دسترسی به باکت‌های S3 استفاده کرد و بیش از ۱۰۰ میلیون رکورد دانلود کرد.

اصطلاحات مرتبط

Cloud Infrastructure, Metadata, Credentials, SSRF, Access Key

منابع و مراجع

  • docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

مفاهیم مرتبط

زیرساخت ابری

منابع محاسباتی از راه دور (سرورها، ذخیره‌سازی، شبکه‌ها) که توسط شرکت‌هایی مثل AWS، Google Cloud یا Azure ارائه می‌شوند و از طریق اینترنت بدون نیاز به خرید سخت‌افزار فیزیکی در دسترس هستند.

متادیتا

داده‌ای که داده‌های دیگر را توصیف می‌کند. در محاسبات ابری، اطلاعات پیکربندی درباره نمونه‌ها از جمله اعتبارنامه‌های موقت است.

اعتبارنامه

اطلاعات احراز هویت مانند رمز عبور، کلیدهای API، توکن‌ها یا گواهی‌ها که برای تأیید هویت و اعطای دسترسی استفاده می‌شود.

جعل درخواست سمت سرور(SSRF)

آسیب‌پذیری که به مهاجمان اجازه می‌دهد سرور را وادار به ارسال درخواست به آدرس‌های داخلی یا خارجی کنند.