External Secrets Operator reads information from a third-party service and automatically injects the values as Kubernetes Secrets. Starting in version 0.20.2 and prior to version 1.2.0, the `getSecretKey` template function, while introduced for senhasegura Devops Secrets Management (DSM) provider, has the ability to fetch secrets cross-namespaces with the roleBinding of the external-secrets controller, bypassing our security mechanisms. This function was completely removed in version 1.2.0, as everything done with that templating function can be done in a different way while respecting External Secrets Operator's safeguards As a workaround, use a policy engine such as Kubernetes, Kyverno, Kubewarden, or OPA to prevent the usage of `getSecretKey` in any ExternalSecret resource.
External Secrets Operator versions 0.20.2 through 1.1.x contain a critical privilege escalation vulnerability in the getSecretKey template function that allows unauthorized cross-namespace secret access in Kubernetes environments. This vulnerability bypasses security mechanisms by leveraging the external-secrets controller's roleBinding permissions. The vulnerability has been completely removed in version 1.2.0, making immediate patching essential for organizations running affected versions.
IMMEDIATE ACTIONS:
1. Identify all Kubernetes clusters running External Secrets Operator versions 0.20.2 through 1.1.x using: kubectl get deployment -A | grep external-secrets
2. Audit all ExternalSecret resources for usage of getSecretKey template function: kubectl get externalsecrets -A -o yaml | grep -i getsecretkey
3. Review RBAC bindings for external-secrets-controller service account to identify overly permissive roles
PATCHING GUIDANCE:
1. Upgrade External Secrets Operator to version 1.2.0 or later immediately
2. Test upgrade in non-production environment first
3. Verify all ExternalSecret resources function correctly post-upgrade
4. Monitor logs for any authentication failures during transition
COMPENSATING CONTROLS (if immediate patching not possible):
1. Implement Kubernetes Network Policies to restrict external-secrets controller communication
2. Deploy Kyverno or OPA policies to block any ExternalSecret resources containing getSecretKey function
3. Restrict RBAC permissions for external-secrets-controller to only required namespaces
4. Enable Kubernetes audit logging for all secret access attempts
5. Implement secret rotation policies for all credentials managed by External Secrets Operator
DETECTION RULES:
1. Monitor for ExternalSecret resources with getSecretKey in template specifications
2. Alert on cross-namespace secret access attempts by external-secrets-controller
3. Track RBAC role bindings changes for external-secrets service account
4. Log and alert on any failed secret access attempts across namespaces
الإجراءات الفورية:
1. تحديد جميع مجموعات Kubernetes التي تشغل مشغل الأسرار الخارجية من الإصدارات 0.20.2 إلى 1.1.x باستخدام: kubectl get deployment -A | grep external-secrets
2. تدقيق جميع موارد ExternalSecret للتحقق من استخدام دالة getSecretKey: kubectl get externalsecrets -A -o yaml | grep -i getsecretkey
3. مراجعة ربط RBAC لحساب خدمة external-secrets-controller لتحديد الأدوار المفرطة في الأذونات
إرشادات التصحيح:
1. ترقية مشغل الأسرار الخارجية إلى الإصدار 1.2.0 أو أحدث فوراً
2. اختبار الترقية في بيئة غير الإنتاج أولاً
3. التحقق من أن جميع موارد ExternalSecret تعمل بشكل صحيح بعد الترقية
4. مراقبة السجلات لأي فشل في المصادقة أثناء الانتقال
الضوابط البديلة (إذا لم يكن التصحيح الفوري ممكناً):
1. تنفيذ سياسات شبكة Kubernetes لتقييد اتصالات متحكم الأسرار الخارجية
2. نشر سياسات Kyverno أو OPA لحظر أي موارد ExternalSecret تحتوي على دالة getSecretKey
3. تقييد أذونات RBAC لمتحكم external-secrets-controller إلى مساحات الأسماء المطلوبة فقط
4. تفعيل تسجيل تدقيق Kubernetes لجميع محاولات الوصول إلى الأسرار
5. تنفيذ سياسات تدوير الأسرار لجميع بيانات الاعتماد المدارة بواسطة مشغل الأسرار الخارجية
قواعد الكشف:
1. مراقبة موارد ExternalSecret التي تحتوي على getSecretKey في مواصفات القالب
2. تنبيه محاولات الوصول إلى الأسرار عبر مساحات الأسماء بواسطة external-secrets-controller
3. تتبع تغييرات ربط دور RBAC لحساب خدمة external-secrets
4. تسجيل والتنبيه على أي محاولات وصول فاشلة إلى الأسرار عبر مساحات الأسماء