Alibaba'nın açık kaynaklı QUIC ve HTTP/3 kütüphanesi XQUIC'te keşfedilen bir güvenlik açığı, uzaktaki herhangi bir istemcinin tamamen meşru trafikle sunucuyu çökertmesine izin veriyor. FoxIO araştırmacısı Sébastien Féry tarafından 8 Temmuz'da açıklanan ve XRING adı verilen bu güvenlik açığı, herhangi bir giriş veya bozuk paket gerektirmiyor. Yaklaşık 260 baytlık sıradan QPACK trafiği, sunucu sürecini çökertmeye yetiyor. XQUIC'in 1.9.4 sürümü de dahil olmak üzere tüm sürümleri etkileniyor. Henüz bir yama veya CVE numarası yayımlanmadı.
XRING, HTTP/3'ün başlık sıkıştırma mekanizması olan QPACK'teki bir hata nedeniyle ortaya çıkıyor. QPACK, istemci ve sunucu arasında paylaşılan bir tablo kullanarak tekrarlanan başlıkların (örneğin kullanıcı ajanı) iletilmesini önler. XQUIC, bu tabloyu bir halka tampon (ring buffer) olarak adlandırılan sabit boyutlu bir bellek bloğunda saklar. Tampon dolduğunda veri başa sarılır. İstemci tabloyu büyütmek istediğinde, XQUIC daha büyük bir tampon oluşturur ve eski veriyi yenisine kopyalar. Bu kopyalama işleminde, verinin eski ve yeni tamponlardaki sarılma durumuna bağlı olarak dört farklı senaryo bulunuyor. Bu senaryolardan birinde, kod kalan artık verinin boyutunu yanlış hesaplıyor: eski tamponun kapasitesi yerine yeni, daha büyük tamponun kapasitesini kullanıyor. Bu da ciddi bir aşırı sayıma yol açıyor.
Örneğin, 64 baytlık bir tabloyu, yazma imleci sonuna yaklaşmışken 65 bayta büyütmek istediğinizde, XQUIC gerçekte 6 bayt olan artık veriyi 70 bayt olarak hesaplıyor. Bu yanlış sayı, bellek kopyalama işlemine aktarılıyor. Kopyalama uzunluğu, aşırı sayımın daha küçük bir değerden çıkarılmasıyla elde ediliyor. Bu uzunluk işaretsiz size_t türünde olduğu için negatif değer alamıyor ve taşma (underflow) yaparak neredeyse maksimum bir değere dönüşüyor. Sonuçta bellek kopyalama işlemi, tamponun sınırlarının dışına taşıyor. FoxIO'nun Ubuntu 26.04'teki derlemesinde, glibc'nin _FORTIFY_SOURCE=2 özelliği bu hatayı yakalayıp süreci sonlandırdı. Eğer bu kontrol olmasaydı, kopyalama eski tampondan yenisinin sonunu aşarak bellek dışına yazma yapacaktı. Féry çökmeyi gösterdi ancak bu bozulmanın daha ileri düzeyde istismar edilip edilemeyeceğini test etmedi.
Saldırıda kullanılan hiçbir değer QPACK kurallarını ihlal etmiyor. XQUIC varsayılan olarak 16 KiB'lık bir dinamik tablo sınırı belirliyor; saldırıda önce 64 bayt, ardından 65 bayt isteniyor. İstemcinin yapması gereken tek şey, tabloyu hataya neden olan tam sarılma düzenine getirmek. FoxIO, bu hatanın XQUIC'in ilk halka açık sürümü olan Ocak 2022'den beri var olduğunu ve bir kanıt kodunun (PoC) kamuya açık olduğunu belirtiyor. XRING, HTTP/2 ve HTTP/3 yığınlarındaki bir dizi uzaktan çökertme açığının son örneği. Üç hafta önce, NGINX'in HTTP/3 modülünde (CVE-2026-42530) bir use-after-free açığı bulunmuştu; bu da aynı QPACK kodlayıcı akışını kullanıyor ancak farklı bir hata sınıfına ait. Haziran ayında ise HTTP/2 Bomb, HPACK (HTTP/2'nin başlık sıkıştırması) kullanarak Nginx, Apache, IIS ve Envoy'da hizmet reddine yol açmıştı.
FoxIO, XRING'i 7 Nisan'da Alibaba'nın güvenlik politikası aracılığıyla e-posta ile bildirdi. Politika, üç iş günü içinde yanıt verileceğini vaat ediyordu. Ancak 9 Mayıs'a kadar dört kez daha takip e-postası gönderilmesine rağmen yanıt alınamayınca açık kamuya duyuruldu. The Hacker News, Alibaba'ya bir yama ve CVE numarasının gelip gelmeyeceğini ve FoxIO'nun bildirim girişimlerinin güvenlik ekibine ulaşıp ulaşmadığını sordu. Ayrıca FoxIO'ya açığın vahşi ortamda istismar edilip edilmediğini ve temeldeki heap yazma işleminin bir çökmenin ötesine taşınabileceğini sordu. Bu yazı yayımlanırken herhangi bir yanıt alınmamıştı.
Gelecekte Ne Bekleniyor?
XRING açığı, yalnızca Alibaba'nın kendi sistemlerini değil, XQUIC'i kullanan tüm sunucuları etkiliyor. Tengine (Alibaba'nın Nginx tabanlı web sunucusu) ve Alibaba Cloud ile CDN'de kullanılan Taobao ve Alipay gibi siteler risk altında. Yama çıkana kadar operatörler, SETTINGS_QPACK_MAX_TABLE_CAPACITY değerini 0 yaparak QPACK'in dinamik tablosunu devre dışı bırakabilir veya HTTP/3 desteğini tamamen kaldırabilir. Bu geçici çözüm, performans düşüşüne neden olsa da, sunucuların çökmesini engelleyebilir. FoxIO, XRING'in uzaktan kod yürütme değil, sadece çökmeye neden olduğunu ve vahşi ortamda herhangi bir istismar rapor edilmediğini vurguluyor. Ancak bu tür açıkların, özellikle büyük ölçekli sistemlerde ciddi hizmet kesintilerine yol açabileceği unutulmamalı.
Kaynak: thehackernews.com