PHP2Shell Açığı: İşletmeler İçin 48 Saatlik Eylem Planı
21 Ekim 2026'da yamalanan PHP2Shell açıkları (CVE-2026-109618, CVE-2026-109619) PHP ile çalışan web sitelerinde kimlik doğrulaması olmadan uzaktan kod çalıştırmaya izin veriyor. Bu yazı yöneticiler için riskin ne anlama geldiğini, hangi sistemlerin önce ele alınacağını, hosting sağlayıcısına ve ajansa sorulacak soruları, KVKK yükümlülüğünü ve 48 saatlik bir kontrol listesini veriyor.
21 Ekim 2026'da yamalanan PHP2Shell açıkları (CVE-2026-109618, CVE-2026-109619) PHP ile çalışan web sitelerinde kimlik doğrulaması olmadan uzaktan kod çalıştırmaya izin veriyor. Bu yazı yöneticiler için riskin ne anlama geldiğini, hangi sistemlerin önce ele alınacağını, hosting sağlayıcısına ve ajansa sorulacak soruları, KVKK yükümlülüğünü ve 48 saatlik bir kontrol listesini veriyor.
İçindekiler▾
- PHP2Shell işletmem için ne anlama geliyor?
- Hangi sistemlerim etkileniyor olabilir?
- İlk 48 saatte ne yapılmalı?
- Hosting sağlayıcıma ve ajansıma hangi soruları sormalıyım?
- Yama yapılamayan sistemlerle ne yapılır?
- Saldırıya uğradığımızı nasıl anlarız, ne yaparız?
- Sunucumuz başkasına saldırı aracı olabilir mi?
- Bu hafta için kontrol listesi nedir?
- Sonuç
PHP2Shell, PHP programlama dilinin çekirdeğindeki iki kritik açıktır (CVE-2026-109618 ve CVE-2026-109619). PHP ile çalışan bir web sitesinde, giriş yapmaya gerek kalmadan sunucuda komut çalıştırmaya izin verir. 21 Ekim 2026’da yamalandı. İşletme için anlamı açık: sitenin çalıştığı PHP sürümü bu hafta güncellenmeli ve güncellendiği yazılı olarak doğrulanmalıdır.
Bu yazı teknik ekibi olmayan ya da teknik işi ajansa, hosting firmasına veya dış bir ekibe veren işletmeler için. Sunucuda komut düzeyinde tespit ve kapatma adımlarını gerçek çıktılarıyla Erdem Özyurt’un rehberinde bulabilirsiniz. Burada yöneticinin vereceği kararlar var: neyi önce ele alacağınız, kime ne soracağınız ve iki gün içinde neyin bitmiş olması gerektiği.
PHP2Shell işletmem için ne anlama geliyor?
Sitenizi ele geçirmek için kullanıcı adına, şifreye ya da sitenizdeki bir eklenti hatasına gerek kalmaması demek. PHP güvenlik ekibi, en yaygın kurulumlardan biri olan Apache mod_php üzerinde tek bir kimliksiz isteğin, uygulama kodu hiç çalışmadan saldırıyı tetikleyebildiğini gösterdi (php.net). İki açık da CVSS v4.0 ölçeğinde 9.2 puanla “kritik” sınıfında.
PHP’nin yaygınlığı riski büyütüyor. WordPress ve WooCommerce, Magento, Joomla, Drupal, Moodle, GLPI gibi yardım masası uygulamaları ve birçok hosting kontrol paneli PHP ile çalışır. Ele geçirilen bir web sunucusu üç ayrı zarara kapı açar: sitenin tahrip edilmesi ya da sahte ödeme sayfası eklenmesi, veritabanındaki müşteri verisinin çalınması ve sunucunun başka saldırılar için araç olarak kullanılması.
Olayın zaman çizelgesi, beklemenin neden riskli olduğunu gösteriyor (PHP Foundation):
| Tarih (Türkiye saati) | Olay |
|---|---|
| 11 Ağustos | İki araştırma ekibi aynı kök nedeni birbirinden bağımsız bildirdi |
| 20 Ekim 18:00 | CVE numaraları ambargo bitmeden internete sızdı |
| 20 Ekim 23:00 | Bir kavram kanıtı videosu yanlışlıkla yayımlandı, silindi ama kopyaları yayıldı |
| 21 Ekim 10:41 | Bir imaj sağlayıcısı yamalı paketleri planlanandan önce yayımladı |
| 21 Ekim 17:00 | PHP yamalı sürümleri çıkardı (plan 22 Ekim’di, bir gün öne çekildi) |
Cloudflare yama çıkmadan önce bu açıkları hedefleyen erken saldırılar gördüğünü açıkladı (BleepingComputer). Hollanda Ulusal Siber Güvenlik Merkezi kendi web sitesini önlem olarak kapattı (GovInfoSecurity).
Hangi sistemlerim etkileniyor olabilir?
Web isteği karşılayan ve PHP kullanan her sistem. Envanteri sahibine göre çıkarmak, kimin harekete geçeceğini de belirler:
| Sistem | Tipik örnek | PHP’yi kim günceller? |
|---|---|---|
| Kurumsal web sitesi, blog | WordPress, Joomla | Paylaşımlı hostingde sağlayıcı; kendi sunucunuzda ekibiniz |
| E-ticaret | WooCommerce, Magento, OpenCart | Çoğu zaman ajans veya hosting sağlayıcısı |
| İç uygulamalar | GLPI, Moodle, CRM, intranet | IT ekibi veya dış destek |
| Kontrol panelleri | cPanel, Plesk, yönetim panelleri | Sağlayıcı veya sunucuyu yöneten ekip |
| Eski ve unutulmuş siteler | Kampanya sayfası, eski alan adı, test kurulumu | Çoğu zaman kimse; asıl risk burada |
Listenin son satırı genellikle en tehlikeli olanıdır. Taşınmış bir sitenin eski kopyası, alan adı başka yere yönlense bile eski sunucuda çalışmaya ve internetten erişilebilir kalmaya devam edebilir. Bu kopyalar güncellenmez, çünkü kimse var olduklarını hatırlamaz.
İlk 48 saatte ne yapılmalı?
Sırası önemli. Önce görünürlük, sonra yama, sonra doğrulama ve en son iz avı.
| Zaman | İş | Bitti sayılması için |
|---|---|---|
| İlk 4 saat | Tüm PHP sistemlerinin listesi: alan adı, sunucu, sorumlu kişi veya firma | Yazılı liste, her satırda bir sorumlu |
| İlk 8 saat | İnternete açık ve müşteri verisi tutan sistemler için yama talebi | Sorumlunun yazılı tarih taahhüdü |
| İlk 24 saat | İnternete açık sistemlerin tamamı yamalı sürümde | Her sistem için web üzerinden okunan PHP sürümü |
| İlk 24 saat | Yamalanamayanlar için karar: çevrim dışı, erişim kısıtı veya WAF | Her biri için yazılı karar ve sahibi |
| 48 saat | İç sistemler yamalı; 17 Ekim’den bu yana iz taraması yapıldı | Tarama raporu (süreç, log, yeni dosya) |
| 48 saat | Unutulmuş siteler ya kapatıldı ya listeye alındı | Kapatılan alan adları ve sunucular |
Yamalı sürüm eşiği: PHP 8.5.12, 8.4.27, 8.3.36 veya 8.2.35. Bunların altındaki bir sürüm, dağıtım üreticisi düzeltmeyi ayrıca eklemediyse savunmasızdır.
Hosting sağlayıcıma ve ajansıma hangi soruları sormalıyım?
Altı soru, cevabı yazılı alınmak üzere:
- Sitemiz şu an hangi PHP sürümünde çalışıyor? Sürüm eşik altındaysa, kullandığınız paketin değişiklik kaydında CVE-2026-109618 geçiyor mu?
- Yama hangi tarih ve saatte uygulandı, PHP worker’ları ve web sunucusu yeniden başlatıldı mı?
- Sitemiz konteynerde çalışıyorsa imaj yeniden çekilip konteyner yeniden oluşturuldu mu?
- Aynı sunucuda veya panelde başka PHP sürümleri seçili mi? Hepsi yamalı mı?
- Yamadan önceki günlerde (17 Ekim’den bu yana) sunucuda şüpheli süreç, bellek hatası yoğunluğu ya da yeni PHP dosyası arandı mı?
- Sitemizin yedeği hangi tarihte alındı ve temiz bir yedekten geri dönüş ne kadar sürer?
“Güncelledik” cevabı yeterli değildir. Birinci ve ikinci sorunun cevabı somut bir sürüm numarası ve tarih içermelidir. Sürüm, sitenin kendisinden de okunabilir: birçok sunucu her yanıta X-Powered-By: PHP/8.x.y başlığını ekler ve teknik ekibiniz bunu tek komutla kontrol edebilir.
Yama yapılamayan sistemlerle ne yapılır?
Kalıcı bir çözüm yoksa riski daraltırsınız ve bir bitiş tarihi koyarsınız. CISA’nın önerisi, güncellenemeyen ya da PHP 8.1 ve öncesinde çalışan sistemleri çevrim dışı almaktır (CISA). Kapatmak mümkün değilse üç ara adım var:
- Erişimi daraltın. İç uygulamaları ve yönetim panellerini yalnız VPN’den ya da bilinen IP adreslerinden erişilebilir yapın. Bu tek adım, internetten gelen kimliksiz isteği tamamen keser.
- Web uygulama güvenlik duvarı (WAF) koyun. Cloudflare gibi sağlayıcılar geçici kurallar yayımladı. CISA bunun “bir miktar koruma” sağlayabileceğini, ama yamanın yerini tutmadığını yazıyor.
- Teknik ekibe geçici yapılandırma önlemlerini uygulatın. PHP ekibinin önerdiği ayarlar bilinen saldırı yollarını daraltıyor, ama resmi duyuru bunların kurulumu güvenli hale getirmediğini açıkça söylüyor.
Her ara adımın bir sahibi ve bir bitiş tarihi olsun. “Şimdilik böyle kalsın” denen sistem birkaç ay sonra listenin son satırındaki unutulmuş siteye dönüşür.
Saldırıya uğradığımızı nasıl anlarız, ne yaparız?
Üç işaret var: web sunucusu sürecinin kendi başına komut satırı programları başlatması, hata kayıtlarında kısa sürede çok sayıda bellek taşması ve çökme, ve son günlerde kimsenin yüklemediği PHP dosyalarının ortaya çıkması. Teknik ekibiniz bunları birkaç komutla tarayabilir; tarama adımları rehberde var.
Bir uyarı: birçok kurulumda PHP’nin varsayılan ayarları bu hataları kayda yazmıyor, hata mesajını ziyaretçinin ekranına basıyor. Kayıtlarda bir şey görmemek temiz olduğunuzu göstermez; önce kayıt tutmanın açık olduğu doğrulanmalı.
Şüpheli bir iz bulunduysa sırası şöyledir:
- Sunucuyu kapatmadan önce disk ve bellek görüntüsü aldırın; delil kaybolmasın.
- Siteyi bakım moduna alın ya da ağdan ayırın.
- Veritabanı, e-posta ve yönetim paneli şifrelerini değiştirin, API anahtarlarını yenileyin.
- Temiz bir yedekten, yamalı PHP ile yeniden kurun. Yama, içeri girmiş birini dışarı çıkarmaz.
- Kişisel veri içeren bir sistemde yetkisiz erişim doğrulandıysa, hukuk danışmanınızla birlikte KVKK’ya bildirim kararını verin. Kurul kararı, ihlalin öğrenilmesinden itibaren 72 saatlik bir süre öngörüyor.
Sunucumuz başkasına saldırı aracı olabilir mi?
Evet ve bunu fark etmek zordur. Tellal honeypot ağının 20-21 Ekim ölçümü, PHP2Shell sızıntısıyla aynı saatlerde başka bir şeyi yakaladı: Türkiye’deki 163 barındırma bloğunun adreslerini taklit eden 19 saatlik bir hizmet dışı bırakma saldırısı. Saldırgan sahte paketleri internetteki sunuculara gönderdi, sunucular da cevaplarını kurbanlara yolladı. Bizim sensör bu sürede gelen trafiğin 4,8 katını kurbanlara geri yansıttı (Tellal bülteni).
Aynı bültenin PHP tarafındaki bulgusu da yöneticiler için önemli: sensörde PHP2Shell’e ait tek bir iz görülmedi, ama eski PHP saldırıları her gün sürdü. Bu, sizin sisteminizin güvende olduğunu değil, kitlesel taramanın henüz her yere ulaşmadığını gösterir. Saldırıyı yamadan önce yakalamak bir şanstır, plan değil.
İnternete açık her web sunucusu yansıtıcı olarak kullanılabilir. Önlemi basittir ve teknik ekibinize sorulacak tek cümledir: “Sunucularımızda ve web sunucusunu çalıştıran konteynerlerde tcp_synack_retries değeri kaç?” Linux’ta varsayılan değer 5’tir ve cevapsız her bağlantı isteğine 6 cevap gönderilmesine yol açar; 2 değeri bu sayıyı 3’e indirir. SYN cookies ve hız sınırı bu saldırıda işe yaramaz, çünkü yük binlerce sunucuya ince ince dağılır. Ölçüm ve uygulama adımları Erdem Özyurt’un yazısında. Bu, PHP yamasından bağımsız ama aynı haftanın dersidir.
Bu hafta için kontrol listesi nedir?
| # | Soru | Kanıt |
|---|---|---|
| 1 | PHP kullanan tüm sistemler listelendi mi, her birinin sorumlusu belli mi? | Yazılı envanter |
| 2 | İnternete açık sistemlerin PHP sürümü eşiğin üstünde mi? | Web üzerinden okunan sürüm |
| 3 | Hosting sağlayıcısı ve ajans yamayı yazılı olarak teyit etti mi? | E-posta veya destek kaydı |
| 4 | Yamadan sonra PHP worker’ları ve konteynerler yeniden başlatıldı mı? | Sağlayıcı teyidi veya işlem kaydı |
| 5 | Yamalanamayan sistemler için karar ve bitiş tarihi var mı? | Karar notu |
| 6 | Yönetim panelleri ve iç uygulamalar internete kapalı mı? | Dış erişim testi |
| 7 | 17 Ekim’den bu yana iz taraması yapıldı mı, PHP hata kaydı açık mı? | Tarama raporu |
| 8 | Unutulmuş siteler ve eski kopyalar kapatıldı mı? | Kapatılan alan adı ve sunucu listesi |
| 9 | Temiz ve güncel bir yedek var mı, geri dönüş süresi biliniyor mu? | Son yedek tarihi, geri yükleme testi |
| 10 | Olay çıkarsa kim karar verir, KVKK bildirimi kimin işi? | Yazılı olay müdahale sorumluları |
Genel güvenlik tabanı için KOBİ siber güvenlik kontrol listesi bu planın tamamlayıcısıdır.
Sonuç
PHP2Shell’in teknik ayrıntısı karmaşık, işletmeye düşen soru ise basit: PHP ile çalışan her sistemimiz bu hafta yamalı sürüme geçti mi ve bunu kanıtlayan bir sürüm numarası elimizde mi? Cevabın zor kısmı genellikle yamanın kendisi değil, envanterin eksik olmasıdır. Kimsenin hatırlamadığı bir site, yamalanmış on siteden daha büyük risktir.
PHP envanterinizi çıkarmak, yamayı doğrulamak ve iz taraması yapmak için siber güvenlik ve teknik destek hizmetlerimize bakabilir veya doğrudan iletişime geçebilirsiniz.
Kaynaklar
- PHP 8.5.12, 8.4.27, 8.3.36 ve 8.2.35 güvenlik duyurusu — The PHP Group (2026)
- Today's PHP Security Release, and How We're Strengthening PHP Security — The PHP Foundation (2026)
- Critical Vulnerabilities in PHP Require Immediate Patching — CISA (2026)
- PHP ships emergency patches for critical PHP2Shell flaws — BleepingComputer (2026)
- Attackers Exploit Leaked Zero-Day Flaws in Widely Used PHP — GovInfoSecurity (2026)
- Bülten 12-22 Ekim: sensör yansıtıcı oldu, PHP2Shell kapıya gelmedi — Tellal Tehdit İstihbarat Platformu (2026)
Sıkça Sorulan Sorular
Sitem WordPress, PHP2Shell beni etkiler mi?+
Büyük ihtimalle evet, çünkü WordPress PHP üzerinde çalışır ve açık uygulama değil PHP'nin kendisinde. Etkilenmemek için sitenin çalıştığı PHP sürümünün 8.5.12, 8.4.27, 8.3.36 veya 8.2.35 ya da daha yeni olması gerekir. WordPress'i ve eklentileri güncellemek bu açığı kapatmaz; PHP'yi güncellemek hosting sağlayıcınızın ya da sunucuyu yöneten ekibin işidir. Ondan yazılı teyit isteyin.
Hosting sağlayıcım yamayı yaptığını nasıl kanıtlar?+
Üç bilgiyle: sitenizin şu an kullandığı PHP sürümü ya da dağıtım paketinin sürümü, yamanın uygulandığı tarih ve PHP worker'larının yeniden başlatıldığı teyidi. Sürüm numarası eşik altında görünüyorsa bu tek başına savunmasız olduğunuz anlamına gelmez; bazı dağıtımlar düzeltmeyi eski numaraya ekler. O durumda paketin değişiklik kaydında CVE-2026-109618 numarasının geçtiğini göstermelerini isteyin.
Eski bir PHP sürümünde kalmak zorundayız, ne yapabiliriz?+
PHP 8.1 ve öncesi resmi güncelleme almıyor. Bazı Linux dağıtımları ve uzun süreli destek sağlayıcıları düzeltmeyi bu dallara taşıdı; yoksa CISA'nın önerisi sistemi güncelleyene kadar çevrim dışı almaktır. Bu mümkün değilse erişimi yalnız bilinen IP adreslerine kısıtlayın, web uygulama güvenlik duvarı kurun ve sistemin yerine geçecek desteklenen sürüm için tarih koyun. Geçici önlemler açığı kapatmaz, yalnız bilinen saldırı yollarını daraltır.
Saldırıya uğradıysak KVKK'ya bildirim yapmak zorunda mıyız?+
Kişisel veri içeren bir sistemde yetkisiz erişim tespit ettiyseniz, Kişisel Verileri Koruma Kurulu'nun kararı veri sorumlusundan ihlali öğrendiği andan itibaren en geç 72 saat içinde Kurul'a bildirmesini istiyor. Web sitesi veritabanında müşteri adı, e-posta ya da sipariş bilgisi tutuluyorsa bu kapsamdadır. Bu hukuki görüş değildir; olayın ilk saatlerinde hukuk danışmanınızla bildirim kararını birlikte verin.
Bizim sitemize saldırı olmadıysa yama acele değil mi?+
Aceledir. Açıkların ayrıntıları ambargo bitmeden 20 Ekim'de sızdı ve Cloudflare yama çıkmadan önce erken saldırılar gördüğünü açıkladı. Bir saldırının izini görmemek, sitenin taranmadığı anlamına gelmez; PHP'nin varsayılan ayarlarında bu açığın en belirgin izi loga hiç düşmeyebilir. Yama günü ile ilk kitlesel tarama arasındaki süre bu tür açıklarda genellikle günlerle ölçülür.
Profesyonel Destek mi Lazım?
Bu konuda yardıma ihtiyacın varsa yanındayız. Kurulum, konfigürasyon ve sorun giderme için ulaş.
