
Web dünyası son yılların en sarsıcı altyapı krizlerinden biriyle karşı karşıya. 21 Ekim 2026 itibarıyla acil kodla duyurulan ve siber güvenlik çevrelerinde PHP2Shell olarak adlandırılan iki kritik zafiyet (CVE-2026-109618 ve CVE-2026-109619), internetteki web sitelerinin büyük çoğunluğunu doğrudan tehdit ediyor. Üstelik bu kez sorun ne kullandığınız WordPress eklentisinde ne de yazdığınız kodlarda; açık doğrudan PHP dilinin kendi çekirdeğinde (core interpreter) yer alıyor.
Yani sitenizin yazılımı ne kadar güvenli olursa olsun, sunucunuzdaki PHP sürümü henüz yamalanmadıysa saldırganlar hiçbir şifreye veya oturuma ihtiyaç duymadan (unauthenticated) sunucunuzda uzaktan kod çalıştırabiliyor (RCE).
PHP2Shell Açığı Neden Bu Kadar Tehlikeli?
Normalde bir web sitesinin hacklenmesi için dosya yükleme formlarında bir ihmal olması, eski bir eklenti kullanılması ya da şifrelerin çalınması gerekir. Ancak CVSS v4.0 ölçeğinde 10 üzerinden 9.2 (Kritik) puan alan PHP2Shell zafiyeti, doğrudan PHP’nin bellek yönetimi (memory management) ve hatalı sonlanan istekleri temizleme mekanizmasındaki bir kusurdan besleniyor.
Güvenlik araştırmacılarının (Calif, Wiz ve OpenAI ekiplerinin ortak çalışmasıyla) ortaya çıkardığı bu iki kardeş zafiyet şu şekilde çalışıyor:
- CVE-2026-109618 (Bellek Yetersizliği / OOM Kaynaklı RCE): PHP, bir istek sırasında bellek sınırına (Out-of-Memory) ulaştığında işlemi anında kesmek için
longjmp()yapısını kullanır. Ancak bellek tam bu sırada tükendiğinde, henüz tam oluşmamış (yarıda kalmış) veri yapıları bellekte asılı kalıyor. PHP’nin temizlik (cleanup) rutini ise bu bozuk veriyi geçerli bir veriymiş gibi işleyerek saldırganın gönderdiği bellek adresindeki kodu çalıştırmasına kapı aralıyor. - CVE-2026-109619 (Stale Global State / Use-After-Free): Anormal şekilde sonlanan bir HTTP isteğinin ardından, PHP’nin içsel global durum işaretçileri (pointers) sıfırlanmadan kalabiliyor. Aynı PHP işçisi (worker process) bir sonraki ziyaretçinin isteğini işlerken, aslında çoktan serbest bırakılmış (freed) bellek alanını tekrar kullanarak Use-After-Free zafiyeti oluşturuyor.
Özetle: Saldırgan sunucunuza özel hazırlanmış, bellek sınırını zorlayan ardışık HTTP istekleri göndererek PHP işçisinin hafızasını manipüle ediyor ve doğrudan işletim sistemi düzeyinde kabuk (shell) erişimi kazanabiliyor.
Hangi PHP Sürümleri Etkileniyor? (Güvenli Sürüm Tablosu)
İşin en çarpıcı kısmı etki alanının genişliği. PHP 5.4’ten başlayarak PHP 8.5.11 sürümüne kadar aradaki tüm PHP sürümleri bu açıktan etkileniyor. Apache (mod_php), php-fpm, php-cgi, LiteSpeed ve FrankenPHP kurulumlarının tamamı risk grubunda.
PHP geliştirici ekibinin yayınladığı acil güvenlik yamalarıyla geçmeniz gereken güvenli sürümler şunlardır:
- PHP 8.5 serisi:
8.5.0–8.5.11arası riskli → PHP 8.5.12 sürümüne güncellenmeli. - PHP 8.4 serisi:
8.4.0–8.4.26arası riskli → PHP 8.4.27 sürümüne güncellenmeli. - PHP 8.3 serisi:
8.3.0–8.3.35arası riskli → PHP 8.3.36 sürümüne güncellenmeli. - PHP 8.2 serisi:
8.2.0–8.2.34arası riskli → PHP 8.2.35 sürümüne güncellenmeli.
PHP 8.1, 7.4 ve Daha Eski Sürümleri Kullananlar Ne Yapacak?
PHP 8.1 ve altındaki sürümler (7.4, 7.2, 5.6 vb.) resmi yaşam döngüsünü (EOL) tamamladığı için PHP.net tarafından doğrudan güncelleme almayacak. Eğer eski bir yazılım yüzünden hâlâ PHP 7.4 veya 8.1 kullanıyorsanız iki seçeneğiniz var: Ya yazılımınızı hızla PHP 8.2 / 8.3 uyumlu hale getirip sürüm yükselteceksiniz ya da Ubuntu, Debian, RedHat/AlmaLinux veya CloudLinux (TuxCare ELS) gibi işletim sistemi dağıtıcılarının kendi paket depolarından yayınladığı geriye dönük (backport) güvenlik yamalarını kuracaksınız.
Sunucunuzda PHP2Shell Açığını Adım Adım Kapatma
Sitenizi ve sunucunuzu güvenceye almak için aşağıdaki adımları vakit kaybetmeden uygulayın:
1. Mevcut PHP Sürümünüzü Kontrol Edin
Sunucunuza SSH ile bağlanarak hangi sürümde olduğunuzu hemen görün:
php -v
Eğer Plesk veya cPanel gibi bir panel kullanıyorsanız, bazen terminaldeki CLI sürümü ile web sitenizin çalıştığı PHP-FPM sürümü farklı olabilir. Bu nedenle yönetim panelinizdeki PHP Ayarları bölümünden sitenize tanımlı alt sürüm numarasını (örneğin 8.3.36 olup olmadığını) mutlaka doğrulayın.
2. Linux Sunucularda Paket Güncellemesi
Ubuntu veya Debian tabanlı bir sunucu yönetiyorsanız (Ondrej PPA veya resmi depolar üzerinden):
sudo apt update && sudo apt --only-upgrade install "php*" -y
AlmaLinux, Rocky Linux veya RHEL tabanlı bir sunucu kullanıyorsanız:
sudo dnf clean all && sudo dnf update "php*" -y
3. Plesk ve cPanel Kullanıcıları İçin Güncelleme
- Plesk Panel: Araçlar ve Ayarlar (Tools & Settings) → Güncellemeler (Updates) menüsüne girin. Plesk’in yayınladığı son mikro güncellemeyi (PHP 8.2.35 / 8.3.36 / 8.4.27 paketlerini içeren yama) yükleyin.
- cPanel / WHM: EasyApache 4 veya sistem güncelleme ekranından `ea-php` paketlerinin son yamalarını çekin.
4. Kritik Adım: PHP-FPM ve Web Sunucusu İşçilerini Yeniden Başlatın!
Sistem yöneticilerinin en sık düştüğü hata, paketi güncelleyip bırakmaktır. Paket güncellense bile RAM üzerinde çalışmaya devam eden eski PHP-FPM işçileri (worker processes) eski savunmasız kütüphaneyi kullanmaya devam edebilir. Güncelleme biter bitmez servisleri mutlaka yeniden başlatın:
sudo systemctl restart php8.3-fpm
sudo systemctl restart nginx # veya apache2 / httpd / lsws
Docker veya Kubernetes kullanıyorsanız, çalışan konteynerlerin içini güncellemek yerine base image dosyalarınızı (`php:8.3-fpm-alpine` vb.) yeniden çekip (`docker pull`) imajlarınızı baştan derleyin (rebuild).
5. Güncelleme Yapana Kadar Geçici Koruma (WAF & php.ini)
Üretim ortamındaki bir sunucuyu hemen bugün güncelleyemiyorsanız, saldırı yüzeyini daraltmak için şu önlemleri devreye alın:
- Cloudflare veya WAF Kuralları: Anormal büyüklükteki POST gövdelerini ve aşırı uzun
multipart/form-dataisteklerini sınırlandırarak saldırganların uzaktan OOM (bellek taşması) tetiklemesini zorlaştırın. - PHP Fonksiyon Kısıtlaması: Saldırgan belleği manipüle etse dahi sistem kabuğuna düşmesini zorlaştırmak için
php.iniiçindekidisable_functionssatırındaexec, passthru, shell_exec, system, proc_open, popenfonksiyonlarının kapalı olduğundan emin olun. - PM Max Requests Ayarı: PHP-FPM yapılandırmanızda
pm.max_requests = 500gibi makul bir sınır belirleyerek işçi süreçlerin (worker) düzenli aralıklarla sıfırlanmasını sağlayın.
Özetle; PHP2Shell (CVE-2026-109618 & CVE-2026-109619) sıradan bir eklenti açığı değil, doğrudan sunucu altyapısını hedef alan bir çekirdek zafiyetidir. Sitenizin PHP sürümünü 8.3.36 veya 8.4.27 seviyesine çekmek sadece birkaç dakikanızı alır ancak sizi telafisi çok güç bir veri kaybından kurtarır.















