PHP2Shell Açığı (CVE-2026-109618/109619): Nasıl Çözülür?
PHP2Shell, giriş yapmadan sunucuda kod çalıştırmaya izin veren iki kritik PHP açığı. Hangi sürümler etkileniyor, hemen ne yapmalı? Hepsi burada.
Bu İçerikte Neler Var?
PHP2Shell Güvenlik Açığı Nedir?
PHP2Shell, PHP'de bulunan iki ciddi açığın ortak adı. Kodları CVE-2026-109618 ve CVE-2026-109619. İkisi de aynı yere çıkıyor: saldırgan, giriş bile yapmadan sunucuda kod çalıştırabiliyor. PHP ekibi açıkları 10 üzerinden 9.2 ile puanladı. Yani en üst risk sınıfı.
Peki bu nasıl oluyor? İlk açıkta PHP, bellek sınırı aşılınca isteği yarıda kesiyor. Bazı veriler yarım kalıyor, temizlik kodu da bu bozuk veriyi okuyor. Özel hazırlanmış bir dosya yükleme isteği bunu tetiklemeye yetiyor. İkinci açık biraz farklı. Hata alan bir istekten geriye, silinmiş belleğe bakan bir iz kalıyor. Aynı işlemi kullanan bir sonraki istek de bu izi kullanıyor. Bu yolun en bilinen kapısı session upload progress özelliği. Üstelik bu özellik kurulumla açık geliyor. Yani sitenizde dosya yükleme formu olmaması sizi korumuyor.

Etkilenebilecek PHP Sürümleri
Kısa cevap: yamalı sürümlerden önceki her şey. PHP ekibi düzeltmeleri 21 Ekim 2026'da yayımladı. Aşağıdaki sürümlerin altındaysanız risk altındasınız. PHP-FPM, mod_php, php-cgi ya da LiteSpeed fark etmiyor. PHP'ye göre en riskli kurulum mod_php.
| PHP dalı | Yamalı sürüm | Durum |
|---|---|---|
| 8.5 | 8.5.12 | Aktif destek |
| 8.4 | 8.4.27 | Aktif destek |
| 8.3 | 8.3.36 | Sadece güvenlik yaması |
| 8.2 | 8.2.35 | Sadece güvenlik yaması, 2026 sonunda bitiyor |
| 8.1 ve öncesi | Resmî sürüm yok | Destek bitmiş |
8.1, 8.0 ya da 7.4 mü kullanıyorsunuz? O zaman php.net'ten yeni bir sürüm gelmeyecek. PHP ekibi bu dallar için GitHub'da küçük kaynak yamaları paylaştı ama hazır paket yok. Ubuntu, Debian ya da RHEL gibi dağıtımlar da kendi paketlerini ayrıca yamalıyor. Bu paketlerin sürüm numarası tablodakinden farklı görünebilir. Bunu bilin.
En Hızlı Koruma Aksiyonu
Hemen güncelleyemiyor musunuz? İlk iş, saldırıda en çok kullanılan kapıyı kapatmak. php.ini dosyasını ya da PHP-FPM havuz ayarını açın. Şu satırı ekleyin, satır zaten varsa değerini değiştirin:
session.upload_progress.enabled = Off
Sonra PHP-FPM'i ya da web sunucusunu yeniden başlatın. Tüm işlemler yeniden açılmazsa ayar çalışmaz. Bu ayarı ini_set() ya da .user.ini ile vermeyin. Orada çok geç devreye giriyor.
Bir de şu var. Bu satır sadece ikinci açığın bilinen yolunu kapatıyor. İlk açık için PHP ekibi memory_limit = -1 ayarını öneriyor. Ama bu, bellek sınırını tamamen kaldırır. O yüzden post_max_size değerini de düşük tutun. PHP 8.5 kullanıyorsanız fatal_error_backtraces = 0 satırını da ekleyin. Hepsi geçici. Asıl çözüm yine güncelleme.
Sunucunuz Risk Altında mı? Kontrol Edin
Önce hangi PHP'nin çalıştığına bakın:
php -v
php-fpm -v
Dikkat edin: komut satırındaki PHP ile web sunucusunun kullandığı PHP aynı olmayabilir. Panelde ya da FPM ayarında hangi sürüm seçiliyse asıl ona bakın. Sonra upload progress ayarını kontrol edin:
Altyapıyı Bize Bırakın, İşinize Odaklanın
Sunucu kurulumu, güvenlik yamaları ve performans optimizasyonunu uçtan uca yönetiyoruz. Siz teknik detaylarla değil, ürününüzle ilgilenin.
İncelephp -i | grep -i session.upload_progress
Çıktıda On var mı? Sürümünüz de tablodakinden eskiyse sunucunuz açıkta. Bir uyarı daha: sunucunuza "deneme" için saldırı isteği atmayın. Bunun güvenli bir testi yok.
Kalıcı Çözüm: PHP'yi Güncelleyin
Tam çözüm bu, başka yolu yok. Çoğu sunucuda paket yöneticisi yeterli. Debian ve Ubuntu'da:
apt update && apt upgrade
RHEL, AlmaLinux ve Rocky Linux'ta:
dnf upgrade 'php*'
cPanel'de EasyApache 4 üzerinden, Plesk'te ise PHP ayarlarından güncelleyin. İş bitince PHP-FPM'i ve web sunucusunu yeniden başlatın. Sonra php -v ile yeni sürümü görün. Paylaşımlı hosting'de misiniz? O zaman sağlayıcınıza iki CVE kodunu iletin ve ne zaman yama geçeceğini sorun.
Desteği Bitmiş Sürümler İçin Ne Yapmalı?
8.1 ya da daha eski bir PHP ile çalışıyorsanız iş biraz uzun. İki yol var. Birincisi, uygulamayı 8.2 ya da üstüne taşımak. En sağlam yol bu ama test ister. İkincisi, dağıtımınızın ya da panelinizin yamalı paketini kullanmak. Bu da yoksa? Sunucuyu internete kapatın ya da ayrı bir ağa alın. ABD'deki CISA ve İngiltere'deki NCSC de yamasız sunucular için bunu öneriyor. Bu arada yukarıdaki geçici ayarları mutlaka yapın.

Güncelleme Sonrası Kontrol Listesi
Yamayı geçtiniz. Şimdi şunlara bir bakın:
- Web sunucusunun da yeni PHP'yi kullandığını doğrulayın, sadece komut satırını değil.
- Logları tarayın. PHP işlemlerinin shell ya da indirme aracı başlatması kötü bir işaret.
- Arka arkaya gelen 500 hatalarına ve bellek sınırı hatalarına bakın.
- Bozuk görünen
PHPSESSIDçerezlerini not alın. - Sitenin yeni sürümle sorunsuz çalıştığını test edin.
- WAF varsa kurallarını güncelleyin. Ama WAF tek başına yetmez.
Webimonline ile Sunucu Güvenliği
Webimonline 2011'den beri bu işin içinde. PHP2Shell gibi bir açık çıktığında yönetilen sunucu müşterilerimizin sistemlerini biz güncelliyoruz. Çoğu zaman siz haber almadan iş bitmiş oluyor. Altyapınızdan emin değil misiniz? Mevcut sistemi birlikte inceleyelim, bunun için ücretsiz teknik danışmanlık veriyoruz.
- PHP sürüm yönetimi ve otomatik güvenlik yamaları
- CGI'dan PHP-FPM'e geçiş ve ayar desteği
- 7/24 sunucu izleme ve hızlı müdahale
Webimonline cloud sunucu çözümleri ve yönetilen hosting hizmetleri için ekibimize ulaşın.
Bu içerik ilham verdi mi? Hadi konuşalım.
Okuduklarınızı kendi projenize uyarlamak veya dijital süreçlerinizi geliştirmek için ekibimizle doğrudan iletişime geçebilirsiniz. Sorularınızı yanıtlamak ve size özel çözüm önermek için buradayız.
Güncellemeleri Kaçırma
Ödeme sistemleri, entegrasyonlar ve dijital çözümler hakkında güncel içerikleri kaçırmayın.