Bulut Yerel Bilgi İşlem Vakfı’nın (CNCF) yaygın olarak benimsenen bir günlük işleme ve metrik toplama aracı olan akıcı bitinde kritik bir güvenlik kusuru, kurumsal bulut altyapılarını hizmet reddi (DOS) saldırılarına maruz bırakmıştır.
Olarak belirlendi CVE-2024-50608 Ve CVE-2024-50609Bu güvenlik açıkları – CVSS v3.1 şiddet ölçeğinde 8.9 puanı – Prometheus uzaktan yazma ve opentelemetri giriş eklentilerindeki HTTP başlıklarının uygunsuz kullanımı ile ilgilidir.
Ebryx’teki araştırmacılar, saldırganların kötü amaçlı yükler göndererek bu kusurları kullanabileceğini keşfettiler. Content-Length: 0
NULL POINTER DEREENTE (CWE-476) tetiklenmesi ve hizmeti çökertme1.
Güvenlik açıklarının teknik dökümü
Güvenlik açıkları, Metriklerin yutulması için gelen talepleri işleyen Fluent Bit’in HTTP Sunucusu uygulamasında bulunur.
Etkilenen eklentiler, Content-Length
Üstbilgi sıfır olarak ayarlanan ayrıştırıcı girişi doğrulayamaz ve başlatılmamış bir bellek işaretçisi düzenleyemez.
Örneğin, aşağıdakiler curl
komut güvenilir bir şekilde açılmamış örnekleri çöker:
bashcurl --path-as-is -i -s -k -X POST \
-H "Host: localhost:8080" \
-H "Content-Length: 0" \
--data-binary 'message "RkFSQU46TUVHQUNIQVIweDAx"' \
http://127.0.0.1:9090/api/prom/push
Kaza içinde meydana gelir cfl_sds_len
HTTP yükü işleme katmanından geçen boş bir işaretçinin uzunluğunu hesaplamaya çalışan işlev.
Backtrace analizi, header_lookup
işlev, nerede Content-Length
Doğrulama sıfır veya negatif değerler için kontrollerden yoksun 1:
celse if (i == MK_HEADER_CONTENT_LENGTH) {
// ...
if (val <= 0) { // Pre-patch: only checked for val < 0
return -1;
}
p -> header_content_length = val;
}
> 32 CPU çekirdeği olan sistemlerde ikinci bir güvenlik açığı, sınır dışı bir yazı (CWE-787) tanımlanmıştır.
Akıcı bit ne_utils_file_read_uint64
Fonksiyon, statik olarak tahsis edilen bir diziden uygunsuz bir şekilde indekslendi core_throttles_set[256]
çok çekirdekli sunucularda segmentasyon hatalarına neden olur1.
Bulanık metodoloji ve etki
Ebryx, akıcı bitin giriş işleyicilerini araştırmak için bir ağ protokolü bulantı olan Boofuzz kullandı.
Ekip, mutasyonel bulanık stratejileri kullanarak üç kritik eklenti – HTTP, Prometheus uzaktan yazma ve opentelemetri – hedefledi.
OpenTelemetri eklentisi için bu, protokol tamponlarının (Protobuf) ve HTTP başlıklarını manipüle etmeyi içeriyordu:
pythonfrom boofuzz import *
session = Session(target=Target(connection=TCPSocketConnection("localhost", 4318)))
s_initialize("HTTP POST")
s_static("Content-Length: 0\r\n\r\n") # Crash-inducing header
session.connect(s_get("HTTP POST"))
session.fuzz()
Bulanık Kampanya, tüm opentelemetri uç noktalarının (/v1/traces
– /v1/logs
– /v1/metrics
) kazalara duyarlıydı.
Üretim ortamlarında bu, günlük toplama boru hatlarını bozabilir, uygulama performansına ve güvenlik olaylarına görünürlüğü bozabilir.
Azaltma ve yama dağıtım
Akıcı bit koruyucular doğrulama yamaları yayınladı Content-Length
başlıklar ve CPU çekirdek endeksleri için sınır kontrolleri ekleme.
Yöneticiler şu adrese yükseltmelidir:
- Akıcı bit v3.0.4 (kararlı)
- Akıcı bit v2.2.2 (LTS)
Yapılandırma sertleştirme de önerilir:
text[INPUT]
name opentelemetry
listen 0.0.0.0
port 4318
# Enable TLS to mitigate unauthenticated attacks
tls on
tls.cert_file /etc/ssl/certs/fluent-bit.crt
tls.key_file /etc/ssl/private/fluent-bit.key
Endüstri sonuçları
15 milyardan fazla indirme ve günlük 10 milyon dağıtım ile akıcı bit, büyük bulut sağlayıcılarında gözlemlenebilirlik yığınlarının temelini oluşturuyor.
Patched örnekler Kubernetes kümelerinde, sunucusuz platformlarda ve SaaS izleme araçlarında basamaklı başarısızlık riski.
Ebryx’in bulguları, özellikle güvenilmeyen ağ verilerini işleyen bileşenler için CNCF projelerinde protokol seviyesi Fuzz testine yönelik kritik ihtiyacın altını çizmektedir1.
İşletmeler bulutun benimsenmesini hızlandırdıkça, telemetri verilerinin “borularını” güvence altına almak uygulama kodunu korumak kadar önemli hale gelir.
Free Webinar: Better SOC with Interactive Malware Sandbox for Incident Response, and Threat Hunting - Register Here