İçindekiler
Konu çok uzun olduğu için önce bir özet geçeyim.
ÖZET
- İki açık, tek olay. CVE-2026-109618 ve CVE-2026-109619, PHP çekirdeğinde 20 yılı aşkın süredir gizli kalan iki ayrı hataya dayanır. İkisi de kimlik doğrulaması gerektirmeyen (unauthenticated) uzak kod çalıştırma (RCE) sağlar. CVSS v4.0 ile ikisi de 9.2 (Critical).
- “PHP2Shell” adı, bulguların ortak adı olarak kullanılıyor ve artık bir ürün/derleme adı değil; istismar zincirinin parçası olan genel bir exploit aracı için de kullanılıyor.
- Yama 21 Ekim 2026 14:00 UTC’de yayınlandı: PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35. PHP 8.1 ve öncesi upstream güncelleme almıyor; PHP projesi 7.4 / 8.0 / 8.1 için minimal source backport yayımladı.
- Neden gündemde: Açıklar yapay zekâ destekli bir araştırma süreciyle (OpenAI “Patch the Planet” girişimi; GPT‑5.6 Sol; Calif + Wiz) bulundu. 20 Ekim’de PHP ön-bildirim yaptı, ancak 20 Ekim’de detaylar sosyal medyada sızdı, bu yüzden PHP Foundation planlanandan erken açıklamak zorunda kaldı. Sızıntının ardından PoC exploit kamuya açıldı, ABD NSA nadir bir halk uyarısı yayımladı ve dünya genelinde hükümet siteleri kapatıldı. Yani bu, “sıradan bir güvenlik güncellemesi” değil, AI destekli sıfır gün keşfi ve küresel eşzamanlı müdahale anlatısıdır.
- Japonya: Başbakan Sanae Takaichi konuştu — X hesabından, 21 Ekim gece. Japonya’da “cumhurbaşkanı” diye bir makam yoktur; devlet başkanı sembolik olarak İmparator’dur ve bu konuda İmparator’dan bir açıklama bulunmamaktadır. Resmî hükümet uyarısı Kabinet Ösekreterliği bünyesindeki Ulusal Siber Güvenlik Bürosu (NCO / 国家サイバー統括室) tarafından yapıldı. JPCERT/CC 22 Ekim’de ayrıca bir “注意喚起” (uyarı) yayımladı.
- Paneller: Yedi panelin dördü (HestiaCP, CyberPanel, cPanel, Plesk, DirectAdmin) 24 saat içinde resmî duyuru yayımladı. CloudPanel paketleri yayımladı ama yazılı advisory’si yok. FastPanel hiçbir kanalda duyuru yapmadı — bu, operasyonel olarak en kritik boşluk.
- Altın kural: “Ağ geçici önlemler yeterli mi?” Hayır. PHP advisory’si açıkça: “There are no complete mitigations, updating is the only safe choice.” Geçici önlemler yalnızca belirli saldırı yollarını kapatır.
PHP çalıştıran bir sunucunuz varsa ilk iş belli: PHP’yi yamalı bir sürüme güncellemek. 21 Ekim 2026’da açıklanan iki güvenlik açığı, CVE-2026-109618 ve CVE-2026-109619, kimlik doğrulaması gerektirmeden uzaktan kod çalıştırmaya (RCE) izin verebiliyor. PHP projesi yamalı sürümleri aynı gün yayımladı: 8.5.12, 8.4.27, 8.3.36 ve 8.2.35.
Bu yazıda açıkların ne olduğunu, neden bu kadar hızlı gündeme geldiğini, Japonya’daki resmi çağrıyı, sunucuda sırayla yapılacakları ve yedi kontrol paneli için ayrı notları anlatıyorum. Kendi sunucusunu, VPS’ini ya da hosting hesabını yöneten geliştiriciler ve girişimciler için yazdım.
Olay hızlı ilerliyor. Bu metin 22 Ekim 2026 itibarıyla hazırladım. Panel duyuruları ve WAF kuralları birkaç saatte değişebilir, bu yüzden her adımdan önce resmi kaynağı kendiniz de kontrol edin.
PHP2Shell, iki kritik PHP açığının ortak adı
PHP2Shell, PHP’de bulunan iki ayrı güvenlik açığını anlatmak için kullanılan ortak addır. Açıklar CVE-2026-109618 ve CVE-2026-109619 numaralarıyla kayıtlı. CVE, bir güvenlik açığına verilen standart tanımlayıcı numaradır.
İki açık da kimlik doğrulaması gerektirmeyen uzaktan kod çalıştırma (RCE) imkânı veriyor. RCE, saldırganın hedef sistemde kendi kodunu çalıştırabilmesi demek. Her iki açık da CVSS v4.0 ölçeğinde 9.2 puan aldı. Bu, kritik seviye.
Ad, açıkları kullanan bir kavram kanıtı (PoC) kodu için de anılıyor. Bu kodun 21 Ekim’de kamuya açıldığı bildiriliyor. Bu yazıda adı yalnızca iki açığı anmak için kullanıyorum.
CVE-2026-109618 ve CVE-2026-109619 teknik olarak ne anlama geliyor
CVE-2026-109618: bellek sınırı aşıldığında bozulan veri
PHP, her isteğin kullanabileceği bellek miktarına memory_limit ayarıyla bir üst sınır koyar. Bu sınır aşılınca PHP isteği yarıda keser. Sorun, kesinti veri yapıları henüz tam kurulmadan gelirse başlar. İstek kapanırken temizlik kodu yarım kalmış veriyi geçerli sayabilir ve bellek bozulabilir.
PHP güvenlik duyurusu bu hatayı “OOM corruption” olarak adlandırıyor. OOM, “out of memory”, yani bellek tükenmesi demek.
CVE-2026-109619: bir isteğin durumu sonraki isteğe karışıyor
Bu açıkta bir isteğe ait iç durum, bellek serbest bırakıldıktan sonra da kullanılabiliyor. Buna “use-after-free” (serbest bırakıldıktan sonra kullanma) denir. Aynı worker’ın sonraki isteği bu eski duruma temas edebiliyor.
Oturum (session) ve yükleme ilerleme özelliklerinin de bilinen yollardan biri olduğu belirtiliyor. session.upload_progress.enabled ayarı varsayılan olarak açık. Bu yüzden geçici önlemler bölümünde bu ayarı ayrıca ele alıyorum.
SAPI ve mod_php neden önemli?
SAPI, PHP’nin web sunucusuyla konuşma biçimidir. Yaygın biçimler arasında Apache’nin mod_php modülü, PHP-FPM (PHP’nin ayrı süreç havuzları olarak çalıştığı yapı), FastCGI ve LiteSpeed’in LSAPI arayüzü var.
PHP güvenlik duyurusuna göre en yüksek risk mod_php‘de. Bu modda istismarın uygulama kodu çalışmadan önce tetiklenebildiği belirtiliyor. PHP-FPM ve diğer biçimler de ihmal edilmemeli. İki açığın risk profili birbirinden farklı.
Hangi PHP sürümleri etkileniyor, hangileri yamalı?
PHP 5.4.0 ve sonrası sürümler etkilenebilir. Calif araştırma ekibinin yazısına göre etkilenen yol bu sürümden itibaren var. CERT-EU de PHP 5’ten itibaren tüm sürümlerin etkilenebileceğini belirtiyor.
Bu, her sitenin kesin olarak etkilendiği anlamına gelmiyor. Ama sürümünüz yamalı listede değilse etkilenebilir kabul edip işlem yapın.
Yamalı sürümler: 8.5.12, 8.4.27, 8.3.36 ve 8.2.35. PHP 8.1 ve öncesi için PHP projesi artık upstream güncelleme yayımlamıyor. Bunun yerine 7.4, 8.0 ve 8.1 için minimal kaynak yamaları paylaştı. Dağıtımınızın ya da uzun süreli destek (LTS) sağlayıcınızın geriye taşınmış yamasını (backport) da kullanabilirsiniz.
Açıklar neden bu kadar hızlı gündeme geldi?
Kısa cevap: açıklar yapay zekâ destekli bir araştırmada bulundu, detaylar planlanan tarihten önce sızdı ve bir PoC kodu kamuya açıldı. Bu üç etken, PHP ekibinin ve sistem yöneticilerinin önündeki zamanı daralttı.
Aşağıdaki tarihler araştırma notundaki kaynaklara dayanıyor:
| Tarih | Ne oldu |
|---|---|
| 2004 | PHP’de bellek sınırıyla ilgili ilk RCE bulgusu anlatılıyor, istismar kamuya açılmıyor |
| 2020 | PHP hata takibine bir OOM hatası bildiriliyor, o dönemde öncelikli görülmüyor |
| 2024 | Bir güvenlik denetimi aynı sorunu yeniden buluyor, istismar kanıtlanamadığı için düzeltilmiyor |
| 11 Ağustos 2026 | Calif ilk bulguyu PHP’ye bildiriyor |
| 14 Ağustos 2026 | Calif RCE PoC’sini PHP ile paylaşıyor |
| 20 Ekim 2026 | PHP ön bildirim yapıyor, detaylar sosyal medyada sızıyor |
| 21 Ekim 2026 | Yamalı sürümler yayımlanıyor (planlanan saat 14:00 UTC), PoC kamuya açılıyor |
| 22 Ekim 2026 | JPCERT/CC uyarı yayımlıyor |
Başlıca dört etken var:
- Yapay zekâ destekli keşif: Açıklar yapay zekâ destekli bir araştırma sürecinde bulundu. OpenAI’nin 21 Ekim 2026 tarihli yazısında şu cümle yer alıyor: “Calif identified a critical flaw using GPT-5.6 Sol as part of our Patch the Planet initiative, with Wiz also independently discovering and reporting both vulnerabilities.” Türkçesiyle: Calif, OpenAI’nin Patch the Planet girişimi kapsamında GPT-5.6 Sol ile kritik bir açık buldu; Wiz da iki açığı bağımsız olarak keşfedip bildirdi. OpenAI’ye göre, bildiği kadarıyla en gelişmiş yapay zekâ modelleri (frontier AI) bu açıkları saldırganlardan önce buldu. Bu, bakımcıların ve güvenlik sağlayıcılarının açıklamadan önce yama ve koruma hazırlayabileceği bir “savunma penceresi” (Defender’s Window) açtı anlamına geliyor.
- Sızıntı ve PoC: Ön bildirimin yapıldığı 20 Ekim’de detaylar sosyal medyada sızdı. PHP ekibi açıklamayı planlanandan önce yapmak zorunda kaldı. Ardından çalışan bir PoC kodu yayımlandı.
- Resmi uyarılar: NSA kamuya açık bir uyarı yayımladı. CERT-EU ve İngiltere’nin NCSC’si kuruluşlara derhal yama uygulamalarını istedi.
- Kamu sitelerinin kapatılması: Araştırma notuna göre birkaç ülkede kamu kurumları, yama tamamlanana kadar sitelerini geçici olarak kapattı.
Ölçek de büyük. Araştırma notu, Palo Alto Networks Unit 42’nin internete açık ve potansiyel olarak etkilenebilir 22,6 milyon PHP örneği saydığını aktarıyor. Bu rakam her birinin saldırıya uğradığı anlamına gelmiyor. Yalnızca riskin boyutunu gösteriyor.
WordPress, Drupal, Joomla veya phpMyAdmin kullanıyorsanız bu açık sizi de ilgilendirir. Araştırmacılar bu uygulamaların test edilen sürümlerinde kimlik doğrulaması olmadan RCE gösterdiklerini bildirdi. Açığın kökü PHP çekirdeğinde olduğu için uygulamanın kendi güncellemesi tek başına yetmez.
Saha istismarı konusunda kaynaklar neden çelişiyor
Açığın gerçek saldırılarda kullanılıp kullanılmadığı konusunda kaynaklar ayrışıyor:
- watchTowr: 21 Ekim itibarıyla kendi bal küpü (honeypot) ağında istismar gözlemlediğini bildirdi.
- Cloudflare’ın CTO’su: İlk aşama saldırıların gerçekleştiğini doğruladıklarını söyledi.
- Sophos: Yayın tarihi itibarıyla sahada aktif istismar bildirilmediğini yazdı.
- Rapid7: Bulgunun bağımsız olarak yeniden üretildiğine dair işaretler olduğunu ve kullanılabilir bir istismar kodunun yakında yayımlanmasının beklendiğini belirtti.
Bu çelişkiyi tek bir cümleyle kapatmak doğru olmaz. Pratik sonuç şu: PoC kodu kamuya açık, Cloudflare ise erken aşama saldırılar gördüğünü söylüyor. Bu nedenle aciliyet moduyla hareket etmek makul. Büyük ölçekli bir botnet kampanyası olduğu ise henüz kanıtlanmış değil.
Japonya’da resmi çağrı ve Başbakan Takaichi’nin paylaşımı
Japonya’da cumhurbaşkanlığı makamı yoktur. Devlet başkanı anayasal olarak sembolik bir figür olan İmparator’dur. Hükümeti ise Başbakan yönetir. Bu nedenle Japonya’daki resmi çağrı Başbakan Sanae Takaichi’den geldi. Notta, İmparator’dan bu konuda bir açıklama bulunmadığı yazıyor.
Takaichi, 21 Ekim 2026 akşamı X hesabından paylaşım yaptı. Paylaşımda site sahiplerinden iki şey istendi: sitelerinde PHP olup olmadığını kontrol etmeleri ve Japonya saatiyle 23:00’te (14:00 UTC) yayımlanacak yama paketini mümkün olan en kısa sürede uygulamaya hazır olmaları.
Haber kaynaklarına göre, yamayı hemen uygulayamayan site sahipleri için geçici kapatma da yedek bir seçenek olarak anıldı. Mainichi/Kyodo haberine göre Takaichi, şirketler hemen harekete geçemiyorsa siteleri geçici olarak çevrimdışı almanın kötüye kullanımı önlemek için etkili bir güvenlik önlemi olduğunu söyledi. Araştırma notuna göre de Japonya’da bazı bakanlık siteleri ve bankalar PHP açıklarının ardından bakım için kapatıldı.
Araştırma notuna göre Ulusal Siber Güvenlik Bürosu (NCO) aynı gün benzer bir uyarı yayımladı. JPCERT/CC ise 22 Ekim’de ayrı bir uyarı yayımladı. Araştırma notuna göre Sakura Internet bazı hizmet işlevlerini askıya aldı.
Sunucunuzda yapılacaklar: beş adım
Önce PHP’yi yamalı sürüme geçirin. Ardından PHP’nin çalıştığı her yeri bulun, yamayı beklerken geçici önlemleri uygulayın ve yamasız sistemlerde olay incelemesi yapın.
PHP’nin 21 Ekim 2026 sürüm duyuruları bu konuda açık: “There are no complete mitigations, updating is the only safe choice.” Yani eksiksiz bir geçici önlem yok. Tek güvenli yol güncelleme.
Adım 1 — PHP’yi yamalı sürüme güncelleyin
Ne yapacaksınız: PHP’yi yamalı bir sürüme yükseltin. Hedef sürümler: 8.5.12, 8.4.27, 8.3.36 ve 8.2.35.
Neden: Açığın kökü PHP çekirdeğinde. Bu yüzden kesin çözüm, PHP’nin yamalı sürümüdür.
Dağıtımınızın paket deposunu kullanıyorsanız apt upgrade veya yum update ile yamalı paketi alabilirsiniz. Araştırma notuna göre Remi deposu bu güncellemeyi yayımlamayacak. Bu durumda dağıtım paketlerine geçmek ya da kaynaktan derlemek öneriliyor.
Sürümü yalnızca php -v ile doğrulamayın. Bazı sağlayıcılar yamayı aynı sürüm numarasıyla, yeni bir yapı tarihiyle yayımlıyor. Bazıları ise geriye taşınmış yamayı daha düşük bir sürüm numarasıyla sunuyor. Bu yüzden changelog ya da yapı tarihine bakın. cPanel/CloudLinux sunucusunda örnek kontrol:
rpm -q --changelog ea-php84-php-cli | grep -E 'CVE-2026-(109618|109619)'
En güvenilir kontrol, gerçek bir HTTP isteğiyle phpinfo() sayfasından web SAPI sürümüne bakmaktır. Komut satırındaki PHP ile web sunucunuzun kullandığı PHP farklı olabilir.
Adım 2 — PHP envanteri çıkarın
Ne yapacaksınız: Sunucunuzda PHP’nin çalıştığı her yeri bulun.
Neden: Bu adım çoğu operatörün atladığı adım. Bir PHP kopyasını yamayıp diğerini unutmak, unutulan kopyayı açıkta bırakır.
PHP yalnızca hosting hesaplarında çalışmaz. Şunlarda da olabilir:
- Kontrol panelinin kendi PHP çalışma zamanı ve panel içindeki phpMyAdmin ya da webmail
- Docker imajları ve konteynerler
- Üçüncü parti yazılımların içine gömülü PHP
- Cron işleri ve komut satırı betikleri
- LiteSpeed ya da FrankenPHP gibi web sunucuları
Bu listedeki her yer yamalanmadan işi bitmiş saymayın.
Adım 3 — Geçici önlemleri uygulayın, sınırlarını bilerek
Ne yapacaksınız: Yamayı beklerken aşağıdaki ayarları uygulayın ve PHP worker’larını yeniden başlatın.
Neden: Geçici önlemler yalnızca bazı saldırı yollarını daraltır. Sunucuyu güvenli hale getirmez.
session.upload_progress.enabled = 0: Ayarı gerçek globalphp.inidosyasında, FPM havuzunda ya da sunucu yapılandırmasında yapın.ini_set()ve.user.inigüvenilir değil, uygulama bunları geçersiz kılabilir. AyarPHP_INI_PERDIRolduğu için kiracılar.user.iniya da.htaccessile yeniden açabilir.- PHP 8.5 kullanıyorsanız:
fatal_error_backtraces = 0ekleyin. Araştırma notuna göre bu, yalnızca doğrulanmış bir yolu kapatıyor. - Worker’ları yeniden başlatın: Ayarlar, çalışan işlemleri yenilemeden etkili olmaz. Web sunucusunu yeniden yüklemek her zaman yetmez. LiteSpeed 5.3 ve üzerinde PHP işlemleri ayrık (detached) modda çalışır. Bu modda
lswsyeniden başlatılsa bilelsphpişlemleri yenilenmez,killall -9 lsphpgerekir. memory_limit = -1tartışmalı: PHP güvenlik duyurusu bu ayarı CVE-2026-109618 için öneriyor. CyberPanel ise ayrım yapmadan uygulanmamasını istiyor. Bellek sınırını kaldırmak, sunucunun belleğini tüketme riskini artırır. Bu kararı sunucunuzun kaynaklarına göre siz verin.- İstek boyutu: Dosya yüklemesi yoksa
post_max_size = 8M, gerekiyorsa32M.upload_max_filesizebu değerin altında kalmalı. - Hata mesajlarını susturmayın:
display_errors,error_reportingya da@ile hataları gizlemek bir açığı kapatmaz, yalnızca tanılamayı zorlaştırır.
Havuz seviyesinde ayar örneği (ortamınıza göre uyarlayın):
php_admin_value[memory_limit] = -1 php_admin_value[post_max_size] = 8M php_admin_value[session.upload_progress.enabled] = 0 php_admin_value[fatal_error_backtraces] = 0 ; yalnızca 8.5 havuzları
Bu değerleri global.conf dosyasına eklemeyin. php_admin_value global bölümde kullanılamaz ve PHP-FPM “Array are not allowed in the global section” hatasıyla başlamaz. Bellek sınırını RLIMIT_AS ya da RLIMIT_DATA ile koymayın. Araştırma notuna göre bu, hassas bir bellek tahsisi hatası yolunu tetikleyebilir. Konteyner ya da cgroup sınırı kullanacaksanız, sınırın yalnızca etkilenen worker’ı sonlandırmasını sağlayın.
Adım 4 — WAF ve ağ katmanına kalkan ekleyin
Ne yapacaksınız: Sunucunun önüne bir WAF (web uygulama güvenlik duvarı) koyun ya da mevcut kuralları güncel tutun.
Neden: WAF, yamanın yerini tutmaz. Araştırma notunda aktarılan CloudLinux açıklamasına göre mevcut kurallar kamuya açık istismar aracını ve istek örüntülerini engelliyor. Ancak CVE-2026-109618’in bellek tükenmesi yolunu henüz hiçbir kural kapatmıyor.
Notta geçen kalkanlar:
- CloudLinux Imunify360: WAF kuralları 8.83, 8.84 ve 8.85 sürümleriyle kademeli olarak genişledi. Otomatik dağıtılıyor.
- Cloudflare: WAF kurallarını acilen güncellediğini belirtti.
- AWS WAF: CVE-2026-109618 için gövde boyutu kuralı, CVE-2026-109619 için ise oturum ilerleme verisini hedef alan özel bir kural yayımladı.
Topluluk tarafından önerilen, multipart/form-data isteklerini topyekûn engelleyen ModSecurity kuralları tüm yüklemeleri ve POST isteklerini bozabilir. Bu kuralları satıcı onayı olmadan uygulamayın.
Panel portlarını da kapatın. CloudPanel’de 8443, FastPanel’de 8888 gibi portları yalnızca kendi IP adresinizden erişilebilir yapın.
Adım 5 — Yamasız sistemlerde olay incelemesi yapın
Ne yapacaksınız: İnternete açık ve yamasız kalmış sistemlerde olay incelemesi yapın.
Neden: Yamalanmadan önce bu açığı kullanan biri sunucuya girmiş olabilir. Veri ihlali ile sistemin ele geçirilmesi riskini birlikte değerlendirmek gerekir.
Şu alanlara bakın:
- PHP oturum dizinlerindeki anormal dosyalar
- Web kökünde yeni ya da değişmiş dosyalar
- Planlanmış görevler (cron) ve beklenmeyen zamanlanmış işler
/tmpaltındaki şüpheli dosyalar- Kullanıcı hesaplarında
authorized_keysvecrontabdeğişiklikleri - Yeni web shell izleri
Sophos’un araştırma notunda aktarılan göstergeleri arasında alışılmadık uzun ağ oturumları, yanlış yazılmış süreç adları ve beklenmeyen konumlarda çalışan meşru görünümlü süreçler var. Şüphe varsa sistemi ağdan ayırın, kanıtları koruyun ve uzman destek alın.
Kontrol panelleri: yedi panel, yedi farklı yol
Panel kullanıyorsanız iki katman var: müşteri sitelerinin PHP’si ve panelin kendi PHP çalışma zamanı. İkisi ayrı ayrı yamalanmalı. Aşağıdaki tablo durumu özetliyor. Ayrıntılar için her panelin kendi duyurusunu da kontrol edin.
| Panel | Resmi duyuru | Panelin kendi PHP’si | Dikkat edilecek nokta |
|---|---|---|---|
| HestiaCP | Forum ve GitHub | Ayrı paket: hestia-php | İki ayrı PHP çalışma zamanı |
| CloudPanel | Yalnızca GitHub yorumu | clp-php-fpm (PHP 8.1) | APT öncelik (pin) engeli |
| CyberPanel | Blog yazısı | Ayrı lsphp kopyası | Üç ayrı PHP envanteri |
| cPanel & WHM | Destek makalesi ve sürüm notları | Panelin PHP’si de yamalanıyor | ea-php ve CloudLinux sürüm farkı |
| Plesk | Destek makalesi ve changelog | sw-engine | Domain başına ayrı FPM birimleri |
| DirectAdmin | Forum (changelog’da kayıt yok) | DirectAdmin’in kendi derlemesi | PHP 8.1 derleme hatası |
| FastPanel | İncelenen resmi kanallarda bulunamadı | /opt/phpXX | Dağıtım paketlerinin dışında |
HestiaCP
HestiaCP’nin forum duyurusu 21 Ekim 2026’da yayımlandı. Duyuruya göre sunucuda iki PHP çalışır. Birincisi, barındırılan siteler için Sury deposundan gelen PHP-FPM (/etc/php/<surum>/fpm/). İkincisi, panelin kendi paketi hestia-php. Birini yamamak diğerini açıkta bırakır.
Yapılacaklar:
- Ne yapacaksınız: Sury deposuna geçin. Panelin paylaştığı geçiş adımlarını izleyin. Betiği çalıştırmadan önce okuyun, çünkü mevcut apt kaynak dosyalarını değiştirir. Neden: Barındırılan sitelerin PHP-FPM sürümleri bu depodan geliyor.
- Ne yapacaksınız: Site PHP’lerini yükseltin:
apt update apt install --only-upgrade 'php*'Neden: Barındırılan siteler bu PHP sürümlerini kullanır; yükseltilmeyen sürüm açıkta kalır. - Ne yapacaksınız: Tüm worker’ları yeniden başlatın. Yalnızca mod_php kullanıyorsanız
systemctl restart apache2komutunu da çalıştırın:for v in $(ls /etc/php/); do systemctl restart php$v-fpm 2>/dev/null; done systemctl restart apache2 # yalnızca mod_php kullanılıyorsaNeden: Yama ve ayarlar, çalışan worker’lar yeniden başlatılmadan etkili olmaz. - Ne yapacaksınız: Panelin PHP’sini yükseltin:
apt update && apt upgrade, ardındansystemctl restart hestia. Panel çalışma zamanıhestia-php 8.5.12olarak gelir. Neden: Bu adım atlanırsa panel hâlâ açıkta kalır. - Ne yapacaksınız: Doğrulayın:
apt.hestiacp.comdeposunun JammyPackageslistesindehestia-php 8.5.12-1+ubuntu22.04, Bookworm içinhestia-php 8.5.12-1+debian12görünmeli. Neden: Paket listesi, panelin yamalı sürümünün gerçekten yayımlandığını gösterir.
Dikkat edilecekler:
- Ubuntu Jammy ve Debian Bookworm için paket doğrulandı. Debian Bullseye ve Ubuntu Focal için paketler 22 Ekim itibarıyla hâlâ derleniyordu. ARM64 paketleri de gecikmişti.
- Panel şablonları HestiaCP güncellemesi ya da
v-rebuild-userile yeniden üretiliyor. Düzenlemeden önce kopyasını alın. Şablonlar/usr/local/hestia/data/templates/web/php-fpm/altında. - Sürüm değiştirmek için Web Domains → Edit → PHP-FPM version yolunu izleyin. Komut satırında
v-add-web-php 8.3,v-change-sys-php 8.0vev-list-sys-phpkullanılabiliyor. - Panelde iptables tabanlı bir güvenlik duvarı var, ancak duyuruda php2shell için ModSecurity imzası yayımlanmadı.
CloudPanel
CloudPanel’in durumu daha belirsiz. GitHub’daki konuda (#823) kurucu, PHP 8.1 için ilgili güvenlik yamalarını geriye taşımak üzerinde çalıştıklarını ve mümkün olan en kısa sürede dağıtacaklarını yazdı. Yazılı bir güvenlik duyurusu yok. Değişiklik günlüğünün (v2.5.4) da bu olaya dair bir kaydı yok. Site PHP’leri için paketler yayımlanmış görünüyor. Araştırma notuna göre 22 Ekim sabahı 05:58 UTC itibarıyla PHP 8.1 yaması henüz çıkmamıştı.
Yapılacaklar:
- Ne yapacaksınız: Site PHP’lerini yükseltin:
sudo apt update && sudo apt upgrade && sudo systemctl restart 'php*-fpm'. Neden: Servisler yeniden başlatılmazsa eski worker’lar çalışmaya devam edebilir. - Ne yapacaksınız: Doğrulayın:
apt policy php8.5-fpmçıktısında8.5.12-1+clp-<codename>görünmeli. Neden: CloudPanel kendi deposunu öncelik 1000 ile pinliyor; Ubuntu’nun yamalı paketi bu yüzden seçilmeyebilir. - Ne yapacaksınız: Panelin PHP’si 8.1’de kalıyorsa yamayı bekleyin. Beklerken 8443 portunu yalnızca kendi IP adresinize açın. Ayarı Admin Area → Security → Firewall (UFW) üzerinden yapın. Neden: Notta bu, en etkili ara önlem olarak geçiyor.
- Ne yapacaksınız: Her
/etc/php/*/fpm/pool.d/*.confdosyasına havuz ayarlarını ekleyin.global.confdosyasını bu işlemin dışında tutun. Neden: Site sahipleri PHP ayarlarını uygulama seviyesinde değiştirebilir;memory_limitiçin havuz seviyesinde ayar şarttır. - Ne yapacaksınız: Yamasız kalan 7.x-8.1 PHP-FPM servislerini devre dışı bırakın (mask). Neden: Bir CloudPanel sunucusunda birden fazla PHP-FPM servisi aynı anda çalışabilir ve bunların bir kısmı yamasız kalabilir.
Dikkat edilecekler:
- CloudPanel kendi deposunu 1000 önceliğiyle pinliyor. Araştırma notuna göre bu nedenle Ubuntu’nun yamalı paketleri tercih edilmeyebilir. Sury deposu eklenecekse öncelik 1001 olmalı.
apt policyçıktısıyla kontrol edin. - CloudPanel PHP-FPM servislerini konteynerde çalıştırmaz. Servisler host üzerinde (
php8.2-fpm…php8.5-fpm) çalışır. - Site sahipleri PHP ayarlarını uygulama seviyesinde değiştirebilir. Bu yüzden
memory_limitiçin havuz seviyesinde ayar şart. - Cloudflare’ın acil WAF kuralları CloudPanel’a ait değil.
CyberPanel
CyberPanel, 21 Ekim 2026’da blog yazısıyla açıklama yaptı. Yazı 22 Ekim’e kadar güncellendi. Bu panelin mimarisi diğerlerinden farklı. Siteler PHP-FPM yerine OpenLiteSpeed’in LSPHP (LSAPI) katmanında çalışıyor. Site PHP’leri /usr/local/lsws/lsphpXX/ altında. Panelin kendi PHP kopyası ise /usr/local/lscp/fcgi-bin/lsphp dosyasında. Ubuntu paketlerini güncellemek bu dosyayı değiştirmez.
Yapılacaklar:
- Ne yapacaksınız:
lsphp85*,lsphp84*,lsphp83*velsphp82*paketlerini imzalı LiteSpeed deposundan yükseltin. Neden: Ubuntu paketlerini güncellemek, LiteSpeed’in ayrılsphpdosyalarını ve panelin kopyasını değiştirmez. - Ne yapacaksınız: Panel kopyasını ayrıca yenileyin.
/usr/local/lscp/fcgi-bin/lsphpdosyasını güncel/usr/local/lsws/lsphp83/bin/lsphpile atomik olarak değiştirin. Sahiplik ve izinleri koruyun, SHA256 değerini doğrulayın. Panelin çalışma zamanı farklıysa 8.3 yolunu körlemesine kullanmayın. Neden: Panelin kendilsphpkopyası, site PHP’lerinin güncellenmesiyle otomatik değişmez. - Ne yapacaksınız: Worker’ları yenileyin:
killall -9 lsphp && systemctl restart lswsNeden:lswsyeniden başlatmak, ayrık (detached) çalışan worker’ları tek başına öldürmez. - Ne yapacaksınız: Gerçek bir HTTP isteğiyle test edin. Panel girişini, phpMyAdmin’i ve sitelerinizi deneyin. Neden:
php -vyalnızca komut satırındaki sürümü gösterir; web üzerinden çalışan sürüm ayrıca doğrulanmalı. - Ne yapacaksınız: OPcache’i birlikte güncelleyin. Neden: Eski OPcache modülüyle çekirdek güncellemesi eksik kalır.
Dikkat edilecekler:
- “PHP-FPM Switcher” ve “php-fpm” adlı bir site resmi dokümantasyonda bulunamadı. Bunları kullanmayın. Doğru yol: Websites → List Websites → Manage → Modify Website → PHP Version. Ayarlar için: Server → PHP → Edit PHP Configs.
- ModSecurity, OpenLiteSpeed ile gelir. Dashboard → Security → ModSecurity Conf. üzerinden yönetilir. Denetim günlüğü
/usr/local/lsws/logs/auditmodsec.logdosyasında. Satıcının php2shell’e özel bir kuralı yok. OWASP CRS gibi genel kurallar tek kalkan.
cPanel & WHM
cPanel’in destek makalesi (22 Ekim) ve 21 Ekim tarihli sürüm notları, hem paneli hem EasyApache 4 PHP paketlerini kapsıyor. Panelin kendi PHP’si, Roundcube webmail dahil, yamalanıyor.
Notta yer alan EasyApache 4 (ea-php) sürümleri: ea-php82 için 8.2.35, ea-php83 için 8.3.36, ea-php84 için 8.4.27, ea-php85 için 8.5.12. 7.4, 8.0 ve 8.1 için de paketler var: ea-php74 7.4.33-19, ea-php80 8.0.30-12, ea-php81 8.1.34-5. CloudLinux’in ea-php paketlerinin sürüm numaraları upstream’den düşük görünebilir. Bu yüzden changelog ile doğrulayın.
Yapılacaklar:
Ne yapacaksınız: Paket depolarını yenileyin, PHP paketlerini güncelleyin, worker’ları yeniden başlatın ve changelog ile doğrulayın:
yum clean all && yum makecache /scripts/rpmup /scripts/restartsrv_httpd /scripts/restartsrv_apache_php_fpm rpm -q --changelog ea-php84-php-cli | grep -E 'CVE-2026-(109618|109619)'
Neden: Yama, PHP paketleriyle birlikte gelir; worker’lar yeniden başlatılmadan eski kod çalışmaya devam edebilir. Doğrulamayı sürüm numarasıyla değil changelog ile yapın.
CloudLinux kullanıyorsanız yum clean all && yum update "ea-php*" alternatiftir.
Yapılandırma yolları:
/opt/cpanel/ea-php##/root/etc/php.ini/opt/cpanel/ea-php##/root/etc/php.d/- Havuz şablonu:
/var/cpanel/userdata/[account]/[domain].php-fpm.yaml..confdosyası bu şablondan üretilir, elle yapılan değişiklikler silinir. Değişikliği şablona yapıp/scripts/php_fpm_configçalıştırın. - CloudLinux PHP Selector:
/etc/cl.selector/global_php.ini
Dikkat edilecekler:
- Kiracı
.user.iniya da.htaccessilesession.upload_progress.enabledayarını yeniden açabilir. Ayarı FPM havuzundaphp_admin_valueile zorunlu kılın..htaccessile yapılanphp_valuevephp_admin_valuede güvenilir değil. - mod_php en riskli yapılandırma. Araştırma notuna göre cPanel, 8.0 ve sonrası için DSO desteklemiyor. Ancak 7.4 ve 8.0 ELS hesapları DSO çalıştırabiliyor.
httpd -M | grep php_moduleile kontrol edip FPM ya da LSAPI’ye taşıyın. - Application Manager (Passenger) kendi yorumlayıcısını kullanıyorsa ea-php güncellemesi onu değiştirmez. EA4 25.91 ile gelen Passenger 6.2.1 güncellemesini ayrıca alın ve yeniden başlatın.
- CloudLinux PHP Selector ile MultiPHP farklı sürüm gösterebilir. İkisi de yamalanmalı ve yeniden başlatılmalı.
- 7.4’ten eski sürümler için TuxCare ELS gibi ücretli bir çözüm ya da taşıma gerekir.
Plesk
Plesk’in destek makalesi 20 Ekim’de yayımlandı, 22 Ekim’de güncellendi. Obsidian değişiklik günlüğünde 21 Ekim tarihli yamalar yer alıyor. Plesk’in PHP’sinde sürüm numaraları aynı kalırken yapı tarihi değişti. /opt/plesk/php/8.3/bin/php -v çıktısında built: Oct 21 2026 görmelisiniz.
Panelin kendi PHP motoru sw-engine de yamalanmalı. Plesk Obsidian 18.0.80 Update 11 ve 18.0.81 Update 4 bu yamayı içeriyor. Araştırma notuna göre yamalanmadan önce panelin de RCE’ye açık olduğu belirtiliyor.
Yapılacaklar:
Ne yapacaksınız: Plesk’i güncel sürüme getirin, PHP’yi ve paneli yeniden başlatın:
plesk installer --select-release-current --upgrade-installed-components /opt/plesk/php/8.3/bin/php -v systemctl restart plesk-php83-fpm systemctl restart sw-engine systemctl start sw-cp-server
Neden: Panelin kendi PHP motoru (sw-engine) yamalanmazsa panel de RCE’ye açık kalır. Sürüm numarası aynı kaldığı için yapı tarihine bakmak gerekir.
Beklenen çıktı: PHP 8.3.36 (cli) (built: Oct 21 2026 08:04:57) (NTS).
Domain başına ayrı FPM birimleri (ör. plesk-php83-fpm_domain.tld_370) ayrıca tam adlarıyla yeniden başlatılmalı. systemctl restart plesk-php83-fpm bu birimleri etkilemez.
Yapılandırma yolları:
- Panelin kendi php.ini dosyası:
/usr/local/psa/admin/conf/php.ini(Windows’ta%plesk_dir%\admin\php.ini) - Arayüz: Tools & Settings → PHP Settings → php.ini editörü
- Domain bazında: Websites & Domains → domain → PHP → ek PHP ayarları
Dikkat edilecekler:
- Domain bazlı PHP ayarları ekranı sabit bir direktif listesi kullanıyor.
session.upload_progress.enabledvefatal_error_backtracesbu listede yok. php.ini editörünü ya da özel PHP-FPM yapılandırmasını kullanın. - Kiracı izinlerini daraltın. “Common PHP settings management” ve “PHP version and handler management” izinlerini kapatmazsanız kiracı
memory_limitdeğerini yeniden sınırsız hale getirebilir. - Yamayı hemen uygulayamıyorsanız paneli durdurmayı düşünebilirsiniz (
systemctl stop sw-cp-server). Araştırma notunda bu, Plesk destek tartışmasında geçen bir önlem olarak yer alıyor. Panel kullanılamaz hale gelir. Bunu yalnızca risk değerlendirmesinden sonra uygulayın. - WAF: Tools & Settings → Web Application Firewall. Atomic Standard, OWASP CRS, Comodo ve Atomic Advanced seçenekleri var. CVE’ye özel bir kural yok. OWASP CRS seçilirse WordPress’in bir kısmı, webmail ve dosya paylaşımı çalışmayabilir.
DirectAdmin
DirectAdmin ekibinden bir yetkili, forumda 21 Ekim 2026 sabahı yeni bir DA sürümünün current ve stable kanallarına çıktığını yazdı. Bu sürümle PHP 8.5, 8.4, 8.3 ve 8.2 son sürüme getiriliyor. PHP 8.1, 8.0 ve 7.4 için yamalar eklendi. 7.3 ve daha eski sürümler için henüz yama yok. Araştırma notuna göre DirectAdmin’in kamuya açık değişiklik günlüğünde bu kayıt yok.
Yapılacaklar:
Ne yapacaksınız: DirectAdmin’i güncelleyin, PHP’yi yeniden derleyin ve yapılandırmayı yenileyin:
da update da build php da build versions da build rewrite_confs
Neden: Yamalı PHP sürümleri DirectAdmin’in kendi derleme aracıyla geliyor. da build php çalıştırılmazsa sunucudaki PHP eski kalır.
- DA kendiliğinden güncellenir, ancak PHP güncellemesini elle tetiklemeniz gerekir. CustomBuild cron özelliğini açarsanız bu adım otomatikleşir.
da build versionsçıktısında yıldızlı sürüm, aynı upstream sürümün yeni yamalarla derlendiği anlamına gelir.- Yama dosyasını şu yolda kontrol edin:
/usr/local/directadmin/custombuild/patches/php-7.4/143-php-7.4-cve-2026-109618.patch
Yapılandırma yolları:
/usr/local/phpXX/lib/php.ini- Havuz ayarları: Admin → Custom Httpd Configuration → domain.com: php-fpm 5.x → ikinci metin kutusu (
|CUSTOM2|) - Genel ayarlar:
/usr/local/directadmin/data/templates/custom/php-fpm.conf.custom1ve.custom2
Dikkat edilecekler:
user_ini.filename = ".user.ini"varsayılan olarak açık. Kiracı kendi php.ini dosyasını düzenleyebilir.session.upload_progress.enabledPHP_INI_PERDIRolduğu içinphp_admin_valuekullanın ya dauser_ini.filenameayarını kapatın.- PHP 8.1 derlemesi bazı sistemlerde
zend_vm_execute.hhatasıyla başarısız olabiliyor. Bu durumda hesapları desteklenen bir sürüme taşıyın. - CloudLinux kullanıyorsanız iki ayrı PHP yığını olabilir: CustomBuild derlemesi (
/usr/local/phpXX) ve CloudLinux ALT-PHP (/opt/alt/phpXX). İkisini de yamalayın.
FastPanel
FastPanel, en belirsiz panel. Araştırma notuna göre değişiklik günlüğü, blog, GitHub ve güvenlik sayfası gibi incelenen resmi kanallarda bu olayla ilgili bir duyuru bulunamadı. Sosyal medya ve Discord kontrol edilemedi. Bu yüzden “duyuru yapılmadı” demek yerine “bulunamadı” demek doğru. Değişiklik günlüğünün son kaydı 25 Aralık 2025 tarihli (Release 1.11.87).
Önemli bir fark var: FastPanel PHP’yi kendisi derleyip /opt/phpXX/ altına kuruyor. Dağıtım paketi değil. Örnek: /opt/php74/bin/php. Bu yüzden apt upgrade, Ubuntu güvenlik bültenleri ya da Sury bu PHP sürümlerine ulaşmaz.
Resmi kılavuz olmadığı için aşağıdaki adımlar, notun belgelenmiş mimariden çıkardığı önerilerdir:
- Ne yapacaksınız: Envanter çıkarın. Settings → Applications üzerinden kurulu PHP dallarını görün. Her biri için
/opt/phpXX/bin/php -vkomutunu çalıştırın. Neden: FastPanel PHP’yi kendisi derleyip/opt/phpXX/altına kuruyor; dağıtımın PHP paketleri bu sürümleri güncellemez. - Ne yapacaksınız: Yükseltmeyi panelin Applications yükleyicisiyle yapın. Yamalı build yayımlanıp yayımlanmadığı doğrulanamadı. FastPanel destek ekibine yazın ve yanıt gelene kadar tüm PHP sürümlerini yamasız kabul edin. Neden: Yamalı build’in yayımlandığı doğrulanamadı; yanıt gelene kadar yamasız varsaymak daha güvenli.
- Ne yapacaksınız: Worker’ları yeniden başlatın. Her dal için ilgili PHP-FPM servisini (Services bölümünden ya da
systemctl restart <phpXX>ile) yeniden başlatın. Apache module (MPM ITK) kullanan sitelerde Apache backend’i de yeniden başlatın. Neden: Araştırma notuna göre Apache module (MPM ITK) mod_php anlamına gelir ve en yüksek riskli SAPI’dir. - Ne yapacaksınız: Dal bazlı ayarları değiştirin. Side menu → PHP → Settings üzerinden
session.upload_progress.enabled = 0,memory_limitvepost_max_sizeayarlarını yapın. PHP 8.5 içinfatal_error_backtraces = 0ekleyin. Neden: Site bazlı ayarları kullanıcı değiştirebilir; yönetici tarafından zorlanabilen dal bazlı ayar gerekir. - Ne yapacaksınız: Apache-module sitelerini FastCGI ya da PHP-FPM’e taşıyın. Neden: Notta, yamalı bir dal seçmenin tek yolunun bu olduğu yazıyor.
- Ne yapacaksınız: Panel portunu kısıtlayın. Panel portu 8888’i yalnızca kendi IP adresinizden açın. Panelin kendi PHP’sini de envantere ekleyin. Neden: Panelin kendi PHP’si de PHP servis eden bir yüzey; envantere alınmazsa unutulabilir.
Dikkat edilecekler:
- Üçüncü taraf “
/usr/bin/phpsembolik bağlantısını değiştirin” rehberleri FastPanel için güvenli değil. FastPanel, kullanıcı başına CLI PHP sürümünü panelden yönetiyor. - FastPanel’de WAF yok. Settings → Applications üzerinden Fail2ban kurulabiliyor.
- Yama gelene kadar 8.1 ve daha eski dalların upstream yaması olmadığını unutmayın. Bu sürümleri IP allowlist ya da VPN ile izole edin.
Sık sorulan sorular
PHP2Shell’i sadece PHP güncellemesiyle kapatabilir miyim?
Evet, yamalı PHP sürümüne geçmek bu açığı kapatmanın tek güvenli yolu. PHP güvenlik duyurusu geçici önlemlerin eksiksiz olmadığını belirtiyor. Geçici önlemler yalnızca belirli saldırı yollarını daraltır.
PHP’yi güncelledim, hâlâ etkilenebilir miyim?
Olabilir. Kontrol panelinin kendi PHP’si, LiteSpeed’in ayrı lsphp kopyası ya da Docker imajı eski kalmış olabilir. Eski worker’lar yeniden başlatılmadıysa eski kodu çalıştırmaya devam edebilir. Sürümü php -v ile değil, gerçek bir HTTP isteğiyle doğrulayın.
PHP 8.1 kullanıyorum, ne yapmalıyım?
PHP projesi 8.1 için upstream güncelleme yayımlamıyor. Dağıtımınızın ya da hosting sağlayıcınızın geriye taşınmış yamasını kontrol edin. PHP projesi 7.4, 8.0 ve 8.1 için minimal kaynak yamaları yayımladı. Yama yoksa en güvenli yol desteklenen bir sürüme geçmek. Bu süreçte panel ve yönetim portlarını IP ile kısıtlamak ara önlem olarak öneriliyor.
WAF kullanıyorsam yeterli mi?
Hayır. Araştırma notuna göre mevcut WAF kuralları bilinen istismar örüntülerini engelliyor. Ancak CVE-2026-109618’in bellek tükenmesi yolunu henüz hiçbir kural kapatmıyor. WAF, yamanın yerini tutmaz.
WordPress sitem için ne yapmalıyım?
WordPress’in kendi güncellemesi bu açığı kapatmaz, çünkü açık PHP çekirdeğinde. Sunucudaki PHP sürümünü yamalayın, ardından yukarıdaki envanter ve olay incelemesi adımlarını uygulayın.
Yamayı bugün uygulayın, envanteri bu hafta bitirin
PHP2Shell, kimlik doğrulaması gerektirmeyen ve CVSS v4.0’a göre 9.2 puan alan iki açığın ortak adı. Yamalı sürümler 21 Ekim 2026’da yayımlandı. Eksiksiz bir geçici önlem yok. Yamalamak tek güvenli yol.
İlk yapmanız gereken 3 şey
- Bugün: PHP’nin yamalı sürümünü kurun, çalışan worker’ları yeniden başlatın ve gerçek bir HTTP isteğiyle doğrulayın.
- Bu hafta: PHP envanterinizi çıkarın (panelin kendi PHP’si dahil) ve kullanılmayan ya da destek süresi dolmuş (EOL) sürümleri kapatın.
- Hemen: Yamalı sürüme geçemediğiniz sunucularda panel portunu yalnızca kendi IP adresinizden erişilebilir yapın. Yamasız siteler için çevrimdışı almayı ya da erişimi kısıtlamayı değerlendirin.
Olay hâlâ gelişiyor. Panel duyuruları, WAF kuralları ve CISA’nın Known Exploited Vulnerabilities listesi değişebilir. Bu yazıdaki bilgiler 22 Ekim 2026 itibarıyla geçerli.
Kaynaklar
PHP ve birincil kaynaklar
- PHP güvenlik duyurusu (21 Ekim 2026)
- PHP ön bildirimi (20 Ekim 2026)
- GHSA-w8hw-w9fx-j79w: CVE-2026-109618
- GHSA-6wmf-4rv5-p3rp: CVE-2026-109619
- PHP Foundation açıklaması
Araştırma
Devlet ve resmi kurumlar
- CERT-EU Advisory 2026-018
- JPCERT/CC uyarısı (22 Ekim 2026)
- JVN kaydı (22 Ekim 2026)
- Başbakan Takaichi’nin X paylaşımı
- NSA X duyurusu
- Cloudflare CTO’su
Güvenlik firmaları ve satıcılar
- Unit 42 (22,6 milyon rakamı)
- Rapid7
- watchTowr FAQ
- Sophos
- CloudLinux
- AWS WAF bülteni (2026-143-AWS)
- Palo Alto Networks güvenlik danışmanı
- NCSC-NL üçüncü taraf yazılım izleyicisi
Kontrol panelleri
- HestiaCP duyurusu
- HestiaCP GitHub #5817
- CloudPanel GitHub #823
- CyberPanel blog yazısı
- cPanel destek makalesi
- cPanel sürüm notları
- CloudLinux olay raporu
- Plesk destek makalesi
- Plesk değişiklik günlüğü
- DirectAdmin forum duyurusu
- FastPanel değişiklik günlüğü
- FastPanel PHP sürüm rehberi
Haberler