بردارهای حمله به میکروسرویسها در اپهای مدرن
خلاصهٔ کاملتر
معماری میکروسرویسها این روزا توی بانکداری، فینتک و اپهای سازمانی خیلی رایجه. از دید تیم DevOps این معماری یعنی انعطاف، مقیاسپذیری و دپلوی سریعتر. اما از دید یه محقق امنیتی، هر سرویس جدید یعنی یه سطح حمله جدید؛ APIهای داخلی بیشتر، توکنهای بیشتر، و فرصت بیشتر برای misconfiguration.
مصطفی بیلگیچی، محقق امنیتی Synack Red Team، در این مقاله سه بردار حمله واقعی رو که حین تست برنامههای مختلف کشف کرده با جزئیات فنی توضیح داده. هر سه مستقیماً از نحوه ارتباط میکروسرویسها با هم ناشی میشن.
بردار اول: SSRF به سرویسهای داخلی PDF
در یه تست، محقق متوجه شد اپ برای دانلود PDF تاریخچه تراکنشها، درخواست رو بهصورت پراکسی به یه میکروسرویس داخلی ارسال میکنه:
http://extractinternal.redacted.corp/path/endpoint/123456789_XIM00.PDF
اولین آزمایشهای SSRF روی آدرسهایی مثل 127.0.0.1 یا metadata endpoint های AWS جواب نداد چون سرور فقط پاسخهایی با فرمت PDF قبول میکرد. اما همین رفتار یه سرنخ مهم بود: سرویس داخلی ownership مدارک رو اعتبارسنجی نمیکرد. با تغییر ساده شناسه در مسیر، PDF کاربر دیگهای برگشت. بعد با فازینگ subdomain های داخلی، سرویسهای دیگهای هم پیدا شدن و همون حمله روشون جواب داد.
بردار دوم: Token Scope Misconfiguration بین میکروسرویسها
یه باگ رایج دیگه اینه که توکنهای احراز هویت scope درستی ندارن. وقتی سرویس A یه توکن برای سرویس B صادر میکنه، اگه سرویس C همون توکن رو بدون بررسی scope قبول کنه، مهاجم میتونه با یه توکن محدود به منابعی دسترسی پیدا کنه که اصلاً نباید داشته باشه. این مشکل توی معماریهایی که سرویسها بهمرور زمان توسعه پیدا کردن و سیاست یکپارچهای برای توکنها ندارن خیلی شایعه.
چرا این مشکلات رخ میده؟
معمولاً تیمهای توسعه روی امنیت لایه خارجی (API gateway، احراز هویت کاربر) تمرکز میکنن و فرض میکنن ترافیک داخلی بین سرویسها امنه. این فرض اشتباهه. هر سرویس باید بهتنهایی اعتبارسنجی کنه که درخواست واقعاً مجاز هست یا نه.
چی باید انجام داد؟
اعتبارسنجی ownership در هر endpoint داخلی، تعریف دقیق scope برای توکنهای inter-service، و تست منظم سطح حمله داخلی (نه فقط خارجی) از مهمترین اقداماتیه که تیمهای امنیتی باید روشون تمرکز کنن. پنتست واقعی باید ارتباطات بین سرویسها رو هم پوشش بده.
نکات کلیدی:
- میکروسرویسها سطح حمله داخلی رو بهشدت گسترش میدن
- SSRF در یه سرویس میتونه به نشت داده در چندین سرویس دیگه ختم بشه
- سرویسهای داخلی باید ownership و مجوز درخواستها رو مستقل اعتبارسنجی کنن
- scope توکنهای inter-service باید دقیق و محدود تعریف بشه
- فرض «ترافیک داخلی امنه» یکی از خطرناکترین اشتباهات معماری امنیتیه




