Bu hafta PHP tarafı epey hareketliydi. 20 Ekim'de PHP ekibi "yarın kritik bir güvenlik güncellemesi geliyor, hazırlıklı olun" diye önden haber verdi. Planlanan açıklama tarihinden önce detaylar sızınca güncellemeler 21 Ekim'de yayınlandı. Açıklar CVE-2026-109618 ve CVE-2026-109619 numaralarıyla geçiyor, internette de "PHP2Shell" adıyla dolaşıyor.
Neden önemli olduğunu tek cümleyle söyleyeyim: kimlik doğrulama gerekmeden, dışarıdan gönderilen bir istekle sunucuda kod çalıştırılabiliyor. İkisi de CVSS 9.2 puan almış ve PHP 5.4'ten bu yana neredeyse bütün sürümleri etkiliyor.
Ne oluyor?
Teknik detaya çok girmeyeceğim, merak eden olursa resmi duyuruların linklerini yazının sonuna ekledim. Kabaca şöyle:
CVE-2026-109618: PHP bir isteği işlerken belleği biterse, istek verisi yarım yamalak hazırlanmış halde kalabiliyor. Ardından çalışan temizlik adımı bu bozuk veriyi geçerli sanıyor. Özel hazırlanmış bir multipart istekle (dosya yükleme formlarının kullandığı türden) bu durum tetiklenebiliyor, üstelik tanımlı boyut limitlerinin içinde kalarak.
CVE-2026-109619: Bir isteğe ait iç durum, belleği serbest bırakıldıktan sonra da ortada kalabiliyor. Aynı worker'a düşen bir sonraki istek bu bayat veriyi kullanıyor. Bildiğimiz use-after-free.
En riskli kurulum Apache + mod_php. Orada saldırı, sizin uygulama kodunuz daha hiç çalışmadan tetiklenebiliyor. PHP-FPM, php-cgi, FrankenPHP ve LiteSpeed de etkilenenler listesinde. Yani "Laravel kullanıyorum" ya da "WordPress'im güncel" demek burada bir şey değiştirmiyor. Sorun uygulamada değil, PHP'nin kendisinde.
Ne yapmalı?
Kısa cevap: güncelleyin. Düzeltilmiş sürümler şunlar:
- PHP 8.5.12
- PHP 8.4.27
- PHP 8.3.36
- PHP 8.2.35
Hangi sürümü kullandığınızı terminalden görebilirsiniz:
php -vYalnız komut satırındaki PHP ile web sunucusunun kullandığı PHP aynı olmayabilir. En garantisi bir phpinfo() sayfasına bakmak. Baktıktan sonra o dosyayı silmeyi unutmayın.
Linux dağıtımlarına yamalar önceden verildi, PHP'yi apt ya da dnf ile kurduysanız paket güncellemesi yeterli. PHP 8.1 ve öncesi artık resmi güncelleme almıyor. Ekip istisnai olarak 7.4, 8.0 ve 8.1 için kaynak koduna yama yayınladı ama derlemek size kalıyor. Hâlâ 7.x'te çalışan projeleriniz varsa sürüm yükseltmeyi daha fazla ertelememek için iyi bir bahane bu. Bu arada 8.2'nin de desteği 31 Aralık 2026'da bitiyor.
Paylaşımlı hosting kullanıyorsanız
Kişisel siteler ve küçük kurumsal sitelerin çoğu paylaşımlı hostingde, cPanel ya da DirectAdmin arkasında çalışıyor. Orada PHP'yi siz değil hosting firması günceller. Sizin yapabileceğiniz iki şey var:
- Paneldeki PHP sürüm seçicide hangi sürümün seçili olduğuna bakın. 7.4, 8.0 ya da 8.1'de kaldıysanız desteklenen bir sürüme geçin. Geçmeden önce sitenizin o sürümde sorunsuz çalıştığını kontrol edin.
- Hosting firmanıza "PHP2Shell yamaları uygulandı mı?" diye kısa bir destek talebi açın. Ciddi firmalar bunu zaten duyurmuştur.
Hemen güncelleyemiyorsanız
Resmi duyuruda geçici önlemler de var, ama ekip açık açık "bunlar sizi güvende yapmaz, sadece bazı saldırı yollarını kapatır" diyor. Güncellemeyi beklerken php.ini'ye (ya da FPM pool ayarına) şunları ekleyebilirsiniz:
; CVE-2026-109619 için doğrulanmış session yolunu kapatır
session.upload_progress.enabled = 0
; Sadece PHP 8.5 kullanıyorsanız
fatal_error_backtraces = 0
; Sitede dosya yükleme yoksa
post_max_size = 8MBurada dikkat edilmesi gereken birkaç şey var:
- Bu ayarları
ini_set()ile ya da.user.inidosyasıyla yapmak işe yaramıyor, çünkü çok geç devreye giriyorlar. php.ini, FPM pool ya da sunucu yapılandırmasında olmalı. Değiştirdikten sonra bütün worker'ları yeniden başlatın. - Duyuruda CVE-2026-109618 için
memory_limit=-1önerisi de var. Bunu yayındaki bir sunucuda yapmadan önce iki kez düşünün. Bellek sınırını kaldırmak başka dertler açabilir, ekip de bunun tam çözüm olmadığını söylüyor. - 23 Ekim'de ek bir bilgilendirme geldi. Session serialize handler'ını çalışma anında değiştiren uygulamalarda bir RCE yolu daha varmış (CVE-2026-115560). Çok nadir bir durum, ama ekip bir sonraki sürüme kadar
session.upload_progress.enabled=0ayarını açık tutmayı öneriyor. Upload progress özelliğini kullanmıyorsanız (çoğumuz kullanmıyoruz) kapalı kalmasının bir zararı yok.
Şu an ortada dolaşan exploit'ler belirli işletim sistemi, PHP sürümü ve web sunucusu kombinasyonlarında çalışıyor, her yerde güvenilir değil. Ama exploit denemeleri görülmeye başlandı ve daha genel bir yöntemin çıkması an meselesi. "Bizim site küçük, kim uğraşacak" diye düşünmeyin. Bu tür açıklarda tarama otomatik yapılıyor, kimse sitenizi özellikle seçmiyor.
Bu hafta sonunun yapılacaklar listesine bir satır ekleyin: sunucudaki PHP sürümünü kontrol et, güncelle. On dakikanızı almaz.
Kaynaklar