PHP php2shell açığı (CVE-2026-109618, CVE-2026-109619) ve çözümü
Yayın: 22 Ekim 2026
- Ne oldu?
- PHP'de iki ciddi açık bulundu. Saldırgan şifre bilmeden, sitenizin çalıştığı sunucuda istediği komutu çalıştırabiliyor.
- Etkileniyor muyum?
- Siteniz PHP ile çalışıyorsa (WordPress dahil) ve PHP sürümünüz 8.5.12, 8.4.27, 8.3.36 ya da 8.2.35'ten eskiyse evet.
- Ne yapmalıyım?
- PHP'yi güncelleyip yeniden başlatın. SunucuKontrol 1.53.1 ve üstü bunu PHP'si ondrej/php deposundan kurulu Ubuntu sunucularda, unattended-upgrades kurulu ve açıksa kendiliğinden yapar; kendi sunucularımızda açık kapatıldı.
PHP geliştirici ekibi 21 Ekim 2026'da iki kritik açığı kapatan güvenlik sürümleri yayımladı. "php2shell" adıyla anılan bu açıklar, kimlik doğrulaması olmadan, uzaktan, sunucuda kod çalıştırmaya izin verebiliyor. Web isteği karşılayan hemen her PHP kurulumu etkileniyor.
SunucuKontrol'de açık kapatıldı. SunucuKontrol'ün kendi sunucularında PHP yamalı sürümlere (8.4.27 ve 8.5.12) güncellendi ve panelin kendi PHP havuzu dahil bütün PHP-FPM havuzları yeniden başlatıldı. Panel ve barındırılan siteler artık bu açıktan etkilenmiyor.
SunucuKontrol'ü kendi sunucunuzda kullanıyorsanız: panel 1.53.1 sürümünden itibaren,
PHP'si ondrej/php deposundan kurulu Ubuntu sunucularda PHP güvenlik yamalarını kendiliğinden kurar ve
panelin kendi PHP süreçlerini yeni sürüme geçirir. Bu, sunucuda unattended-upgrades paketinin kurulu ve açık olmasına bağlıdır; panel paketi kendisi kurmaz ve minimal imajlarda kurulu gelmeyebilir. Kontrol: apt-config dump | grep Unattended-Upgrade çıktısında APT::Periodic::Unattended-Upgrade "1" görünmeli; görünmüyorsa sudo apt-get install unattended-upgrades ve sudo dpkg-reconfigure -plow unattended-upgrades ile açın. Panelin Güvenlik Puanı ekranı da bu durumu uyarı olarak gösterir. Paneli 1.53.1 ya da üstüne güncelleyin ve
php -v ile sürümü kontrol edin. Debian'da ve ondrej deposunun olmadığı Ubuntu sürümlerinde
(26.04 gibi) PHP dağıtımın kendi paketlerinden gelir; bu kendiliğinden kurulum orada geçerli değildir,
aşağıdaki adımları uygulayın. Beklemek istemiyorsanız aynı adımlarla birkaç dakikada elle de kurabilirsiniz.
Açık nedir?
- CVE-2026-109618: Bellek tükendiğinde (out-of-memory) istek verisi yarım kalırken sonraki temizlik adımı bu veriyi geçerli sayıyor. Sonuç: uzaktan kod çalıştırma.
- CVE-2026-109619: Bir isteğin bıraktığı eski durum, serbest bırakılmış belleği gösteriyor ve aynı işçinin sonraki isteği onu kullanabiliyor (use-after-free). Sonuç: uzaktan kod çalıştırma ve bellek sızıntısı.
- Önem derecesi: PHP ekibine göre ikisi de CVSS v4.0 9.2 (kritik).
- Etkilenen kurulumlar: PHP-FPM, Apache mod_php, php-cgi, FrankenPHP ve LiteSpeed. En yüksek risk mod_php'de: uygulama kodu çalışmadan, tek bir istekle tetiklenebiliyor. WordPress, Drupal, Joomla ve Magento sitelerine karşı çalışan saldırılar raporlandı.
- Saldırı durumu: Amazon, ilk saldırı denemesini duyurudan dört gün önce, 17 Ekim'de gördüğünü ve açığın artık geniş çapta kullanıldığını bildiriyor.
Etkilenen ve yamalı sürümler
| Sürüm dalı | Etkilenen | Yamalı sürüm |
|---|---|---|
| PHP 8.5 | 8.5.11 ve öncesi | 8.5.12 |
| PHP 8.4 | 8.4.26 ve öncesi | 8.4.27 |
| PHP 8.3 | 8.3.35 ve öncesi | 8.3.36 |
| PHP 8.2 | 8.2.34 ve öncesi | 8.2.35 |
| PHP 7.4 – 8.1 | Tümü | Resmi sürüm yok; PHP ekibi kaynak kod yaması yayımladı |
| PHP 5.4 – 7.3 | Tümü | Destek dışı, yama yok: 8.2 ve üzerine geçin |
Çözüm: adım adım
Tam çözüm tek: PHP'yi yamalı sürüme güncellemek. Aşağıdaki komutlar Ubuntu ve Debian içindir ve PHP'nin hangi depodan kurulduğundan bağımsız çalışır (dağıtımın kendi paketleri, Ubuntu'da ondrej/php, Debian'da sury). SunucuKontrol kurulumu PHP'yi Ubuntu'da, depo o sürümü destekliyorsa ondrej/php'den; Debian'da ve 26.04'te dağıtımın kendi paketlerinden kurar.
1. Kurulu sürümü görün
php -v
# Sunucudaki bütün PHP sürümleri:
for v in /usr/bin/php[0-9]*; do $v -v | head -1; done
2. Yalnız PHP paketlerini güncelleyin
Komut yalnız kurulu PHP paketlerini seçer; Apache mod_php paketi
(libapache2-mod-php8.x) de listeye girer, çünkü bu kurulumda PHP motoru o pakettedir.
sudo apt-get update
sudo apt-get install --only-upgrade $(dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package}\n' 'php8.*' 'libapache2-mod-php8.*' 2>/dev/null | awk '$1=="ii"{print $2}')
3. PHP işçilerini yeniden başlatın
Paket güncellense de çalışan işçiler eski kodu kullanmaya devam eder, bu adım şarttır.
sudo systemctl restart 'php*-fpm.service'
# SunucuKontrol panelinin kendi PHP havuzu:
sudo systemctl restart sunucukontrol-panel-fpm
# Apache mod_php kullanıyorsanız:
sudo systemctl restart apache2
4. Doğrulayın
php-fpm8.5 -v # 8.5.12 veya üstü olmalı
php-fpm8.4 -v # 8.4.27 veya üstü olmalı
# Apache mod_php kullanıyorsanız paket sürümü:
dpkg-query -W -f='${binary:Package} ${Version}\n' 'libapache2-mod-php8.*' 2>/dev/null
SunucuKontrol panelinde Alan adları ekranı her sitenin PHP sürümünü gösterir. Eski bir dalda (8.1 ve öncesi) kalan siteyi buradan desteklenen bir sürüme taşıyabilirsiniz.
Hemen güncelleyemiyorsanız: geçici önlemler
PHP ekibine göre bu ayarlar riski azaltır ama kurulumu güvenli yapmaz. Yalnız güncellemeye kadar geçen süre için kullanın.
- CVE-2026-109619 için:
session.upload_progress.enabled = 0. PHP 8.5'te ayrıcafatal_error_backtraces = 0. - CVE-2026-109618 için:
memory_limit = -1, uygulamaların değiştiremeyeceği biçimde (FPM havuzundaphp_admin_valueile). Belleği konteyner/cgroup sınırıyla koruyun. - Ayardan sonra bütün PHP işçilerini yeniden başlatın.
- Cloudflare arkasındaki siteler için bilinen saldırı kalıplarına karşı WAF kuralı 21 Ekim'den beri ücretsiz planda da açık. Bu da yalnız ara çözümdür.
- Güncellenemeyen, internete açık sistemleri güncellenene kadar ağdan ayırmanız öneriliyor.
Saldırıya uğradım mı?
Saldırılar duyurudan önce başladığı için incelemeye 17 Ekim 2026'dan itibaren bakın:
web sunucusu kayıtlarında olağandışı büyük ya da bozuk istekleri, PHP-FPM kayıtlarında
işçi çökmelerini (SIGSEGV) ve site dizinlerinde son günlerde değişmiş
.php dosyalarını kontrol edin:
# Dağıtımın FPM kaydı, SunucuKontrol'ün site başına ve panel FPM kayıtları (döndürülmüş .gz dahil):
sudo zcat -f /var/log/php*-fpm.log* /var/log/php-fpm-*.log* /var/log/sunucukontrol-panel-fpm.log* 2>/dev/null | grep -iE 'SIGSEGV|exited on signal'
sudo find /var/www -name '*.php' -newermt '2026-10-17' -ls
Şüpheli bir iz görürseniz site parolalarını ve veritabanı parolalarını değiştirin ve 17 Ekim öncesi yedekten dönmeyi değerlendirin.
Kaynaklar
İlgili yazılar
PHP sürümü nasıl güncellenir? Ubuntu ve Debian'da adım adım
Kurulu PHP sürümlerini görmek, güvenlik yamasını kurmak, PHP-FPM işçilerini yeniden başlatmak ve yeni bir PHP dalına güvenle geçmek.
Sunucum php2shell saldırısına uğradı mı? Kontrol listesi
Saldırılar duyurudan önce başladı. Kayıtlarda, dosyalarda, zamanlanmış görevlerde ve süreçlerde bakmanız gereken izler, bulgu varsa ne yapacağınız.
WordPress siteleri php2shell açığından nasıl korunur?
Açık WordPress'te değil PHP'de; eklenti güncellemesi kapatmıyor. Sitenizin PHP sürümünü görmek, korumak ve dosya bütünlüğünü doğrulamak.