سرویس متادیتای نمونه(IMDS)
سرویسی در محیطهای ابری که اطلاعاتی درباره خود نمونهها از جمله اعتبارنامههای موقت را فراهم میکند و در آدرس 169.254.169.254 قابل دسترسی است.
تعریف کوتاه
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 میتوانند به کل زیرساخت دسترسی پیدا کنند
- پیشفرض در اکثر استقرارهای ابری
چگونه مهاجمان از آن استفاده میکنند
- پیدا کردن آسیبپذیری SSRF در برنامه
- وادار کردن برنامه به درخواست
http://169.254.169.254/... - استخراج اعتبارنامه موقت از پاسخ
- استفاده از اعتبارنامه با AWS CLI/SDK برای دسترسی به منابع
- افزایش امتیازات اگر نقش دسترسی بیش از حد داشته باشد
مثال معروف: نقض Capital One دقیقاً از این روش استفاده کرد
چگونه تشخیص یا پیشگیری کنیم
پیشگیری:
- استفاده از IMDSv2 (نیاز به درخواست PUT برای توکن اولیه)
- اعمال محدودیت hop برابر ۱ (جلوگیری از ارسال)
- استفاده از نقشهای IAM با حداقل مجوزها
- مسدود کردن 169.254.169.254 در فایروال برنامه
- اعتبارسنجی و محدود کردن ورودیهای URL
تشخیص:
- نظارت بر الگوهای دسترسی غیرعادی به متادیتا
- هشدار در مورد استفاده از اعتبارنامه از مکانهای غیرمنتظره
- ردیابی فراخوانیهای API انجام شده با اعتبارنامه متادیتا
- ثبت تمام درخواستهای توکن IMDSv2
باورهای غلط رایج
- "IMDS فقط مخصوص AWS است" - همه ارائهدهندگان بزرگ ابری آن را دارند
- "IMDSv2 از همه SSRFها جلوگیری میکند" - کمک میکند اما کاملاً بیاشکال نیست
- "نمیتوان از کانتینرها به IMDS دسترسی داشت" - میتوانید (مگر اینکه مسدود شده باشد)
- "اعتبارنامههای IMDS دائمی هستند" - هر ۶ ساعت چرخش میکنند
مثال واقعی
نقض Capital One (۲۰۱۹)
کد آسیبپذیر:
1url = request.args.get('url')2response = requests.get(url)3return response.content
حمله:
1url=http://169.254.169.254/latest/meta-data/iam/security-credentials/ISRM-WAF-Role
نتیجه: اعتبارنامه موقت گرفت، از آنها برای دسترسی به باکتهای S3 استفاده کرد و بیش از ۱۰۰ میلیون رکورد دانلود کرد.
اصطلاحات مرتبط
Cloud Infrastructure, Metadata, Credentials, SSRF, Access Key