آسیبپذیری RCE بدون احراز هویت در Argo CD که کل cluster کوبرنتیز رو در خطر میذاره
خلاصهٔ کاملتر
Synacktiv در ادامه سری مقالات CI/CD اونا، این بار ارگوسیدی - یکی از پرکاربردترین ابزارهای deploy در کوبرنتیز - رو بررسی کرده. Argo CD از پارادایم GitOps پیروی میکنه: Git repository منبع واقعیه، و Argo CD تضمین میکنه cluster کوبرنتیز با اون همخوانی داشته باشه.
بخش vulnerable کامپوننت repo-server هست - پلی بین Argo CD و Git repository. repo-server manifest های Kubernetes، chart های Helm، و config های منابع رو از Git میگیره و برمیگردونه. این کامپوننت باید با Git مستقیم تعامل کنه و به همین دلیل سطح دسترسی خاصی داره.
چرا این مهمه؟ Argo CD برای کارکرد درست امتیازات قابل توجهی در cluster نیاز داره. علاوه بر این، به repository های خصوصی Git دسترسی داره. اگه کسی بتونه repo-server رو compromise کنه، میتونه از این امتیازات برای نفوذ به کل cluster استفاده کنه. یه survey در ۲۰۲۳ نشون داد ۹۳٪ کاربران Argo CD ازش در production استفاده میکنن.
برای تحلیل یه codebase 238,000 خطی Go، تیم به CodeQL متوسل شد. CodeQL یه static analyzer قدرتمندیه که میشه باهاش query نوشت و data flow رو در سراسر function call ها ردیابی کرد. این ابزار برای پیدا کردن vulnerability هایی مثل injection که داده در طول کد جاریه ایدهآله.
تیم RemoteFlowSource های سفارشی برای Argo CD نوشت تا مسیر ورود داده از Git - که یه منبع غیرقابل اعتماده - رو تا جایی که ممکنه به یه sink خطرناک برسه ردیابی کنه. این تحلیل دادهها رو از ورودیهای external تا نقاط اجرای کد ردیابی کرد و آسیبپذیری رو پیدا کرد.
به گفته Synacktiv، این آسیبپذیری میتونه بدون احراز هویت exploit بشه. تأثیرش میتونه به دسترسی کامل به cluster کوبرنتیز - از جمله secrets، deployments، و منابع دیگه - منجر بشه. تیم یه ابزار هم برای آزمایش این مسئله توسعه داده.
نکات کلیدی:
- آسیبپذیری RCE بدون احراز هویت در repo-server Argo CD
- compromise احتمالی کل cluster کوبرنتیز به خاطر سطح دسترسی بالای Argo CD
- CodeQL برای تحلیل استاتیک codebase 238,000 خطی استفاده شد
- RemoteFlowSource های سفارشی برای ردیابی داده از Git تا sink های خطرناک نوشته شد
- ۹۳٪ کاربران Argo CD از اون در production استفاده میکنن




