Freenginx ve nginx artık veri yazmadan önce metin değişkeninin boyutunu kontrol ediyor (+ CVE).


3

TL; DR2026 yılında keşfedilen üçüncü arabellek taşması hatasıyla (ve F5'e göre ASLR yoksa uzaktan kod yürütme hatasıyla) karşılaştıktan sonra, Freenginx geliştiricisi Maxim Dunin, düzenli ifadeler ve değişkenlerle çalışırken bu duruma bir son vermenin zamanı geldiğine karar verdi ve ürününe veri yazmadan önce değişken boyutu kontrolü ekledi. Nginx o zamandan beri bu özelliği kopyaladı ve bu da bu sorunla ilgili yeni CVE'lerin ortadan kaldırılacağı umudunu doğurdu.

Şimdi detaylara geçelim.

19 Haziran'da yapıldı işlemek Freenginx'te, değişken tanımlayıcısına arabelleğin sonunu gösteren bir "son" alanı eklenmiştir. Daha önce, yalnızca başlangıcına (pos) işaret eden bir gösterici vardı, gerekli uzunluk önceden hesaplanıyordu (ve hala hesaplanıyor) ve veriler değişkene kopyalandığında, doğru hesaplanan uzunluğun verilerin arabelleğe sığmasını garanti edeceği varsayılıyordu. Ne yazık ki, bu durum Mayıs 2026'da çeşitli gözden kaçırmalar nedeniyle iki kez yanlış olduğu kanıtlanmıştır.1 (linux.org.ru), 2 (linux.org.ru)Bu durum, arabellek taşmalarına ve vahim sonuçlara yol açıyordu. Şimdi, bir değişkenin arabelleği oluşturulduğunda, sonuna işaret eden işaretçi de dolduruluyor ve değişkene veri yazılmadan önce, veri sığmazsa, istek işleme kontrollü bir şekilde hata ile sonlandırılıyor. Bu, uzunluk hesaplama hatalarının hala devam edebileceği, ancak bellek israfına yol açmayacağı; yalnızca belirli HTTP isteğinin başarısız olacağı anlamına gelir. Aşağıdaki commit'ler (2 (freenginx.org), 3 (freenginx.org)Kodun diğer bölümlerine de (erişim kayıt kodu dahil) benzer bir koruma eklendi. Bir sürüm 7 Temmuz'da yayınlandı. Freenginx 1.31.3Bu düzeltmeyi de içeriyor.

15 Temmuz'da bu commit'ler nginx tarafından kabul edildi (1 (github.com), 2 (github.com), 3 (github.com)(Nedense zincirdeki ikinci ve üçüncünün yer değiştirmesi sonucu) probleme atandı. CVE-2026-42533ve F5 resmi bir açıklama yayınladı. SA (f5.com).

Bu seferki özel güvenlik açığına gelince: Bu açık, çıkarılan parametrelerle düzenli ifadeler (regex) içeren map yönergesi kullanıldığında ortaya çıkıyor. Tetiklenmesi için gereken diğer koşullara gelince, commit açıklamasındaki metin ve SA'daki metin biraz farklılık gösteriyor: SA, map'ten kalan çıkarılan parametreyi kullanan belirli bir dizenin, aynı map'in sonucundan önce hesaplanması gerektiğini belirtiyor. Örnekteki commit açıklamasında, bu adımlar arasında, çıkarılan parametreyi içeren değişken de sıfırlanıyor. Bununla birlikte, bu durum çoğu çalışan nginx'te meydana gelmesi olası değildir ve bu nedenle güvenlik açığı az sayıda kişiyi etkilemiştir. Ayrıca, bu özel durum için uzunluk hesaplamasına yönelik bir düzeltmenin commit edilmiş düzenlemelerde bulunmadığını (ya da kötü mü aradım?) belirtmekte fayda var; yalnızca sorunu kontrollü bir HTTP isteği hatasına dönüştüren bir koruma var. 19 Temmuz'da freenginx'e bazı düzeltmeler eklenmiş olsa da (5bfb, 7622, b906Benzer bir durum için uzunluğu hesaplamak mümkün, ancak bunun böyle olup olmadığı hemen belli değil.

Bu güvenlik açığı nginx 0.9.6 sürümünde ortaya çıkmış, düzeltmeler ise freenginx 1.31.3, nginx 1.30.4 ve nginx 1.31.3 sürümlerine dahil edilmiştir.

nginx SA, güvenlik açığını bağımsız olarak bildiren ve "koordineli açıklama standartlarına" uyan bir dizi kişiye teşekkür eder:

F5, AntAISecurityLab'den Ming Xuan, DKD (@pidifn), Ji'an Zhou ve Zhen Yan'a, EVO.company'den Rafael Gacek ve Sergii Negodiuk'a, Calif.io'dan Lam Jun Rong'a, Winfunc Research'ten (winfunc.com) Mufeed VH'ye ve Vexera AI'ye teşekkürlerini sunar.https://vexera.aiBu konuyu bağımsız olarak dikkatimize getirdikleri ve koordineli bilgilendirme konusunda en yüksek standartları izledikleri için Tu Tran Dinh (@1w4y), Stan Shaw (cyberstan), qianshuidewajueji, zenneth (randomguy6407), depthfirst'ten Zhenpeng (Leo) Lin, Lukas Johannes Moeller, Vodafone Türkiye'den Melih Tolga Şahin, Ayoub Nabil Boubagrat (GitHub: @ayoubnabil) ve Milan Jovic'e (Kljunowsky) teşekkür ederiz.

Freenginx'te, düzeltmeyle ilgili eşlik eden bilgiler aslında yalnızca commit mesajıyla sınırlıdır. changelogBu düzeltme "güvenlik" veya "hata düzeltmesi" olarak bile etiketlenmemiş, sadece "özellik" olarak belirtilmiş. Görünüşe göre yazar bu sorunu kritik olarak değerlendirmemiş. F5'teki söz konusu kişilerin bildirdiği sorunlar ile freenginx'ten kopyalanan commit arasındaki ilişkiyi veya bu kişilerin (ya da başka birinin) sorunu freenginx yazarına bildirip bildirmediğini belirlemek imkansız.

Kaynak: linux.org.ru

DDoS korumalı siteler, VPS VDS sunucuları için güvenilir hosting satın alın 🔥 DDoS korumalı, güvenilir VPS ve VDS sunucu barındırma hizmeti satın alın | ProHoster