PHP'nin kendisinde iki kritik açık kapatıldı. Ortak adı PHP2Shell. Giriş gerektirmiyor, sitenin kodu hiç çalışmadan bile tetiklenebiliyor. WordPress, eklenti, tema ya da framework güncellemesi bu yüzden korumuyor; sunucudaki PHP güncellenmeli.

Ne oldu, kısaca
  • CVE-2026-109618: PHP bellek sınırına (memory_limit) çarpınca isteği yanlış anda kesiyor, iç durum yarım kalıyor. Tetikleyici, özel hazırlanmış bir multipart/form-data (dosya yükleme) isteği.
  • CVE-2026-109619: Bir istekten kalan global durum sonraki istekte kullanılıyor (use-after-free). Doğrulanmış yollardan biri session upload progress, diğeri PHP 8.5'te fatal_error_backtraces.
  • Resmî puan CVSS 4.0 9.2. İlk dolaşan 10.0 puanı yanlıştı.
  • Etkilenen kod PHP 5.4'e (2012) kadar gidiyor. mod_php en açık olanı; PHP-FPM ve LiteSpeed (lsphp) da etkilenebilir.
  • Bellek sızıntısı da var: aynı işçideki başka isteklerin verisi (oturum, şifre, API anahtarı) PHPSESSID çerezinde dışarı çıkabiliyor.
Sürüm durumu
  • 8.5 → 8.5.12 yamalı
  • 8.4 → 8.4.27 yamalı
  • 8.3 → 8.3.36 yamalı
  • 8.2 → 8.2.35 yamalı
  • 8.1 / 8.0 / 7.4 → resmî sürüm yok, yalnız dağıtıcılara backport verildi. Panel/dağıtım paketine bakın
  • 5.4 – 7.3 → PHP projesinden düzeltme yok. Bazı depolar kendi yamasını sunuyor
Dağıtım paketlerinde sürüm numarası eski görünebilir. Örneğin Ubuntu 24.04'te yamalı paket 8.3.6-0ubuntu0.24.04.13. "8.3.36 değil, demek ki açık" demeyin; paket revizyonuna ve güvenlik duyurusuna bakın.

Panel bazında hızlı güncelleme
  • cPanel (EasyApache 4): ea-php82–85 yamalı, ea-php74/80/81'e backport geldi. Eski sistemlerde dnf yerine yum. Sonra Apache ve PHP-FPM yeniden başlatılır.
    dnf upgrade 'ea-php*'
  • Plesk: Tools & Settings → Updates ya da komut satırından aşağıdaki komut. Panelin kendi PHP'si için ayrı hotfix var. Windows tarafı Linux'tan geç geldi.
    plesk installer update
  • DirectAdmin: CustomBuild 8.2–8.5'i yükseltiyor, 8.1/8.0/7.4 için yama ekledi. Eski usulde custombuild dizininde ./build update ve ./build php.
    da build update
    da build php
  • CyberPanel / LiteSpeed (lsphp): Depolar gecikmeli geldi, önce aday sürüme bakın. Güncelledikten sonra lsphp süreçlerini öldürmek şart; LiteSpeed'i yeniden başlatmak PHP süreçlerini yenilemiyor.
    apt-cache policy lsphp83
    apt update && apt install --only-upgrade 'lsphp8*' # Ubuntu
    dnf upgrade 'lsphp*' # Alma / RHEL
    pkill lsphp
  • Ubuntu (ana depo): Dalınıza göre paket adını değiştirin. 18.04/20.04 yalnız Ubuntu Pro ESM ile. İkinci satır yamanın gelip gelmediğini gösterir.
    sudo apt update && sudo apt install --only-upgrade 'php8.3*'
    zgrep -E 'CVE-2026-10961[89]' /usr/share/doc/php8.3-fpm/changelog.Debian.gz
  • AlmaLinux 8/9/10: Yamalı paketler 21 Ekim akşamı depoya girdi.
    sudo dnf upgrade 'php*'
    dnf updateinfo list --security | grep php
  • ppandrej/php / Sury: dört dal yamalı. Ayna geç güncellendiyse tekrar deneyin, sürümü dpkg -l ile doğrulayın.
Güncellemeden sonra üç şey
  1. Tüm PHP işçilerini yeniden başlatın. mod_php kullanıyorsanız reload değil, tam restart (systemctl restart apache2 / httpd).
    systemctl restart php8.3-fpm
  2. Eski kütüphaneyi tutan süreç kaldı mı bakın. Boş çıktı iyi.
    sudo grep -lE ' /(usr|lib|opt).*\(deleted\)$' /proc/[0-9]*/maps
  3. php -v yalnız CLI'ı gösterir. Web tarafının sürümünü geçici bir PHP_VERSION sayfasıyla HTTP üzerinden görün, sonra sayfayı hemen silin.
Hemen güncelleyemeyenler için geçici önlemler (hepsi kısmi)
  • Upload progress'i kapatın. php.ini'de ya da FPM havuzunda php_admin_flag ile yapın; ini_set() ve .user.ini geç kalıyor, işe yaramıyor. 109618'i kapatmaz. PHP 8.5'te ikinci satır da gerekli.
    session.upload_progress.enabled = 0
    fatal_error_backtraces = 0
  • Dosya yüklemesi kullanmayan sitelerde multipart/form-data isteklerini web sunucusunda reddetmek. Yükleme formlarını, bazı ödeme/iletişim formlarını bozar; test edin.
  • post_max_size ve ön uçtaki istek boyutu, alan ve başlık sınırlarını düşürmek. Exploit sınır içinde kalarak da çalışabiliyor.
  • RLIMIT_AS / RLIMIT_DATA ile bellek sınırlamayın; savunmasız yolu tam da bu tetikliyor.
  • WAF (Cloudflare kuralları ücretsiz planda da varsayılan açık): yalnız WAF'tan geçen trafiği korur. Origin IP'niz doğrudan erişilebiliyorsa koruma yok.
  • Uygulama içi "bakım modu" işe yaramaz, PHP yine isteği alıyor. En güvenli geçici yol siteyi statik bakım sayfasına almak.
PHP'nin kendi ifadesi: kalıcı ve eksiksiz çözüm yalnızca güncelleme.

Saldırıya uğradım mı? Kısa kontrol listesi
Resmî IOC listesi henüz yok. Göstergenin olmaması temiz olduğunuzu kanıtlamaz.
  • Logları önce kopyalayın, temizlik yapmayın.
  • 20 Ekim'den bu yana yükleme formu olmayan adreslere gelen POST multipart istekleri, ardından "Allowed memory size exhausted" ve art arda 500'ler.
  • Yanıtlarda olağandışı uzun ya da bozuk PHPSESSID çerezleri.
  • php-fpm, lsphp, apache2/httpd altından başlayan sh, bash, curl, wget, nc, python, perl süreçleri.
  • 20 Ekim sonrası değişen PHP dosyaları (yolu kendi web kökünüze göre değiştirin):
    find /var/www -name '*.php' -newermt '2026-10-20' -type f
  • uploads/images altında PHP dosyası, /tmp ve /dev/shm'de çalıştırılabilir dosya, yeni cron işi, yeni yönetici hesabı, authorized_keys değişikliği, .htaccess ya da .user.ini'ye auto_prepend_file eklemesi.
  • Şüphe varsa: sunucuyu ele geçirilmiş say, veritabanı şifreleri, .env anahtarları, ödeme ve SMTP bilgileri ve TLS anahtarları dahil sırları döndür, tüm oturumları geçersiz kıl. Kişisel veri etkilendiyse KVKK'ya 72 saat içinde bildirim gerekiyor.
GitHub'da "PHP2Shell PoC" diye dolaşan depoların çalıştığı doğrulanmadı; bir kısmı araştırmacıyı hedefleyen zararlı olabilir. Sunucuda çalıştırmayın. X'teki "$PHP2SHELL" token paylaşımları da dolandırıcılık.

Türkiye tarafı
Siber Güvenlik Başkanlığı ulusal ölçekte tarama başlattı, kamu kurumları, kritik altyapı ve özel sektöre acil uyarı gönderdi (bildirim TR-26-1372). Önerileri: etkilenen sistemleri belirleyin, hemen yükseltin, yönetim arayüzlerini güvenilir IP'lere kısıtlayın, yurt dışı erişimi gerekmeyen sistemlerde uluslararası trafiği kapatın.

İstismar durumu kaynağa göre değişiyor: Cloudflare ve bazı araştırmacılar deneme gördüğünü söylüyor; CISA, BSI ve PHP güvenlik ekibi yayın anında doğrulanmış istismar bildirmedi. Yama farkı açık olduğu için bu hızla değişebilir, beklemeye değmez.

Sürüm tablosu, dağıtım bazında paket sürümleri ve kaynak listesiyle Türkçe derleme: https://alestaweb.com/haber/php2shel...asil-kapatilir

Panelinizde ya da dağıtımınızda takıldığınız yer olursa yazın, bildiğim kadarıyla yardımcı olayım.