Ulaşım
- Adres: 2342 Sk, İpekyol, İpek Ap 49A, 63250 Haliliye/Şanlıurfa
- Telefon:
0505 532 36 38 - eMail: admin@alestaweb.com
Sunucunuzda Apache HTTP Server mı çalışıyor ve HTTP/2 açık mı? O zaman bu haberi sona kadar okuyun. CVE-2026-23918 kodlu yeni bir güvenlik açığı (Apache HTTP/2 vulnerability), tek bir kötü niyetli bağlantıyla web sunucunuzu çökertebiliyor — kimlik doğrulama bile gerekmiyor. Alesta Web olarak bu açığı, kimleri etkilediğini ve nasıl kapatacağınızı panik yaptırmadan, adım adım anlatacağız.
Çok kısa bir özetle: Apache HTTP Server'ın 2.4.66 sürümündeki mod_http2 modülünde bir double-free (çift serbest bırakma) hatası bulundu. Bu hata, saldırganın özel olarak hazırlanmış HTTP/2 paketleri göndererek sunucu işçi sürecini (worker process) çökertmesine olanak tanıyor. CVSS skoru 8.8, yani "kritik" seviyede.
İşin kötü tarafı şu: Saldırı için ne kullanıcı adı/şifre, ne özel bir URL, ne de özel bir başlık gerekiyor. Tek bir TCP bağlantısı ve iki HTTP/2 paketi yeterli. Bu yüzden Alesta Web ekibi olarak bu açığı acil müdahale gerektiren sınıfa koyuyoruz.
Açık iki kişi tarafından raporlandı: Bartlomiej Dmitruk (Striga.ai) ve Stanislaw Strzalkowski (ISEC.pl). Sorun, Apache 2.4.67 sürümünde giderildi.
Biraz teknik konuşalım ama merak etmeyin, sade tutacağız. Açık, mod_http2 modülünün stream temizleme (stream cleanup) kodunda, yani h2_mplx.c dosyasında yaşıyor.
Olay şöyle gelişiyor: İstemci (client), bir HTTP/2 HEADERS paketini gönderiyor ve hemen ardından aynı stream üzerinde sıfırdan farklı bir hata koduyla bir RST_STREAM paketi yolluyor. Üstelik bunu, multiplexer henüz o stream'i kaydetmeden (before the multiplexer has registered the stream) yapıyor.
Bu durumda nghttp2 kütüphanesinin iki callback'i art arda çalışıyor: on_frame_recv_cb ve on_stream_close_cb. İkisi de aynı temizleme fonksiyonunu çağırıyor ve aynı h2_stream işaretçisini (pointer) temizleme dizisine iki kez ekliyor. Sonuç: aynı bellek bloğu iki kez serbest bırakılıyor — klasik bir use-after-free / double free senaryosu.
1. Client --> HEADERS frame (stream X)
2. Client --> RST_STREAM frame (stream X, error code != 0)
# Multiplexer henüz stream X'i kaydetmedi
3. on_frame_recv_cb() --> h2_stream pointer'ı temizlik dizisine ekler
4. on_stream_close_cb() --> AYNI pointer'ı tekrar ekler
# => double free => worker process crash (DoS)
Alesta Web olarak şunu vurgulamak isteriz: Bu tür bellek hataları, sadece "çökme" ile sınırlı kalmayabiliyor. Aşağıda göreceğiniz gibi belirli koşullarda remote code execution (uzaktan kod çalıştırma) kapısını da aralıyor.
Etkilenen (Affected): Apache HTTP Server 2.4.66
Düzeltilen (Fixed): Apache HTTP Server 2.4.67
Etkilenmeyen: MPM prefork yapılandırması
İki temel saldırı senaryosu (attack vector) var:
En kolay ve en yaygın senaryo bu. Araştırmacının ifadesiyle: "Tek TCP bağlantısı, iki paket, kimlik doğrulama yok, özel başlık yok, özel URL yok — ve worker çöküyor." Yani mod_http2 aktif olan ve çok iş parçacıklı (multi-threaded MPM, örneğin event ya da worker) çalışan varsayılan kurulumlar doğrudan risk altında.
Bu senaryo daha zor ama mümkün. RCE için sunucunun Apache Portable Runtime (APR) ile mmap allocator kullanması gerekiyor — ki bu durum Debian tabanlı dağıtımlarda ve resmi Docker imajlarında varsayılan. Saldırı zinciri, Apache'nin sabit adreslerdeki "scoreboard" belleğini kullanarak ASLR korumasını atlatıyor (bypass ASLR).
Sadece "ben statik site yayınlıyorum" diye rahat olmayın. Açık, içeriğinizle değil, HTTP/2 protokol işlemenizle ilgili. mod_http2 yüklü ve etkinse, sitenizin ne sunduğundan bağımsız olarak savunmasızsınız. Alesta Web olarak müşterilerimizde en sık gördüğümüz hata, "benim sunucum küçük, kimse uğraşmaz" varsayımı oluyor — oysa bu tür açıklar otomatik botlarla taranıyor.
Önce sürümünüzü öğrenin. Sunucunuzda terminali açın ve şu komutu çalıştırın:
# Çoğu dağıtımda apachectl -v # veya httpd -v # veya (Debian/Ubuntu) apache2 -v
Çıktıda Apache/2.4.66 görüyorsanız etkilenmiş olabilirsiniz. Şimdi HTTP/2 modülünün yüklü olup olmadığını kontrol edin:
# Yüklü modülleri listele apachectl -M 2>/dev/null | grep http2 # Çıktıda "http2_module (shared)" görürseniz modül aktiftir. # MPM tipinizi öğrenin (prefork etkilenmez) apachectl -M 2>/dev/null | grep mpm
mpm_prefork_module görüyorsanız bu özel açıktan etkilenmezsiniz. Ancak mpm_event_module ya da mpm_worker_module + http2_module kombinasyonundaysanız güncelleme şart.
Kalıcı ve doğru çözüm tek: Apache HTTP Server'ı 2.4.67 ya da üstüne yükseltmek. Alesta Web olarak deneyimlerimize göre, paket yöneticisi üzerinden yapılan güncelleme en güvenli yöntem.
sudo apt update sudo apt install --only-upgrade apache2 # Güncelleme sonrası sürümü doğrula apache2 -v # Servisi yeniden başlat sudo systemctl restart apache2
sudo dnf clean all sudo dnf upgrade httpd httpd -v sudo systemctl restart httpd
Güncellemeden sonra mutlaka servisi tamamen yeniden başlatın (reload değil, restart). Çünkü bellekte hâlâ eski, açık barındıran worker süreçleri çalışıyor olabilir.
Sürüm çıktısında Apache/2.4.67 (veya daha yüksek) gördüyseniz ve servis sorunsuz başladıysa, bu açık (this vulnerability) artık sizin için kapanmış demektir. Sitenizin hâlâ açıldığını da bir kez kontrol edin.
Bazı durumlarda paket henüz dağıtıma düşmemiş ya da üretim sunucusunda hemen güncelleme yapamıyor olabilirsiniz. Bu durumda riski azaltmak için geçici bir önlem var: HTTP/2'yi geçici olarak devre dışı bırakmak.
# Apache yapılandırmanızda Protocols satırından h2/h2c'yi çıkarın: # ESKİ: Protocols h2 h2c http/1.1 # YENİ: Protocols http/1.1 # Debian/Ubuntu'da modülü tamamen kapatmak için: sudo a2dismod http2 sudo systemctl restart apache2
Bu yalnızca geçici bir önlemdir. HTTP/2'yi kapatmak performansı bir miktar düşürür (çoklu istek çoğullama kaybolur). Asıl çözüm 2.4.67 güncellemesidir; ilk fırsatta güncelleyip HTTP/2'yi geri açın. Alesta Web olarak sistemde yapacağınız değişiklik öncesi mutlaka yapılandırma yedeği almanızı öneririz.
Bunun yanında, önünüzde bir WAF (Web Application Firewall) veya reverse proxy varsa, HTTP/2 sonlandırmasını (termination) o katmana taşıyarak da arka uçtaki Apache'yi koruyabilirsiniz. Ama unutmayın, bunlar yara bandı; gerçek tedavi güncelleme.
Evet. Saldırgan, internet üzerinden tek bir TCP bağlantısı açarak iki HTTP/2 paketi gönderip worker process'i çökertebiliyor. Kimlik doğrulama (authentication) ya da yerel erişim gerekmiyor. Bu yüzden internete açık her Apache 2.4.66 + mod_http2 sunucusu doğrudan risk altında.
Çoğu kurulumda pratik risk hizmet reddi (denial of service), yani sunucunun çökmesi. Ancak APR mmap allocator kullanan sistemlerde (Debian tabanlı dağıtımlar ve resmi Docker imajları varsayılan olarak böyle) uzaktan kod çalıştırma (remote code execution) zinciri kuruldu. Yani "sadece DoS" diye hafife almak yanlış olur.
Hayır. Bu açık yalnızca Apache HTTP Server'ın mod_http2 modülüne özgü. Nginx, Caddy, LiteSpeed gibi sunucular bu CVE'den etkilenmez. Ancak her zaman kendi sunucu yazılımınızın güncel olduğundan emin olun.
Bu özel açık MPM prefork yapılandırmasını tetiklemiyor. Yine de güvenlik güncellemelerini ertelemek doğru değildir; 2.4.67'ye geçmek en sağlıklı yoldur. Alesta Web olarak "etkilenmiyorum" diye güncellemeyi atlamamanızı öneririz.
2.4.66'dan 2.4.67'ye geçiş bir yama (patch) sürümüdür; davranış değişikliği beklenmez. Yine de üretim öncesi yapılandırma yedeği alıp sitenizi test etmek iyi bir alışkanlıktır.
Bu makaledeki bilgiler aşağıdaki güvenilir kaynaklardan derlenmiş ve Alesta Web ekibi tarafından doğrulanmıştır (verified by our team):
Toparlayalım. CVE-2026-23918, Apache 2.4.66'daki mod_http2 double-free açığıdır; tek bağlantıyla DoS, bazı sistemlerde RCE riski taşır (denial of service and possible remote code execution). Çözüm net ve kolay: 2.4.67'ye güncelleyin.
Hızlı Özet / Quick Summary:
apachectl -v)mod_http2 ve MPM tipini doğrulaFaydalı Linkler / Useful Links:
Sunucu güvenliği yorucu bir iş, biliyoruz. Alesta Web olarak yıllardır onlarca sunucuyu bu tür açıklara karşı koruyoruz; bir sorun yaşarsanız alestaweb.com üzerinden bize ulaşın.
© 2026 Alesta Web — Tüm hakları saklıdır.
Görsel: BalticServers.com, Wikimedia Commons, CC BY-SA 3.0.