XQUIC'te Kritik XRING Açığı: HTTP/3 Sunucuları Uzaktan Çökertilebiliyor Windows

XQUIC'te Kritik XRING Açığı: HTTP/3 Sunucuları Uzaktan Çökertilebiliyor

Alibaba'nın XQUIC kütüphanesinde keşfedilen XRING açığı, sadece 260 baytlık normal QPACK trafiğiyle sunucuların çökmesine neden oluyor.

Alibaba'nın açık kaynaklı QUIC ve HTTP/3 kütüphanesi XQUIC'te kritik bir güvenlik açığı keşfedildi. FoxIO araştırmacısı Sébastien Féry tarafından 8 Temmuz'da kamuoyuna duyurulan ve XRING adı verilen bu açık, uzaktaki herhangi bir istemcinin tamamen yasal trafikle sunucuyu çökertmesine olanak tanıyor. Açığın henüz bir yaması bulunmuyor. Féry, saldırının herhangi bir oturum açma veya bozuk paket gerektirmediğini, sadece yaklaşık 260 baytlık sıradan QPACK trafiğinin sunucu sürecini durdurmaya yettiğini belirtiyor.

XQUIC açık kaynak olduğu için risk yalnızca Alibaba'ya ait değil. Kütüphaneyi varsayılan QPACK ayarlarıyla kullanan ve HTTP/3 sunan her sunucu etkileniyor. Bu sunucular arasında Alibaba'nın Nginx tabanlı web sunucusu Tengine de bulunuyor. FoxIO'ya göre Tengine, Alibaba'nın bulut ve CDN hizmetlerinde, Taobao ve Alipay gibi sitelerde kullanılıyor. XQUIC'in v1.9.4'e kadar olan tüm sürümleri (en güncel sürüm dahil) bu açıktan etkileniyor. 10 Temmuz itibarıyla sabit bir sürüm veya CVE numarası bulunmuyor.

Açığın kaynağı, HTTP/3'ün başlık sıkıştırması için kullandığı QPACK mekanizmasında yatıyor. HTTP/3, aynı başlığı (örneğin user-agent) tekrar tekrar göndermekten kaçınmak için QPACK kullanır. Bu yöntem, istemcinin sunucuya ortak bir tablo oluşturmasını ve yeniden boyutlandırmasını söylediği özel bir kontrol kanalı (encoder stream) üzerinden çalışır. XQUIC, bu tablonun baytlarını bir halka tamponda (ring buffer) saklar; bu, verinin dolduğunda başa sarıldığı sabit bir bellek bloğudur.

Detaylar ve Etkileri

İstemci tabloyu büyütmek istediğinde, XQUIC daha büyük bir tampon ayırır ve eski veriyi yenisine kopyalar. Bu kopyalama işlemi, verinin eski tamponda, yeni tamponda, her ikisinde veya hiçbirinde sarmalanma durumuna göre dört farklı senaryoya sahiptir. Bu senaryolardan birinde, kod, kalan kuyruk verisinin boyutunu eski tamponun kapasitesi yerine yeni, daha büyük tamponun kapasitesine göre hesaplar. Bu ciddi bir yanlış sayıma yol açar. Örneğin, 64 baytlık bir tabloyu yazma imleci sona yakınken 65 bayta büyütmek istediğinizde, XQUIC gerçekte 6 bayt olması gerekirken 70 bayt kuyruk verisi olduğunu varsayar.

Bu yanlış sayı, bir bellek kopyalama işlemine gider. Kopyalama uzunluğu, yanlış sayının daha küçük bir değerden çıkarılmasıyla elde edilir. Uzunluk işaretsiz bir size_t türü olduğu için, bu işlem taşmaya (underflow) neden olur ve değer neredeyse maksimum bir sayıya dönüşür. Bu da kopyalamanın bellek sınırlarının dışına taşmasına yol açar. FoxIO'nun Ubuntu 26.04'teki derlemesinde, glibc'nin _FORTIFY_SOURCE=2 özelliği bu hatalı uzunluğu yakalayarak süreci sonlandırdı. Bu koruma olmadan, kopyalama eski tampondan yeni tamponun sonunu aşarak bellek dışına yazma yapar. Féry çökme gösterdi ancak bu bozulmanın daha fazla istismar edilip edilemeyeceğini test etmedi.

Önemli Gelişmeler

Saldırıda kullanılan değerler QPACK kurallarını ihlal etmiyor. XQUIC varsayılan olarak 16 KiB dinamik tablo sınırı duyurur; saldırı yükü önce 64, ardından 65 bayt ister. İstemcinin yapması gereken tek şey, tabloyu hatalı koda neden olacak şekilde tam sarmalanmış bir düzene getirmektir. FoxIO, bu hatanın XQUIC'in ilk genel sürümü olan Ocak 2022'den beri var olduğunu ve bir proof-of-concept'in kamuya açık olduğunu belirtiyor. XRING, HTTP/2 ve HTTP/3 yığınlarındaki bir dizi uzaktan çökme açığının sonuncusu. Üç hafta önce, NGINX'in HTTP/3 modülünde (CVE-2026-42530) benzer bir kullan-after-free açığı raporlanmıştı.

Haziran ayında, Calif'in HTTP/2 Bomb saldırısı, HPACK (HTTP/2'nin başlık sıkıştırma yöntemi) ve QPACK'ın öncülünü kullanarak Nginx, Apache, IIS ve Envoy'da hizmet reddine neden olmuştu. Şubat ayında ise HAProxy, biri XRING'dekiyle aynı türden (integer underflow) olan iki QUIC çökme açığını yamalamıştı. Ancak bu açık, bozuk bir paket gerektirirken XRING bunu gerektirmiyor. Fark tam da bu: yasal girdi, tek bir aritmetik hata ve ölü bir sunucu.

Sistem Güvenliği

FoxIO, bir çökme gösterdi ancak kod yürütme göstermedi ve vahşi ortamda herhangi bir istismar rapor etmedi. Araştırmacılar, 7 Nisan'da projenin güvenlik politikası aracılığıyla Alibaba'ya e-posta gönderdiklerini, üç iş günü içinde yanıt sözü verilmesine rağmen 9 Mayıs'a kadar dört kez daha takip yaptıklarını ancak yanıt alamadıklarını belirtiyor. The Hacker News, Alibaba'ya bir yama ve CVE'nin gelip gelmeyeceğini, FoxIO'nun beş bildirim girişiminin güvenlik ekibine ulaşıp ulaşmadığını sordu. Ayrıca FoxIO'ya açığın vahşi ortamda istismar edilip edilmediğini ve temel heap yazma işleminin çökmenin ötesine taşınıp taşınamayacağını sordu. Herhangi bir yanıt alındığında haber güncellenecek.

Kaynak: thehackernews.com

Paylaş: