Yaygın olarak kullanılan ingress-nginx Kubernetes denetleyicisinde CVE-2024-7646 olarak izlenen kritik bir güvenlik açığı keşfedildi. Bu kusur, saldırganların açıklama doğrulamasını atlamasına olanak tanır, Kubernetes kümeleri için önemli bir risk oluşturur ve güvenlik ekiplerinden ve küme yöneticilerinden acil müdahale talep eder.
Güvenlik araştırmacısı André Storfjord Kristiansen (@dev-bio on GitHub), ingress-nginx’in Ingress nesnelerindeki ek açıklamaları doğrulama biçimindeki açığı keşfetti.
Kubernetes’te açıklamalar nesnelere meta veri ekler ve ingress-nginx, ingress denetleyicisinin çeşitli davranışlarını yapılandırır.
Saldırganlar bu kusurdan yararlanarak, doğrulama kontrollerini atlatarak belirli açıklamalara kötü amaçlı içerik enjekte edebilir. Bu, keyfi komut enjeksiyonuna ve varsayılan yapılandırmalarda küme sırlarına genellikle geniş erişimi olan ingress-nginx denetleyicisinin kimlik bilgilerine potansiyel erişime yol açabilir.
Kubernetes CVE-2024-7646 güvenlik açığının kod örnekleriyle teknik analizi aşağıdadır:
CVE-2024-7646’nın Teknik Analizi
CVE-2024-7646, saldırganların açıklama doğrulamasını atlamasına izin veren ingress-nginx Kubernetes denetleyicisindeki yüksek öneme sahip bir güvenlik açığıdır. Teknik ayrıntılara inelim.
Armosec’in araştırmasına göre, sorun ingress-nginx’in Ingress nesnelerindeki açıklamaları nasıl doğruladığıdır. Kubernetes’teki açıklamalar, nesnelere tanımlayıcı olmayan meta verileri eklemek için kullanılan anahtar-değer çiftleridir. Ingress-nginx, ingress denetleyicisinin çeşitli davranışlarını yapılandırmak için açıklamaları kullanır.
Bu güvenlik açığı, saldırganların belirli açıklamalara satır başı (\r) karakterleri de dahil olmak üzere kötü amaçlı içerik enjekte etmesine olanak tanır. Bu, doğrulama kontrollerini atlatır ve keyfi komut enjeksiyonuna yol açabilir.
İşte bu güvenlik açığından faydalanan kötü amaçlı bir Ingress nesnesinin örneği:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: malicious-ingress
annotations:
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "X-Malicious-Header: Benign";
more_set_headers "X-Hacked: True\r
HTTP/1.1 200 OK
Content-Type: text/html
\r
\r
Hacked!
Bu örnekte saldırgan, HTTP yanıtını şuraya enjekte eder: configuration-snippet
satırbaşı dönüşleri kullanan açıklama. ingress-nginx bu açıklamayı işlediğinde, girdiyi doğru bir şekilde doğrulamayı ve temizlemeyi başaramaz ve enjekte edilen yanıtın istemciye geri gönderilmesine izin verir.
CVE-2024-7646’nın başarılı bir şekilde istismar edilmesi saldırganların şunları yapmasına olanak tanıyabilir:
- XSS saldırılarına yol açabilecek keyfi HTTP yanıtları enjekte edin
- Ingress-nginx denetleyicisi bağlamında keyfi komutları yürütün
- Genellikle küme sırlarına geniş erişime sahip olan ingress-nginx denetleyicisinin kimlik bilgilerine erişim sağlayın
Bu durum, yönetici olmayan kullanıcıların Ingress nesneleri oluşturabildiği çok kiracılı ortamlarda özellikle tehlikelidir.
Are you from SOC and DFIR Teams? Analyse Malware Incidents & get live Access with ANY.RUN -> Get 14 Days Free Access
Azaltma
Bu güvenlik açığını azaltmak için:
- Düzeltmeyi içeren ingress-nginx’i v1.11.2 veya sonraki bir sürüme yükseltin.
- Ingress nesnelerini kimlerin oluşturabileceğini/değiştirebileceğini sınırlamak için katı RBAC politikaları uygulayın:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: ingress-nginx
name: ingress-creator
rules:
- apiGroups: ["networking.k8s.io"]
resources: ["ingresses"]
verbs: ["create", "get", "list", "watch"]
- Ingress nesnelerini doğrulamak için ValidatingAdmissionWebhook gibi kabul denetleyicilerini kullanın:
func validateIngress(ar v1.AdmissionReview) *v1.AdmissionResponse {
ingress := &networkingv1.Ingress{}
deserializer := codecs.UniversalDeserializer()
if _, _, err := deserializer.Decode(ar.Request.Object.Raw, nil, ingress); err != nil {
return &v1.AdmissionResponse{Result: &metav1.Status{Message: err.Error()}}
}
for _, a := range ingress.ObjectMeta.Annotations {
if strings.Contains(a, "\r") {
return &v1.AdmissionResponse{
Result: &metav1.Status{
Message: "Annotation contains invalid character",
},
Allowed: false,
}
}
}
return &v1.AdmissionResponse{Allowed: true}
}
Bu webhook, açıklamalarda \r’nin varlığını kontrol eder ve bulunursa Giriş’i reddeder.
- İstismar girişimlerini tespit etmek için Kubernetes denetim günlüğünü etkinleştirin.
CVE-2024-7646’nın teknik ayrıntılarını anlayarak ve bu azaltmaları uygulayarak Kubernetes kümelerinizi bu tehlikeli güvenlik açığından koruyabilirsiniz. Dikkatli olun, sistemlerinizi güncel tutun ve sağlam bir güvenlik duruşunu sürdürmek için en iyi güvenlik uygulamalarına uyun.
Kubernetes Güvenliğinin Önemi
Bu güvenlik açığı, Kubernetes ortamlarında sürekli dikkat ve proaktif güvenlik önlemlerine duyulan ihtiyacın çarpıcı bir hatırlatıcısı olarak hizmet ediyor. Kubernetes benimsenmesi artmaya devam ettikçe, yamalarla güncel kalmak, en iyi güvenlik uygulamalarına uymak ve ortaya çıkan tehditleri sürekli olarak izlemek giderek daha kritik hale geliyor.
Düzenli güvenlik denetimleri, hızlı yama ve RBAC ve ağ politikalarının doğru uygulanması, sağlam bir Kubernetes güvenlik duruşunu sürdürmek için temel stratejilerdir. ARMO Platform gibi araçlar, kümenizin güvenlik durumu hakkında değerli içgörüler sağlayabilir.
Bu güvenlik açığının ortamınızda istismar edildiğinden şüpheleniyorsanız, şu adrese başvurun: [email protected] rehberlik ve destek için. Birlikte çalışarak ve proaktif kalarak, Kubernetes topluluğu, gelişen tehditlere karşı kümelerimizin sürekli dayanıklılığını ve güvenliğini sağlayabilir.
Free Webinar on Detecting & Blocking Supply Chain Attack -> Book your Spot