Siteniz PHP ile çalışıyorsa ilk iş, sunucudaki PHP sürümünü öğrenip 21 Ekim 2026'da yayımlanan yamalı sürümle karşılaştırmak. PHP2Shell olarak bilinen iki açık (CVE-2026-109618 ve CVE-2026-109619), saldırganın şifre bilmeden sunucuda kod çalıştırmasına izin veriyor. Aşağıdaki 9 adım, sürüm kontrolünden yamaya, geçici önlemlerden saldırı izi aramaya kadar yapılması gerekenleri sırayla anlatıyor. İlk 4 adım herkes için, sonrakiler durumunuza göre.
Açığın ne olduğunu ve WordPress sitelerini neden etkilediğini PHP güvenlik açığı: WordPress sitem etkilenir mi? yazısında anlattık. Bu yazı doğrudan yapılacaklara odaklanıyor. Genel bilgilendirmedir; sunucunuzda işlem yapmadan önce yedek alın ve emin olmadığınız adımı sitenizi yöneten ekibe bırakın.
1. Siteniz gerçekten PHP ile mi çalışıyor?
Bunu bilmeyen site sahibi sanıldığından çok. Siteyi bir ajans ya da serbest çalışan kurduysa altyapı hiç konuşulmamış olabilir. Anlamanın kolay yolları şunlar:
- Yönetim paneliniz
/wp-adminadresindeyse siteniz WordPress, yani PHP. - Joomla, Drupal, OpenCart, PrestaShop, Magento ya da Laravel ile yazılmış bir yazılım kullanıyorsanız yine PHP.
- Hosting paketinizde cPanel, Plesk ya da DirectAdmin varsa ve "PHP sürümü" seçeneği görüyorsanız büyük ihtimalle PHP.
- Emin değilseniz sitenizi yapan kişiye ya da firmaya tek cümle sorun: "Sitemiz hangi dil ve altyapıyla çalışıyor?"
Cevap Node.js, Next.js, Python ya da .NET ise ve sunucuda PHP yüklü değilse bu açık sizi ilgilendirmiyor. Yine de aynı sunucuda PHP ile çalışan başka bir uygulama (eski bir blog, bir anket aracı) olmadığından emin olun.
2. Web sitesinin kullandığı PHP sürümünü bulun
WordPress'te en kolay yol Araçlar → Site Sağlığı → Bilgi → Sunucu ekranı. Orada tam sürüm numarası yazar, örneğin 8.3.36. Diğer yazılımlarda yönetim panelinin "Sistem Bilgisi" bölümüne bakın ya da barındırma firmanıza sorun.
Kendi sunucusunu yönetenler için bir uyarı: terminalde php -v komutunun gösterdiği sürüm, web sitesinin kullandığı sürümle aynı olmayabilir. Bir sunucuda birden fazla PHP sürümü yüklü olabilir. Komut satırı birini, web sunucusu başkasını kullanır. Doğru bilgiyi web sitesinin kendi ekranından ya da PHP-FPM servisinin sürümünden alın.
3. Sürümünüzü yamalı sürümle karşılaştırın
Güvenli sayılan en düşük sürümler şunlar:
- 8.5 hattı: 8.5.12
- 8.4 hattı: 8.4.27
- 8.3 hattı: 8.3.36
- 8.2 hattı: 8.2.35
Sonuca göre üç durumdan birindesiniz. Sürümünüz bu numaralar ya da üstüyse yama yapılmış demektir, 7. adıma geçebilirsiniz. Sürüm hattınız listede ama numara düşükse (8.3.30 gibi) 4. adım sizin için. 8.1, 8.0, 7.4 ya da daha eskiyse resmi yama yok, 5. adım sizin için.
4. Yamayı uygulayın (ya da uygulatın)
Kimin yapacağı, sitenin nerede durduğuna bağlı:
- Paylaşımlı hosting: Yamayı barındırma firması yapar. Destek talebi açın, iki CVE numarasını yazın ve hangi sürüme güncellediklerini yazılı olarak isteyin. "Önlem aldık" gibi genel bir cevap yerine sürüm numarası isteyin.
- Kendi sunucunuz (VPS ya da fiziksel sunucu): İşletim sisteminin paket yöneticisiyle PHP'yi güncelleyin. Ardından PHP-FPM ya da Apache servisini yeniden başlatın. Bu adım atlanırsa eski kod bellekte çalışmaya devam eder ve güncelleme işe yaramaz.
- Docker ile çalışan siteler: Temel imajı yamalı sürüme yükseltip imajı yeniden oluşturun ve konteyneri yeniden başlatın. Sadece konteyner içinde paket güncellemek, bir sonraki yeniden başlatmada geri alınır.
Güncellemeden sonra 2. adımdaki ekrana dönüp yeni sürüm numarasını kendi gözünüzle doğrulayın.
5. Desteği bitmiş sürümdeyseniz: yükseltme planı
PHP 8.1 ve öncesi için PHP ekibi resmi bir sürüm yayımlamadı. Bazı Linux dağıtımları ve barındırma firmaları bu sürümlere kendi yamalarını uyguluyor, ama bu geçici bir köprü. Kalıcı çözüm desteklenen bir sürüme geçmek. 8.2'nin desteği de 31 Aralık 2026'da bittiği için, yükseltme yapacaksanız doğrudan 8.4 ya da 8.5'i hedefleyin.
Sürüm atlamak, düğmeye basıp geçmek kadar basit olmayabilir. Eski bir tema ya da yıllardır güncellenmemiş bir eklenti yeni PHP sürümünde hata verebilir. Güvenli sıra şöyle:
- Sitenin tam yedeğini alın: dosyalar ve veritabanı birlikte.
- Mümkünse bir kopya (test ortamı) açın ve yükseltmeyi önce orada deneyin.
- WordPress'i, temayı ve eklentileri en güncel sürümlerine getirin. Yeni PHP'yle uyum sorunlarının çoğu bu adımda çözülür.
- PHP sürümünü yükseltin ve sitenin ana sayfasını, formlarını, ödeme ya da üyelik gibi kritik akışlarını tek tek deneyin.
- Uzun süredir güncelleme almayan eklentileri kaldırın ya da alternatifiyle değiştirin.
Yükseltme bitene kadar 6. adımdaki geçici önlemleri uygulayın.
6. Yama gelene kadar geçici önlemler
Bu önlemler riski azaltır ama yamanın yerini tutmaz. Yamayı hemen yapamıyorsanız devreye alın:
- Web uygulama güvenlik duvarı (WAF): Cloudflare gibi servisler bu açığa yönelik hazır kurallar yayımladı. Siteniz Cloudflare arkasındaysa yönetilen kural setlerinin açık olduğundan emin olun.
- Yükleme ilerleme özelliğini kapatın: PHP ayarlarında
session.upload_progress.enabled = 0yapılması, uzmanların önerdiği geçici önlemlerden biri. Paylaşımlı hostingde bunu firmanızdan isteyin. - Yükleme ve form boyut sınırlarını düşürün: Sitenizin gerçekte ihtiyaç duyduğundan büyük dosya ve form gönderimine izin vermeyin.
- Yönetim panelini sınırlayın: Panel adresine yalnız ofisinizin ya da ekibinizin IP adreslerinden erişilmesine izin verin.
- Son çare olarak siteyi kapatın: Avrupa'daki siber güvenlik kurumları, yama yapılamayan sitelerin geçici olarak yayından kaldırılmasını öneriyor. Ziyaretçiye kısa bir bakım sayfası göstermek, ele geçirilmiş bir siteyle uğraşmaktan çok daha ucuz.
7. Unutulmuş kurulumları kapatın
Hosting hesabınızdaki klasörleri ve alt alan adlarını tek tek gözden geçirin. Eski site yedekleri, test kurulumları, kampanya için açılıp unutulmuş sayfalar... Bunlardan biri eski PHP sürümünde çalışıyorsa saldırgan oradan girip aynı hesaptaki ana sitenize de ulaşabilir.
Kullanmadığınız her kurulumu ya kaldırın ya da dışarıdan erişime kapatın. Bu hafta yeni altyapıya taşıdığımız bir müşterimizin eski WordPress klasörünü silmeden önce sunucu ayarıyla tüm dış isteklere kapattık. Dosyalar gerekirse geri dönmek için yerinde duruyor, ama internetten erişilemiyor. Geri dönüş ihtimali olan kurulumlar için bu yöntem silmekten daha güvenli bir ara yol.
8. Saldırıya uğradınız mı? İz arayın
Yama, bundan sonraki saldırıları durdurur ama daha önce girilmiş bir sitedeki arka kapıyı kapatmaz. Açık duyurulmadan önce de istismar edilmiş olabilir. Şunlara bakın:
- Sunucu kayıtları (loglar): Son haftalarda olağandışı büyük ya da bozuk form gönderimleri, aynı adrese art arda gelen hatalı istekler, ani 500 hata patlamaları.
- Yönetici hesapları: WordPress'te Kullanıcılar sayfasında tanımadığınız bir yönetici var mı?
- Dosyalar: Son günlerde değişmiş ya da eklenmiş PHP dosyaları, özellikle yükleme (uploads) klasöründe bulunan PHP dosyaları. Resim klasöründe PHP dosyasının işi yoktur.
- Site davranışı: Ziyaretçiyi başka sitelere yönlendirme, arama sonuçlarında sizin olmayan sayfalar, hostinginizden gelen spam uyarıları.
Google Search Console'a da bakın. Ele geçirilmiş siteler çoğu zaman ilk izi orada bırakır: "Güvenlik sorunları" raporunda bir uyarı ya da sizin yayımlamadığınız sayfaların dizine eklenmesi. Search Console mülkünüz yoksa kurulumu ve diğer teknik kontrolleri teknik SEO kontrol listesi yazısında bulabilirsiniz.
9. Şüphe varsa: şifreleri ve anahtarları yenileyin
Açıklardan biri bellekteki gizli bilgilerin sızmasına yol açabildiği için, iz bulduysanız ya da yamayı geç yaptıysanız şu bilgileri yenileyin:
- Veritabanı şifresi (ardından WordPress'teki
wp-config.phpdosyasını yeni şifreyle güncelleyin). - WordPress güvenlik anahtarları (salt değerleri). Bu, tüm oturumları kapatır ve herkesin yeniden giriş yapmasını gerektirir.
- Sitede kayıtlı ödeme, kargo, SMS ya da e-posta servislerinin API anahtarları.
- Yönetici hesaplarının ve hosting panelinin şifreleri.
İz bulduysanız temizliği kendiniz yapmaya çalışmayın. Arka kapı bir kez yerleştiyse, görünen dosyayı silmek genellikle yetmez. Temiz yedekten geri dönüş ya da profesyonel temizlik gerekir.
Bu olaydan çıkarılacak ders
PHP2Shell, bir sitenin "bir kez yapılıp bırakılan" bir iş olmadığını hatırlattı. Altyapı yazılımlarının da bir ömrü var ve desteği biten sürüm, er ya da geç açık kapıya dönüşüyor. Yıllık bütçenizde bakım ve güncelleme kalemi yoksa web sitesi yıllık maliyetleri yazımız neyin ayrılması gerektiğini gösteriyor.
Sitenizin altyapısı zaten eskiyse, bu olay yenileme için iyi bir zaman olabilir. Web tasarım hizmetimiz kapsamında kurduğumuz siteler PHP kullanmayan, Next.js tabanlı bir altyapıda çalışıyor. Sitenizin hangi durumda olduğundan emin değilseniz bize yazın, birlikte bakalım.

