Açık Nasıl İşliyor?
HTTP/2, tek bir bağlantı üzerinden birden fazla aktarımı paralel olarak taşır. libcurl her aktarımı, "easy handle" adını verdiği bir nesneyle izler. Yükleme sırasında sunucu, HTTP/2 penceresini sıfıra çekerek aktarımı durdurur, yanıtın bir bölümünü gönderir ve ardından akışı sıfırlarken bağlantıyı açık tutar. curl bu sıfırlamayı yeniden deneme gerekçesi olarak yorumlar.Temizlik aşamasında curl, HTTP/2 katmanına aktarımın bittiğini bildirdikten sonra gönderilmemiş yükleme verilerini aynı bağlantıya aktarır. Kayıtlı bir aktarım kalmadığı için bu artık baytlar yeni bir istek olarak okunur. Araştırmacının yüklenen dosyaya yerleştirdiği satır deseni bu baytları istek satırları gibi gösterir; böylece easy handle'a işaret eden bir işaretçi saklayan yeni bir akış açılır. Yeniden deneme işlemi yeni bir HTTP/1.1 bağlantısı üzerinden tamamlanır ve uygulama handle'ı serbest bırakır. Eski bağlantı ise bu işaretçiyi tutmaya devam eder ve sunucu o akışa bir çerçeve gönderdiğinde, program kapanırken bile, işaretçiyi kullanır.
Araştırmacının geliştirdiği istismar kodunda, sunucunun gönderdiği veri serbest bırakılan handle'ın kapladığı bellek alanına yerleşir. Dışarı giden bir istek yerel adresleri sızdırarak sunucunun adres alanı düzeni rastgeleliğini (ASLR) aşmasını sağlar. O bellekteki bir fonksiyon işaretçisi sunucudan gelen baytlarla üzerine yazılır ve curl bu işaretçiyi çağırır. curl'ün danışma belgesine göre kod çalıştırma için saldırganın hedefin tam curl sürümünü, mimarisini, libc ayırıcısını ve heap düzenini bilmesi, iki paralel aktarımın zamanlamasını doğru tutması ve yükü yaklaşık 23 bayta sığdırması gerekiyor.
Saldırı Koşulları ve Önem Derecesi
Saldırının çalışması için istemcinin saldırgan kontrolündeki bir sunucuya HTTP/2 üzerinden yaklaşık 135 KB büyüklüğünde bir dosya yüklemesi ve sunucunun sertifikasının istemcinin denetimlerinden geçmesi gerekiyor. libcurl, sunucu HTTP/2 sunduğunda https:// URL'leri için varsayılan olarak HTTP/2'yi müzakere ediyor; ancak kütüphanenin HTTP/2 desteğiyle derlenmiş olması da şart.curl projesi açığı kendi dört kademeli ölçeğinde Yüksek olarak derecelendirdi; bu, Ekim 2023'teki SOCKS5 heap taşmasından bu yana projenin karşılaştığı ilk Yüksek önem dereceli açık. curl Kritik yerine Yüksek derecesini tercih etti çünkü kod çalıştırma için gereken koşullar son derece katı. curl'ün baş geliştiricisi Daniel Stenberg, "Girişilen bir saldırının en olası sonucu yalnızca bir çökmedir" diye yazdı ve başarı olasılığını düşük olarak nitelendirdi. Ulusal Güvenlik Açığı Veri Tabanı, 14 Ekim itibarıyla kaydı henüz analiz etmemişti.
Düzeltme, Stefan Eissing tarafından lib/multi.c dosyasına yapılan altı satırlık bir yeniden sıralamadan ibaret. HTTP/2 katmanı artık artık yükleme verisi temizlendikten sonra handle referanslarını bırakıyor; önceki davranışın aksine bu işlem artık önce değil sonra gerçekleşiyor.
Hangi Sürümler Etkileniyor, Ne Yapılmalı?
Açık, curl ve libcurl 8.12.0'dan 8.22.0'a kadar olan tüm sürümleri etkiliyor; hem komut satırı aracını hem de pek çok programın aktarım için kullandığı kütüphaneyi kapsıyor. Kullanıcıların 8.23.0 sürümüne yükseltmesi ya da düzeltme işlemini yerel derlemelerine uygulaması öneriliyor. Proje, destek sözleşmesi olan müşteriler için uzun vadeli destek hattı olan Rock-solid curl sürümlerini de 8.23.0 ile eş zamanlı güncelleyeceğini duyurdu.- curl ve libcurl 8.12.0–8.22.0: 8.23.0 sürümüne yükseltin
- 8.14.x dalı: 8.14.3
- 8.16.x dalı: 8.16.2
- 8.20.x dalı: 8.20.2
- Debian 13 (trixie): DSA-6558-1 aracılığıyla 8.14.1-2+deb13u7
Debian 12 (bookworm) etkilenen kodu taşımıyor. Yayımlanan sürüm toplamda 24 CVE'yi gideriyor; diğer 23 açık Düşük önem dereceli olarak değerlendiriliyor.
Hemen güncelleme yapılamıyorsa curl, HTTP/2 kullanımını devre dışı bırakmayı öneriyor. Komut satırı aracında --http1.1 seçeneği HTTP/1.1 talep ederken uygulamalar CURLOPT_HTTP_VERSION değerini CURL_HTTP_VERSION_1_1 olarak ayarlayabiliyor. curl'ün belgeleri bu ayarın bir istek niteliği taşıdığını belirtiyor; çünkü başka bir sürüm üzerindeki mevcut bağlantı yeniden kullanılabilir. libcurl'de HTTP/2 desteği bir derleme seçeneği olduğundan, bu destek olmadan derlenen bir yapı HTTP/2 müzakere edemez ve söz konusu yükleme yoluna ulaşamaz.
Açığı Bulan: Luna Tong ve Anthropic'in OSS Tarayıcısı
Rapor 15 Eylül'de HackerOne üzerinden curl projesine ulaştı; güvenlik ekibi bunu saatler içinde doğruladı. Proje, 7 Ekim'de bir sonraki sürümde Yüksek önem dereceli bir düzeltme geleceğini önceden duyurarak sekiz haftalık sürüm döngüsünü altı haftaya indirdi. Kötü amaçlı sunucu betiği ve kod çalıştırmayı yeniden ürettiği belirtilen Docker kapsayıcısını içeren HackerOne raporu, 14 Ekim'de danışma belgesiyle birlikte kamuoyuyla paylaşıldı.curl, bulguyu "Luna with Claude, Anthropic" olarak tanımlıyor. Stenberg, araştırmacıyı Anthropic'ten Luna Tong olarak adlandırıyor; bulgunun şirketin yeni OSS Tarayıcısı aracılığıyla geldiğini belirtiyor ve yapay zeka modellerinin sürece dahil olduğunu tahmin ediyor. Anthropic, OSS Tarayıcısını 8 Ekim'de kayıtlı açık kaynak projelerini modelleriyle tarayan, sonuçları insan incelemesi olmaksızın yeniden üretici ve mümkün olduğunda aday yama içeren bir e-posta olarak ileten isteğe bağlı bir hizmet olarak açtı. curl raporu ise bu kamuoyu lansmanından üç hafta önce geldi.
Stenberg, Temmuz 2025'te o yılki curl güvenlik başvurularının yaklaşık beşte birinin yapay zeka kaynaklı düşük kaliteli raporlar olduğunu ve yalnızca yirmide birinin gerçek çıktığını yazmıştı. curl projesi, dahili handle işaretçilerini gerektiğinde aradığı tanımlayıcılarla değiştirme çalışmalarını sürdürüyor; ancak bu yaklaşımın başka bir use-after-free'ye karşı güvence vermediğini de kabul ediyor. Proje, hatanın bellek güvenli bir dilde büyük olasılıkla önlenebileceğini belirtiyor; ancak curl'ü böyle bir dilde yeniden yazmayı planlamıyor.

Yazılım ve Uygulamalar
Yazılım ve Uygulamalar
Yazılım ve Uygulamalar
Yorumlar (0)
Yorum yapmak için giriş yapmalısınız.