2 Fluent Bit OpenTelemetry ve Fluent Bit Prometheus Güvenlik Açığı
CVE-2024-50609 – Fluent Bit OpenTelemetry Giriş Eklentisi Uzaktan DoS Güvenlik Açığı
Genel bakış
CVE-2024-50609, Fluent Bit 3.1.9'u etkileyen kritik bir hizmet reddi (DoS) güvenlik açığıdır. Bu kusur, . ile bir HTTP isteği işlenirken çöken OpenTelemetry giriş eklentisinde bulunur Content-Length: 0. Eklentinin uç noktasına ağ erişimi olan saldırganlar, hizmet kullanılabilirliğini bozmak için bu güvenlik açığından yararlanabilir.
Teknik Analiz
OpenTelemetry eklentisi ( opentelemetry_prot.c) telemetri verileri içeren gelen HTTP isteklerini işler. Bir istek belirttiğinde Content-Length: 0, eklenti bir yükün yokluğunu doğrulamada başarısız olur. Bu, bir işaretçinin dize arabelleğinin uzunluğunu hesaplayan bir işlev olan NULL 'e geçirilmesiyle sonuçlanır. Geçerli bir yapı işaretçisi varsayıldığından, bir işaretçinin başvurusunun kaldırılması bir segmentasyon hatasını tetikler ve Fluent Bit hizmetini çökertir.cfl_sds_lencfl_sds_lencfl_sdsNULL
Güvenlik Açığı Olan Kod Yolu :
HTTP POST isteği
Content-Length: 0alındı.Eklenti,
process_payload_traces_proto_ngyükü işlemek için çağrılar yapar.NULLİçerik uzunluğu sıfır olduğu için yük işaretçisi kalır .cfl_sds_len(NULL)lenvarolmayan bir yapının alanına erişmeye çalışır ve çökmeye neden olur.
Örnek Saldırı Senaryosu
Adım 1 : Hedefi Tanımlayın
Bir saldırgan, OpenTelemetry eklentisinin portunda açık olduğu bir Fluent Bit (v3.1.9) örneği keşfeder 4318.
Adım 2 : Exploit'i Oluşturun
, curlsaldırgan kötü biçimlendirilmiş bir istek gönderir:
curl -X POST -H "İçerik Uzunluğu: 0" http://hedef-ip:4318
Adım 3 : Çökmeyi Tetikleyin
Eklenti isteği işler, var olmayan bir yükü okumaya çalışır ve bir NULL işaretçiyi dereferans eder. Fluent Bit çöker ve şu şekilde bir hata kaydeder:
[hata] [giriş:opentelemetry:opentelemetry.0] Segmentasyon hatası (çekirdek dökümü)Etkisi : Hizmet, manuel olarak yeniden başlatılıncaya kadar kullanılamaz hale gelir ve Kubernetes gibi ortamlarda günlük toplama işlemi kesintiye uğrar.
Azaltma Adımları
Fluent Bit'i güncelleyin : 3.1.9'dan sonraki sürümlerde yayınlanan yamayı uygulayın.
Ağ Güçlendirme : Güvenlik duvarlarını veya Kubernetes ağ politikalarını kullanarak OpenTelemetry uç noktasına erişimi kısıtlayın.
Giriş Doğrulaması : Eklentiyi
Content-Length: 0zarif bir şekilde işleyecek şekilde değiştirin (örneğin, bir HTTP 400 hatası döndürün).
Kod Düzeltme Örneği
Yama uygulanmış kod, işleme başlamadan önce geçerli bir yük olup olmadığını kontrol eder:
// Opentelemetry_prot.c'de (process_payload_traces_proto_ng) if ( content_length == 0 || payload == NULL ) { flb_plg_error ( ctx -> ins , "Boş payload" ) ; return - 1 ; } size_t len = cfl_sds_len ( payload ) ; // Doğrulamadan sonra güvenli
Çözüm
CVE-2024-50609, veri işleme araçlarında uygunsuz giriş doğrulamasının risklerini vurgular. Fluent Bit kullanan kuruluşlar, istismarı engellemek için yama uygulama veya ağ denetimlerini uygulama konusunda önceliklendirmelidir.
CVE-2024-50608 – Fluent Bit Prometheus Uzaktan Yazma Eklentisi Uzaktan DoS Güvenlik Açığı
Genel bakış
CVE-2024-50608, Fluent Bit 3.1.9'un Prometheus Remote Write giriş eklentisindeki bir DoS güvenlik açığıdır. Saldırganlar, yük işlemede Content-Length: 0bir işaretçi başvurusunu istismar ederek bir istek göndererek hizmeti çökertebilir .NULL
Teknik Analiz
Prometheus Remote Write eklentisi ( prom_rw_prot.c) metrik verilerini HTTP üzerinden işler. Bir istek alındığında Content-Length: 0 , eklentinin işlevi 'e bir yük işaretçisi process_payload_metrics_ng geçirir . Geçerli bir yapı bekleyen bu işlev , 'e başvurulması nedeniyle çöker .NULLcfl_sds_lencfl_sdsNULL
Güvenlik Açığı Olan Kod Yolu :
Content-Length: 0Yük kontrollerini atlatan bir istek .process_payload_metrics_ngvarolmayan bir yükü ayrıştırmaya çalışır.cfl_sds_len(NULL)segmentasyon hatasına neden olur.
Örnek Saldırı Senaryosu
Adım 1 : Açığa Çıkan Uç Noktayı Bulun
Saldırgan, Prometheus Remote Write eklentisini kullanarak port üzerinde bir Fluent Bit örneği belirler 8428.
Adım 2 : Güvenlik Açığını Kullanın
En azından bir HTTP isteği gönderilir:
curl -X POST -H "İçerik Uzunluğu: 0" http://hedef-ip:8428/api/v1/write
Adım 3 : Hizmet Çökmesini Gözlemleyin
Fluent Bit çöküyor, metrik toplamayı bozuyor. Günlükler şunları gösteriyor:
[hata] [giriş:prometheus_remote_write:prom_rw.0] Geçersiz bellek erişimiEtkisi : Metrik hatları (örneğin, Prometheus-Fluent Bit entegrasyonları) başarısız olur ve izleme sistemlerini etkiler.
Azaltma Adımları
Fluent Bit Yaması : 3.1.9'dan daha düşük bir sürüme yükseltin.
Ağ Kontrolleri : Prometheus Uzaktan Yazma uç noktasının görünürlüğünü sınırlayın.
Kod Düzeltmesi :
Content-Lengthİşleme başlamadan önce yük varlığını doğrulayın ve onaylayın.
Kod Düzeltme Örneği
Düzeltilen kod, boş yükler için bir kontrol içeriyor:
// prom_rw_prot.c (process_payload_metrics_ng) dosyasında if ( content_length == 0 || payload == NULL ) { flb_plg_error ( ctx -> ins , "Boş payload alındı" ) ; return - 1 ; } size_t len = cfl_sds_len ( payload ) ; // Güvenli bir şekilde devam edin
Çözüm
CVE-2024-50608, ağa bakan hizmetlerde titiz giriş doğrulamasının önemini vurgular. İstismarı önlemek için derhal yama veya ağ segmentasyonu önerilir.
Her iki güvenlik açığı da önemsiz giriş doğrulama ihmallerinin kritik hizmet kesintilerine nasıl yol açabileceğini göstermektedir. Yöneticiler benzer sorunlar için tüm Fluent Bit eklentilerini denetlemeli ve sıkı ağ erişim kontrolleri uygulamalıdır.