Fluent Bit OpenTelemetry ve Fluent Bit Prometheus Güvenlik Açığı

 

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 :  

  1. HTTP POST isteği  Content-Length: 0 alındı.

  2. Eklenti,  process_payload_traces_proto_ng yükü işlemek için çağrılar yapar.

  3. NULL İçerik uzunluğu sıfır olduğu için yük işaretçisi kalır  .

  4. 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
,  curlsaldırgan kötü biçimlendirilmiş bir istek gönderir:

vuruş
Kopyala
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:

Kopyala
[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ı

  1. Fluent Bit'i güncelleyin : 3.1.9'dan sonraki sürümlerde yayınlanan yamayı uygulayın.

  2. Ağ Güçlendirme : Güvenlik duvarlarını veya Kubernetes ağ politikalarını kullanarak OpenTelemetry uç noktasına erişimi kısıtlayın.

  3. 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:

C
Kopyala
// 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 :

  1. Content-Length: 0 Yük kontrollerini atlatan bir istek  .

  2. process_payload_metrics_ng varolmayan bir yükü ayrıştırmaya çalışır.

  3. 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:

vuruş
Kopyala
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:

Kopyala
[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ı

  1. Fluent Bit Yaması : 3.1.9'dan daha düşük bir sürüme yükseltin.

  2. Ağ Kontrolleri : Prometheus Uzaktan Yazma uç noktasının görünürlüğünü sınırlayın.

  3. 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:

C
Kopyala
// 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.



Yorum Gönder

Daha yeni Daha eski

İletişim Formu