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_len
cfl_sds_len
cfl_sds
NULL
Güvenlik Açığı Olan Kod Yolu :
HTTP POST isteği
Content-Length: 0
alındı.Eklenti,
process_payload_traces_proto_ng
yü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)
len
varolmayan 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
, curl
saldı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: 0
zarif 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: 0
bir 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 .NULL
cfl_sds_len
cfl_sds
NULL
Güvenlik Açığı Olan Kod Yolu :
Content-Length: 0
Yük kontrollerini atlatan bir istek .process_payload_metrics_ng
varolmayan 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şimi
Etkisi : 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.