Alesta WEB

Kısa cevap: PHP2Shell, PHP'nin kendi motorunda bulunan iki kritik açığın ortak adı: CVE-2026-109618 ve CVE-2026-109619. İkisi de giriş yapmadan, uzaktan, sunucuda kod çalıştırmaya (RCE) imkân veriyor. Yamalar 21 Ekim 2026, 17:00 (TSİ)'de çıktı: PHP 8.5.12, 8.4.27, 8.3.36 ve 8.2.35. PHP 8.1, 8.0 ve 7.4 için resmi sürüm yok, yalnız dağıtım ve panel sağlayıcılarının geri taşıdığı (backport) yamalar var. Açık PHP'nin içinde olduğu için site yazılımını (CMS, eklenti, tema) güncellemek korumuyor; sunucudaki PHP güncellenmeli ve bütün PHP işçileri yeniden başlatılmalı. Güncelleme yapılamıyorsa ABD, İngiltere, AB ve Almanya'nın siber güvenlik kurumları sistemi geçici olarak internetten çekmeyi öneriyor.

Ne oldu? Zaman çizelgesi (PHP2Shell timeline)
PHP, sunucu tarafında çalışan dili bilinen web sitelerinin yaklaşık üçte ikisinde kullanılıyor (W3Techs: %69,3). Bu yüzden PHP motorunun kendisindeki bir açık, tek bir yazılımı değil internetin büyük bölümünü ilgilendiriyor. PHP2Shell'i farklı kılan da bu: açık bir eklentide, bir temada ya da bir çerçevede değil, PHP'nin istek işleme mantığında.
Açıkların keşfi birkaç aya yayılıyor. Yayın ise planlanandan bir gün önce, sızıntılar nedeniyle aceleyle yapıldı. Saatler UTC, parantez içinde Türkiye saati (TSİ = UTC+3):
| Tarih / saat | Olay |
|---|---|
| 2012 | Etkilenen en eski kod yolu PHP 5.4.0 ile geliyor. |
| 2024 | Dış güvenlik denetiminde bellek tükenmesi (OOM) sorununun ilk işaretleri görülüyor; somut saldırı yolu bulunamıyor, düzeltme konusunda uzlaşma sağlanamıyor. PHP Foundation bunu sonradan "yapısal bir başarısızlık" olarak niteledi. |
| 2026 başı – Ağustos | Yapay zekâ destekli tarama araçları ve güvenlik firmaları (Calif, Wiz, OpenAI, Trail of Bits) PHP'yi denetliyor. 11 Ağustos'ta ilk açık bildiriliyor; 24 Ağustos ve 18 Eylül'de ek saldırı yolları raporlanıyor. |
| 20 Ekim, sabah | Hacker News'te iki kritik açık iddiası çıkıyor, sonra kaldırılıyor. |
| 20 Ekim ~15:00 (18:00) | İki CVE numarası, yanlış yayın saati ve yanlış "CVSS 10.0" puanıyla internette dolaşıyor. |
| 20 Ekim 19:30 (22:30) | PHP, ön duyuruyu erkenden yayımlıyor ve yayını 22 Ekim'den 21 Ekim'e çekiyor. |
| 20 Ekim ~20:00 (23:00) | Saldırı kanıtı (PoC) içeren bir video yanlışlıkla yayımlanıyor, kopyaları yayılıyor. |
| 21 Ekim 03:02 (06:02) | Cloudflare, ücretsiz plan dahil tüm müşterilerinde koruma kurallarını varsayılan olarak açıyor. |
| 21 Ekim 07:41 (10:41) | PHP Foundation'a göre bir konteyner imajı sağlayıcısı ambargoyu bozarak yamalı imajları altı saatten fazla erken yayımlıyor. |
| 21 Ekim 14:00 (17:00) | Koordineli yayın: PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35. |
| 21 Ekim, gün boyu | CISA, NSA, FBI, İngiltere NCSC, CERT-EU, Almanya BSI, Japonya ve Türkiye Siber Güvenlik Başkanlığı uyarı yayımlıyor. Avrupa'da çok sayıda kamu sitesi önlem olarak kapatılıyor. |
| 21 Ekim akşamı | AlmaLinux 8/9/10, Ubuntu, Debian, ondrej PPA, Docker resmi imajları ve hosting panelleri yamalı paketleri yayımlıyor. |
Puan konusunda da karışıklık oldu. İlk sızan bilgilerde 10.0 yazıyordu; PHP Foundation bunun yanlış olduğunu açıkladı. Resmi puan CVSS 4.0: 9.2. NVD'de CVSS 3.1 ile 9.8, Red Hat'te 8.1 görülüyor. Hangi puana bakarsanız bakın, sonuç aynı: kritik.
İki açık sade dille (CVE-2026-109618 ve CVE-2026-109619)
PHP her isteği işlerken belli bir bellek sınırı içinde çalışır (memory_limit). Sınıra çarpan istek "acil çıkış" ile kesilir. Sorun, bu kesintinin yanlış anda olması. O zaman PHP'nin iç kayıtları ya yarım kalıyor ya da silinmiş belleği hâlâ geçerli sanıyor. Aynı PHP işçisine (worker) gelen bir sonraki istek bu bozuk belleği kullanıyor.
Saldırgan bunu tetiklemek için siteye özel hazırlanmış bir dosya yükleme isteği (multipart/form-data) gönderiyor. Sitede yükleme formu olması gerekmiyor; PHP bu tür istekleri, sitenin kodu çalışmadan önce kendisi ayrıştırıyor. Giriş yapmak da gerekmiyor.
CVE-2026-109618: Bellek tükenmesi sonrası bozulma (OOM corruption)
PHP bellek tükenince isteği longjmp() ile terk ediyor. Bu, istek belleği yalnızca kısmen hazırlanmışken olursa, istek kapanışı geçersiz bir durumu işliyor. Dosya yükleme ayrıştırıcısındaki bazı eksikler (parça başına sınırsız başlık, iç içe alan adları gibi) isteği post_max_size sınırının içinde kalarak belleği tüketmeye zorlayabiliyor. Resmi bildirime göre Apache mod_php kurulumlarında varsayılan ayarlarla tam uzaktan kod çalıştırma doğrulandı. PHP-FPM, LiteSpeed (lsphp) ve FrankenPHP de etkilenebilir. Düzeltmede longjmp() kaldırıldı, yerine güvenli noktada devreye giren "yumuşak" ve daha yüksek eşikte süreci kapatan "sert" bellek sınırı getirildi.
CVE-2026-109619: İstekten artakalan durum (stale global state)
Bir isteğe ait bazı bilgiler (hata, oturum, eklenti durumu) istek bittikten sonra da bellekte kalabiliyor. Sonraki istek, normal hazırlık bitmeden bu eski bilgiyi okuyor. Sonuç: serbest bırakılmış belleğin kullanılması (use-after-free), bellek içeriğinin sızması ve web işçisinin yetkileriyle kod çalıştırma. Resmi olarak doğrulanan iki yol var: session.upload_progress (yükleme ilerlemesi) mekanizması ve PHP 8.5'te fatal_error_backtraces ayarı. Resmi bildirimde "eksiksiz, genel bir yapılandırma önlemi yok" deniyor.
Neden "Heartbleed benzeri" deniyor?
Araştırmacıların gösterdiği zincirde, bozulan bellek içeriği yanıttaki PHPSESSID çerezinin içinde saldırgana geri gönderiliyor. Uygulama hiç oturum başlatmasa bile bu oluyor. Sızan parçada aynı sunucuya gelen başka ziyaretçilerin şifreleri, oturum anahtarları, API anahtarları, hatta TLS özel anahtarları bulunabiliyor. Bu yüzden yalnız güncellemek değil, şüphe varsa sırları değiştirmek de gerekiyor (aşağıda anlatıyoruz).
Not: Kaynaklar iki CVE'yi farklı gruplamış olabilir. Bazı güvenlik firmaları oturum sızıntısını 109618 altında anlatıyor. Bu yazıda PHP'nin resmi GitHub güvenlik bildirimlerindeki eşleme esas alındı: 109618 = bellek tükenmesi sonrası bozulma, 109619 = istekten artakalan durum ve upload progress.
Etkilenen ve yamalı sürümler (affected versions)
| PHP dalı | Durum | Ne yapmalı? |
|---|---|---|
| 8.5.x | 8.5.12 yamalı | 8.5.12'ye çıkın. 8.5'te ayrıca fatal_error_backtraces yolu var. |
| 8.4.x | 8.4.27 yamalı | 8.4.27'ye çıkın. |
| 8.3.x | 8.3.36 yamalı | 8.3.36'ya çıkın. |
| 8.2.x | 8.2.35 yamalı | 8.2.35'e çıkın; 8.2'nin güvenlik desteği bitmek üzere, 8.3/8.4'e geçişi planlayın. |
| 8.1 / 8.0 / 7.4 | Resmi sürüm yok | Yalnız dağıtım/panel paketindeki geri taşınmış yama. Yoksa çevrimdışı alın ya da yükseltin. |
| 5.4 – 7.3 | PHP projesinden düzeltme yok | Bazı depolar kendi yamasını sunuyor; asıl çözüm desteklenen dala geçiş. |
Önemli bir ayrıntı: Linux dağıtımlarının 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" yazmıyor ama yamalı. Bu sistemlerde kontrolü PHP'nin gösterdiği sürüme göre değil, paket revizyonuna göre yapın.
Çalışma biçimine göre risk de değişiyor. Apache mod_php en yüksek riskte; PHP-FPM'de oturum yükleme ilerlemesi yolu doğrulandı; LiteSpeed lsphp ve FrankenPHP kaynak analizine göre etkilenebilir; yalnız komut satırında (CLI) çalışan, web isteği almayan PHP için kaynaklarda risk tanımlanmıyor.
Dünya genelinde etki ve resmi uyarılar
PHP2Shell, son yıllarda en çok sayıda devlet kurumunun aynı gün uyarı yayımladığı açıklardan biri oldu. The Record'a göre "yüzlerce site" önlem olarak kapatıldı, "onlarca devlet kurumu" uyarı yaptı.
| Kurum | Öneri |
|---|---|
| CISA (ABD) | Hemen yamalayın; başka ürünlere gömülü PHP dahil envanter çıkarın. Yamalanamıyorsa ya da PHP 8.1 ve altıysa sistemi çevrimdışı alın. WAF yalnız kısmi koruma. Yayın anında istismar gözlemlenmedi. |
| NSA ve FBI (ABD) | Güncelleyin; hemen mümkün değilse sorun tamamen giderilene kadar siteyi çevrimdışı alın. |
| NCSC (Birleşik Krallık) | İnternete açık sistemlerden başlayın, geçici önlemleri uygulayın; uygulanamıyorsa sistemi kapatmayı düşünün; yamalanamayan sistemlerde arka kapı izi arayın. |
| CERT-EU | Güvenlik bildirimi 2026-018: PHP uygulamalarını belirleyin, yamalayın; yamalanamıyorsa internete açık uygulamaları izole edin. |
| BSI (Almanya) | Uyarı seviyesi "Turuncu" (3/4). Hemen güncelleyin; mümkün değilse web sunucusunu internetten ayırın. |
| Japonya | Başbakan Sanae Takaichi site işletmecilerine hızlı yama çağrısı yaptı; Ulusal Siber Güvenlik Ofisi acil güncelleme önerdi. |
Önlem olarak kapatılan siteler
Kapatmaların hemen hepsi önlem amaçlıydı. 21 Ekim akşamı itibarıyla bu kurumların hiçbirinde doğrulanmış bir ihlal anlatılmıyor.
- Hollanda: Ulusal siber güvenlik merkezi NCSC-NL kendi sitesini kapattı. Ardından Overheid.nl, DigiD ve MijnOverheid, Temsilciler Meclisi, Rotterdam Limanı, futbol federasyonu KNVB, veri koruma kurumu ve bazı hastaneler geçici olarak çevrimdışı kaldı.
- Finlandiya: Devletin BT sağlayıcısı Valtori kamu ağ hizmetlerini kapattı; istismar girişimi tespit edilmediğini açıkladı.
- Danimarka: Belediyelerin BT şirketi Kombit, ulusal okul iletişim platformu dahil birkaç hizmeti durdurdu.
- Fransa: İçişleri Bakanlığı valilik ve yerel idare sitelerini geçici kapattı.
- Almanya: Federal BT hizmet sağlayıcısı ITZBund bazı siteleri kapattı; Berlin'deki Charité hastanesi ve bazı üniversiteler de önlem aldı.
- Belçika: Dışişleri Bakanlığı sitelerini geçici olarak kapattı.
- İsviçre: Bir barındırma firması müşteri paneli, webmail ve tüm web barındırmayı birkaç saatliğine kapattı; Basel Üniversitesi de önlem aldı.
- Wikimedia: Wikipedia'nın arkasındaki vakıf, Phabricator dahil bazı destek sistemlerini çevrimdışı aldı.
- Diğer: Nintendo müşteri destek hizmetleri, bazı Japon oyun ve içerik servisleri, 4chan, Something Awful, Pinboard ve disclose.tv gibi siteler de kapanan ya da bakıma alınanlar arasında geçti.
Bulut ve güvenlik tarafında da açıklamalar geldi. Google Cloud, platformun kendisinin etkilenmediğini, ancak üzerinde PHP çalıştıran müşterilerin etkilenebileceğini bildirdi. Akamai müşterilerinin korunduğunu açıkladı. Cloudflare koruma kurallarını ücretsiz plan dahil herkese açtı.
Türkiye: Siber Güvenlik Başkanlığı TR-26-1372
Türkiye'de Siber Güvenlik Başkanlığı, TR-26-1372 numaralı güvenlik bildirimini yayımladı ve ulusal ölçekte bir güvenlik taraması başlattı. Kamu kurumları, kritik altyapı işletmecileri ve özel sektöre acil uyarı gönderildi. Başkanlığın öne çıkan önerileri:
- Etkilenen sistemleri belirleyin ve yamalı sürüme hemen yükseltin.
- Yönetim arayüzlerini yalnız güvenilir IP adreslerine açın.
- Yurt dışından erişim gerekmeyen sistemlerde uluslararası trafiği kapatın.
Kamuya hizmet veren kurumların, belediyelerin, derneklerin ve sendikaların sitelerinde çoğu zaman üye ve kişisel veri tutulduğunu düşünürsek bu uyarı yalnız büyük kurumları değil, küçük ölçekli siteleri de doğrudan ilgilendiriyor.
Saldırılar başladı mı? (PHP2Shell exploitation status)
Bu noktada kaynaklar farklı şeyler söylüyor; ikisini de aktarıyoruz:
- Deneme ve tarama var: Cloudflare erken saldırı denemeleri gördüğünü ve saldırganların kuralları aşmak için yükleri değiştirdiğini yazdı. watchTowr tuzak (honeypot) ağında denemeler gördü. Bazı barındırma firmaları birden çok olay bildirdi; ancak aynı firmanın kendi telemetrisi o saatte yalnız yoklama gösteriyordu.
- Doğrulanmış ihlal yok: CISA yayın anında istismar gözlemlemedi; açıklar 21 Ekim akşamı itibarıyla bilinen istismar edilen açıklar (KEV) listesinde değildi. BSI, Huntress, Avustralya ACSC ve Hollanda NCSC de doğrulanmış istismar görmediğini bildirdi. PHP güvenlik ekibi, yayın anında çalışan genel bir saldırı kodu bulmadı.
Yama farkı (diff) ve teknik ayrıntılar artık herkese açık. Bu tür açıklarda yamadan saldırı kodu çıkarmak genelde günler, bazen saatler sürüyor. "Şimdilik ihlal yok" bilgisi, güncellemeyi ertelemek için bir sebep değil.
Nasıl kapatılır? Sistem sistem PHP güncelleme (how to patch)
Her sistemde üç adım aynı: 1) paketi güncelleyin, 2) bütün PHP işçilerini yeniden başlatın, 3) web üzerinden çalışan sürümü doğrulayın. Paketi kurmak tek başına yeterli değil; eski PHP süreçleri bellekte çalışmaya devam edebiliyor. Hosting panellerinin kendi PHP'leri ise işletim sisteminin apt/dnf güncellemesiyle güncellenmez, panelin kendi aracıyla güncellenir.
Ubuntu
sudo apt update
sudo apt install --only-upgrade 'php8.3*' # kullandığınız dal: php8.1 / php8.3 / php8.5
sudo systemctl restart php8.3-fpm # FPM kullanıyorsanız
sudo systemctl restart apache2 # mod_php: reload değil, TAM restart
# Yamalı paket revizyonları (USN-8948-1):
# 22.04: 8.1.2-1ubuntu2.28 · 24.04: 8.3.6-0ubuntu0.24.04.13 · 26.04: 8.5.4-0ubuntu1.5
# 18.04 / 20.04: Ubuntu Pro ESM ile (USN-8948-2)
zgrep -E 'CVE-2026-10961[89]' /usr/share/doc/php8.3-fpm/changelog.Debian.gzDebian
sudo apt-get update
sudo apt-get install --only-upgrade 'php8.2*' libapache2-mod-php8.2
dpkg -l | grep php # Debian 12: 8.2.35-1~deb12u1 · Debian 13: 8.4.27-1~deb13u1 (DSA-6574-1)Debian değişiklik kaydı yalnız "New upstream version" yazabilir; paket sürümünü güvenlik takip sayfasıyla karşılaştırın. ondrej PPA ve packages.sury.org depoları da dört dalı yamalı paketlerle güncelledi; aynalar gecikirse apt update komutunu bir süre sonra tekrarlayın.
RHEL / AlmaLinux / Rocky Linux
sudo dnf clean metadata
sudo dnf upgrade 'php*'
rpm -q php-common
dnf updateinfo list --security | grep php
sudo systemctl restart php-fpm httpdAlmaLinux 8, 9 ve 10'da tüm PHP akışları 21 Ekim akşamı üretim depolarına alındı. Red Hat tarafında CVE sayfasını takip edin. Remi deposu için kaynaklar çelişkili bilgi verdi; kurulumdan sonra paket sürümünü mutlaka kontrol edin.
cPanel / WHM (EasyApache 4)
dnf upgrade 'ea-php*' # eski sistemlerde: yum update 'ea-php*'
systemctl restart httpd
/scripts/restartsrv_apache_php_fpmea-php82–85 yamalı sürümlere çıktı; ea-php74, ea-php80 ve ea-php81'e yama geri taşındı. Aynı işlem WHM → EasyApache 4 ekranından da yapılabilir.
Plesk
plesk installer updateLinux'ta 8.2–8.5 dalları yamalı. Desteği bitmiş dallar 21 Ekim ve sonrası derlemelerle geliyor. Panelin kendi PHP'si için ayrı düzeltme yayımlandı; Windows sunucularda düzeltmeler daha geç geldi, Plesk destek makalesini takip edin.
DirectAdmin (CustomBuild)
da build update
da build php
# eski kurulumlarda:
cd /usr/local/directadmin/custombuild && ./build update && ./build phpCustomBuild 8.2–8.5'i son sürüme çıkarıyor, 8.1/8.0/7.4 için yama ekliyor. Çok eski işletim sistemlerinde yama uygulanırken hata bildirildi; derleme çıktısını okuyun.
CyberPanel / LiteSpeed (lsphp)
# Ubuntu / Debian
apt update && apt install --only-upgrade 'lsphp8*'
apt-cache policy lsphp83 # aday sürüm gerçekten yeni mi?
# RHEL / AlmaLinux
dnf upgrade 'lsphp*'
# LiteSpeed'i yeniden başlatmak PHP süreçlerini her zaman yenilemez:
sudo pkill lsphpLiteSpeed depoları yayın günü bazı dağıtımlarda saatlerce eski sürüm verdi; adayı kontrol etmeden "güncelledim" demeyin. PHP çekirdeğiyle birlikte OPcache modülü de güncellenmeli. Panelin kendi arayüzü için kullandığı PHP ayrıca kontrol edilmeli.
Docker
docker pull php:8.3-fpm # kullandığınız etiket
docker build --pull -t uygulamam .
docker compose up -d --force-recreateResmi php:8.x.y imajları amd64 ve arm64'te yamalı. 8.5.12RC1 gibi RC etiketleri yamalı değil. Alpine tabanlı eski imajlara düzeltme gelmeyecek; kendi imajlarınızı yeniden derleyip konteynerleri yeniden oluşturun.
Windows ve macOS
# Windows: windows.php.net'ten yamalı derlemeyi kurun, sonra
iisreset # IIS FastCGI
# veya Apache hizmetini / php-cgi süreçlerini yeniden başlatın
# macOS (Homebrew)
brew upgrade php
brew services restart phpLaravel Octane veya FrankenPHP gibi uzun ömürlü süreç kullanan kurulumlarda işletim sistemi paketi gömülü PHP'yi güncellemez. FrankenPHP için yeni sürüm ya da imaj gerekir; kuyruk işçileri (queue:restart) ve Octane sunucusu yeniden başlatılmalıdır.

Güncellemeyi doğrulama (php -v yetmez)
php -v yalnız komut satırındaki PHP'yi gösterir. Web sitesine hizmet veren PHP farklı bir dal ya da farklı bir ikili olabilir. Doğrulama için:
Eski PHP süreci kaldı mı?
# Silinmiş (eski) kütüphaneyi hâlâ kullanan süreç var mı? Boş çıktı = yok
sudo grep -lE ' /(usr|lib|opt).*\(deleted\)$' /proc/[0-9]*/maps
# Debian / Ubuntu
sudo needrestart -b -r lWeb tarafında gerçek sürüm
# Geçici bir dosya oluşturun, tarayıcıdan veya curl ile çağırın, HEMEN silin:
echo '<?php echo PHP_VERSION;' > /yol/site/surum-kontrol-gecici.php
curl -s https://siteniz.com/surum-kontrol-gecici.php
rm /yol/site/surum-kontrol-gecici.phpSunucuda birden fazla PHP dalı varsa her dal için ayrı kontrol edin. phpinfo() sayfasını kalıcı bırakmayın; saldırganlara sunucu hakkında çok bilgi verir. Dağıtım paketlerinde sürüm numarası yerine paket revizyonuna bakın.
Geçici önlemler ve sınırları (PHP2Shell mitigation)
Güncellemeyi hemen yapamayanlar için geçici önlemler var. Ama PHP'nin kendi ifadesiyle eksiksiz tek çözüm güncellemek. Aşağıdakilerin hepsi riski azaltır, kapatmaz.
| Önlem | Ne sağlar? | Sınırı |
|---|---|---|
session.upload_progress.enabled = 0 | 109619'un yükleme ilerlemesi yolunu ve oturum çerezinden bellek sızıntısını keser. | 109618'i (bellek tükenmesi) çözmez. |
fatal_error_backtraces = 0 (yalnız 8.5) | 109619'un 8.5'e özgü yolunu keser. | Yalnız PHP 8.5. |
Düşük post_max_size, istek boyutu ve parça sayısı sınırları | 109618 tetikleyicilerini zorlaştırır. | Saldırı sınırların içinde kalarak da bellek tüketebiliyor. |
pm.max_requests = 1 | Aynı işçide "hazırlayan istek → kullanan istek" zincirini kırar. | Ciddi performans kaybı. |
| multipart/form-data isteklerini engellemek | Bilinen tetik yolunu kapatır. | Dosya yüklemeyi, bazı iletişim ve ödeme formlarını, panelde görsel yüklemeyi bozar. |
| WAF (ör. Cloudflare, ModSecurity kural setleri) | Bilinen saldırı kalıplarını engeller. | Sunucuya doğrudan erişilebiliyorsa işe yaramaz; saldırganlar yükleri değiştiriyor. Bazı kural setleri LiteSpeed'de yalnız kayıt tutuyor, engellemiyor. |
| Siteyi kapatmak / statik bakım sayfası | En güvenli geçici yol; resmi kurumların önerisi. | Uygulamanın kendi "bakım modu" yetmez; PHP yine isteği işler. |
Örnek yapılandırma
; php.ini
session.upload_progress.enabled = 0
; yalnız PHP 8.5:
fatal_error_backtraces = 0
; PHP-FPM havuzu (uygulama değiştiremesin diye php_admin_*)
php_admin_flag[session.upload_progress.enabled] = offYükleme kullanmayan sitede multipart engelleme
# nginx
if ($http_content_type ~* "multipart/form-data") { return 403; }
# Apache (.htaccess veya sanal sunucu)
RewriteEngine On
RewriteCond %{HTTP:Content-Type} multipart/form-data [NC]
RewriteRule ^ - [F]Dikkat: Bu ayarları ini_set() ya da .user.ini ile yapmayın; PHP isteği ayrıştırırken bunlar henüz devrede değildir, yani geç kalır. php.ini veya FPM havuzunda yapın, sonra işçileri yeniden başlatın. RLIMIT_AS/RLIMIT_DATA gibi süreç sınırları kullanmayın; bunlar savunmasız yolu tam da tetikler. memory_limit = -1 önerisi de tartışmalı: tek bir istek sunucunun tüm belleğini tüketebilir.
İnternette dolaşan resmi olmayan "tek satırlık fix" betiklerinden ve eklentilerinden uzak durun. Hiçbiri PHP tarafından değerlendirilmedi; bir kısmı sizin sunucunuza kod çalıştırmanızı istiyor.
PHP 8.1 ve eskisi için yol haritası (end-of-life PHP)
Desteği bitmiş PHP kullanan siteler bu olayın en zor tarafında. Önerilen sıra:
- Bugün: Envanter çıkarın. Hangi site hangi PHP sürümünde çalışıyor, test/staging sunucuları, konteynerler, panelin kendi PHP'si, cihazlara gömülü PHP dahil listeleyin.
- Saatler içinde: Sağlayıcınızın geri taşınmış yamasını uygulayın. Ubuntu 22.04 (8.1), Ubuntu Pro ESM (18.04/20.04), cPanel ea-php74/80/81, DirectAdmin CustomBuild 7.4/8.0/8.1 ve bazı üçüncü taraf depolar bu yamaları sunuyor.
- Yama yoksa: CISA, NSA, NCSC ve BSI'nin çizgisi açık: yamalanana ya da yükseltilene kadar çevrimdışı alın veya yalnız VPN üzerinden erişilebilir yapın. Bu da mümkün değilse en azından upload progress'i kapatın, multipart'ı engelleyin ve WAF arkasına alın; bunun kısmi koruma olduğunu bilin.
- Günler içinde: Uygulamayı desteklenen bir dala (tercihen 8.3 veya 8.4) taşıyın. Önce test ortamında deneyin: kaldırılmış fonksiyonlar, eklenti/tema uyumu, kod şifreleyicilerin yeni dal desteği.
- Taşınamayan eski yazılım: Statik arşiv sürümüne çevirin ya da yalnız iç ağdan erişilebilir yapın.
- Uzun vade: PHP her dala iki yıl aktif, iki yıl güvenlik desteği veriyor. Destek takvimini izleyen bir yükseltme politikası, otomatik güvenlik güncellemesi ve işçi yeniden başlatmayı da kapsayan bir yama prosedürü kurun.
Saldırıya uğradım mı? Kontrol listesi (indicators of compromise)
Resmi bir ihlal göstergesi listesi (dosya özeti, IP listesi) henüz yayımlanmadı. Aşağıdakiler davranış göstergeleridir. Bir şey bulamamanız ihlal olmadığını kanıtlamaz. İşe başlamadan önce logların kopyasını alın; hiçbir şeyi temizlemeyin.
1. Loglar
- 20 Ekim'den bu yana olağandışı POST + multipart/form-data istekleri, özellikle yükleme formu olmayan adreslere.
- Bu istekleri izleyen "Allowed memory size exhausted" hataları ve art arda HTTP 500 yanıtları.
- Yanıtlarda olağandışı uzun ya da bozuk
PHPSESSIDçerezleri (bellek sızıntısının tek belgelenmiş izi). - Açıklanamayan PHP işçi çökmeleri ("child exited on signal 11", segfault).
2. Süreçler (en güçlü sinyal)
php-fpm,php-cgi,lsphp,httpd/apache2altında başlayansh,bash,python,perl,curl,wget,ncsüreçleri. Windows'tacmd.exe,powershell.exe,certutil.exe.- Web sürecinden çalıştırılan
whoami,id,uname -a; komut satırında/dev/tcp/veyamkfifo.
3. Dosya sistemi
Son günlerde değişen PHP dosyaları
# Web kökünüzde 20 Ekim'den sonra oluşan/değişen PHP dosyaları
find /web/kok/dizini -name '*.php' -newermt '2026-10-20' -type f
# Yükleme dizinlerinde PHP dosyası olmamalı
find /web/kok/dizini -path '*upload*' -name '*.ph*'
# Kısa, karartılmış web shell imzaları
grep -rlE 'eval\(|base64_decode\(|gzinflate\(|assert\(|shell_exec\(|passthru\(' /web/kok/dizini --include='*.php'/tmpve/dev/shmaltında çalıştırılabilir dosya veya PHP dosyası.- Yeni cron işleri, yeni yönetici hesapları,
authorized_keysdeğişiklikleri. .htaccess,.user.iniveyaauto_prepend_fileeklemeleri.
4. Şüphe varsa
- Sunucuyu izole edin, web ve PHP loglarını saklayın.
- Sırları değiştirin: veritabanı şifreleri,
.enviçindeki API anahtarları, ödeme sağlayıcı anahtarları, SMTP şifreleri, uygulama gizli anahtarları, OAuth token'ları; gerekirse TLS sertifikasını yeniden alıp eskisini iptal edin. - Tüm kullanıcı oturumlarını geçersiz kılın, yönetici şifrelerini değiştirin, iki aşamalı doğrulamayı zorunlu yapın.
- Gerekirse temiz bir yedekten yeniden kurun. Kurum içinde kapasite yoksa bir olay müdahale ekibiyle çalışın.
KVKK: 72 saatlik bildirim yükümlülüğü
Saldırı sonucunda kişisel verilere yetkisiz erişildiğini öğrenirseniz, 6698 sayılı Kişisel Verilerin Korunması Kanunu'na göre veri sorumlusu olarak durumu öğrendiğiniz andan itibaren 72 saat içinde Kişisel Verileri Koruma Kurulu'na bildirmeniz gerekir. Etkilenen kişilere de makul en kısa sürede bilgi verilmelidir. Kurulun internet sitesinde veri ihlali bildirim formu bulunuyor.
Dernek, vakıf ve sendika üyeliği KVKK'da özel nitelikli kişisel veri sayılıyor. Dernekler VERBİS kaydından muaf olsa da veri güvenliği ve ihlal bildirimi yükümlülükleri devam ediyor. Üye listesi tutan bir dernek veya sendika sitesinde PHP2Shell kaynaklı bir şüphe, sıradan bir site arızası gibi ele alınmamalı.
Sahte $PHP2SHELL kripto ve sahte PoC uyarısı
Her büyük güvenlik olayında olduğu gibi dolandırıcılar da işe koyuldu:
- Sahte "$PHP2SHELL" token'ı: X'te (Twitter) açığın adını taşıyan sahte bir kripto para (memecoin) tanıtılıyor. Bu tür paylaşımlar çoğu zaman ele geçirilmiş hesaplardan yapılıyor. PHP projesinin, PHP Foundation'ın ya da açığı bulan araştırmacıların böyle bir token'ı yok. Cüzdan bağlamayın, para göndermeyin.
- Sahte saldırı kodları (PoC): GitHub ve benzeri sitelerde "PHP2Shell exploit" adlı çok sayıda depo var. Hiçbirinin çalıştığı doğrulanmadı. Bu tür depolar meraklı yöneticileri ve araştırmacıları hedefleyen zararlı yazılım taşıyabiliyor. Sunucunuzda veya kişisel bilgisayarınızda çalıştırmayın; incelemeniz gerekiyorsa yalnız izole bir test ortamında yapın.
- "Sitenizde açık bulduk" e-postaları: Olay gündemdeyken site sahiplerine ücretli "acil yama" veya "tarama" teklif eden istenmeyen e-postalar artar. Göndereni doğrulamadan link tıklamayın, sunucu erişimi vermeyin.
Site sahipleri için kısa yapılacaklar listesi
- Sitenizin PHP ile çalışıp çalışmadığını ve hangi sürümü kullandığını öğrenin (barındırma firmanıza sorun).
- Barındırma firmanızdan PHP'nin 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 veya dağıtımın yamalı paketine güncellendiğinin ve işçilerin yeniden başlatıldığının yazılı teyidini alın.
- Kendi sunucunuz varsa yukarıdaki adımlarla güncelleyin ve web tarafında doğrulayın.
- PHP 8.1 veya daha eskisini kullanıyorsanız ya yamalı pakete geçin ya da siteyi geçici olarak kapatıp yükseltmeyi planlayın.
- Güncelleme gecikiyorsa
session.upload_progress.enabled=0, yükleme kullanmıyorsanız multipart engelleme ve WAF uygulayın. - 20 Ekim sonrası logları ve yeni oluşan PHP dosyalarını kontrol edin.
- Şüphe varsa veritabanı ve API şifrelerini değiştirin, oturumları sıfırlayın.
- Kişisel veri etkilendiyse 72 saat içinde KVKK'ya bildirin.
- Sahte kripto ve sahte exploit paylaşımlarına itibar etmeyin.
Alesta WEB'in barındırdığı sistemlerde durum
Alesta WEB'in barındırdığı ve yönettiği sistemlerde PHP, yamaların yayımlandığı gün yamalı sürümlere güncellendi ve PHP işçileri yeniden başlatıldı. Geçici önlemler kullanılan tüm PHP sürümlerinde açıldı. Saldırı izi taraması (loglar, yeni dosyalar, şüpheli süreçler) temiz çıktı. Müşterilerimizin bu konuda ayrıca bir işlem yapması gerekmiyor.
Sitesi başka bir yerde barındırılan ve PHP2Shell için destek almak isteyenler admin@alestaweb.com adresinden ya da 0505 532 36 38 numarasından Alesta WEB'e ulaşabilir. İletişim sayfası üzerinden de yazabilirsiniz.
Sık sorulan sorular
Sitemde WordPress gibi bir CMS var, eklentileri güncelledim. Yeterli mi?
Hayır. Açık PHP'nin içinde. CMS, eklenti veya tema güncellemesi bu açığı kapatmaz; sunucudaki PHP'nin güncellenmesi gerekir. Araştırmacılar WordPress gibi PHP tabanlı yaygın sistemlerde ve hatta tek satırlık bir "Hello World" uygulamasında bile kimlik doğrulamasız kod çalıştırmayı gösterdi.
Paylaşımlı hosting kullanıyorum. Ne yapmalıyım?
PHP'yi siz değil barındırma firması günceller. Firmanıza yazın ve güncellemenin yapıldığını, işçilerin yeniden başlatıldığını teyit edin. Panelinizde PHP sürümü seçme imkânı varsa desteklenen bir dal (8.3 veya 8.4) seçin.
PHP-FPM kullanıyorum, risk daha mı düşük?
Apache mod_php'ye göre saldırı daha zor olabilir ama FPM'de de yükleme ilerlemesi yolu doğrulandı. Risk düşük değil; güncelleme şart.
Cloudflare arkasındayım, güvende miyim?
Cloudflare kuralları bilinen kalıpları engelliyor, ama yalnız Cloudflare'den geçen trafiği koruyor. Sunucunuzun IP adresi biliniyorsa saldırgan doğrudan bağlanabilir. Ayrıca saldırganlar yükleri değiştiriyor. WAF ek katmandır, güncellemenin yerini tutmaz.
php -v yeni sürümü gösteriyor, iş bitti mi?
Bitmeyebilir. php -v komut satırı PHP'sini gösterir. Web'e hizmet veren PHP başka bir ikili olabilir ve eski süreçler bellekte çalışmaya devam edebilir. İşçileri yeniden başlatıp web üzerinden geçici bir sürüm sayfasıyla kontrol edin, sonra o sayfayı silin.
PHP 7.4 kullanıyorum, ne olacak?
PHP projesi 7.4 için resmi sürüm çıkarmadı. Sağlayıcınızın geri taşınmış yaması varsa uygulayın; yoksa siteyi geçici olarak kapatıp desteklenen bir dala geçin. Resmi kurumların önerisi bu yönde.
Saldırıya uğradığımı nasıl anlarım?
Yukarıdaki kontrol listesindeki log, süreç ve dosya kontrollerini yapın. Bir iz bulursanız sunucuyu izole edin, sırları değiştirin ve kişisel veri söz konusuysa 72 saatlik KVKK bildirim süresini unutmayın.
Kaynaklar (References)
- PHP güvenlik bildirimi — CVE-2026-109618 (GHSA-w8hw-w9fx-j79w)
- PHP güvenlik bildirimi — CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp)
- The PHP Foundation — Today's PHP security release
- php.net — 21 Ekim 2026 sürüm duyurusu
- CISA — Critical vulnerabilities in PHP require immediate patching
- UK NCSC — Critical security issue affecting PHP
- CERT-EU — Security Advisory 2026-018
- BSI — Cybersicherheitswarnung 2026-297981-1032
- Siber Güvenlik Başkanlığı — Güvenlik bildirimi TR-26-1372
- Red Hat — CVE-2026-109618
- AlmaLinux — PHP2Shell güncellemeleri
- Plesk — CVE-2026-109618 ve CVE-2026-109619
- DirectAdmin forumu — Critical PHP updates
- Cloudflare — PHP vulnerabilities WAF protection
- Wiz Research — PHP2Shell
- Sansec — PHP2Shell
- Tenable — PHP2Shell sık sorulan sorular
- Huntress — PHP2Shell
- ma.ttias.be — Dağıtım bazında yama durumu
- The Record — Hükümet uyarıları ve kapatılan siteler
- Safeguard — Governments take websites offline over PHP2Shell
- CNBC-e — Siber Güvenlik Başkanlığı'ndan PHP alarmı
- Wikipedia — PHP2Shell
İlgili yazılar: PHP 8.6 yenilikleri · nginx güvenlik güncellemesi · Web hosting · Web yazılım hizmetleri · İletişim
Kapak fotoğrafı: Christina @ wocintechchat.com M / Unsplash

