[KRİTİK ALARM] "PHP2Shell" Depremi: CVE-2026-109618 ve CVE-2026-109619 Analizi
Kodunuz Ne Kadar Güvenli Olursa Olsun Tehlikedesiniz: PHP Çekirdeğinde Kimlik Doğrulamasız Uzaktan Kod Çalıştırma (RCE) Krizinin Tüm Detayları ve Acil Çözüm Rehberi
"21 Ekim 2026 itibarıyla siber güvenlik dünyasında kartlar yeniden dağıtılıyor. Bu kez hata yazdığınız kodda değil, doğrudan PHP motorunun kalbinde!"
Kodunuz Ne Kadar Güvenli Olursa Olsun Tehlikedesiniz: PHP Çekirdeğinde Kimlik Doğrulamasız Uzaktan Kod Çalıştırma (RCE) Krizinin Tüm Detayları ve Acil Çözüm Rehberi
"21 Ekim 2026 itibarıyla siber güvenlik dünyasında kartlar yeniden dağıtılıyor. Bu kez hata yazdığınız kodda değil, doğrudan PHP motorunun kalbinde!"
Web dünyası, son yılların en büyük altyapı krizlerinden biriyle karşı karşıya. Dün (21 Ekim 2026, TSİ 17:00) PHP geliştirici ekibi, NSA ve CERT-EU (Avrupa Birliği Siber Güvenlik Ajansı) eş zamanlı bir acil durum bülteni yayınlayarak tüm dünyayı uyardı. Kamuoyunda "PHP2Shell" olarak adlandırılan iki kritik zafiyet (CVE-2026-109618 ve CVE-2026-109619), saldırganların hiçbir kimlik doğrulamasına ihtiyaç duymadan (Unauthenticated) doğrudan sunucuda uzaktan kod çalıştırmasına (RCE) olanak tanıyor.
Üstelik bu zafiyetleri tarihin en tehlikeli açıklarından biri yapan çok kritik bir detay var: Saldırı, sizin yazdığınız PHP kodları daha çalışmaya başlamadan önce, PHP'nin HTTP isteğini ayrıştırma (Request Lifecycle) aşamasında gerçekleşiyor! Yani uygulamanızda PDO kullanmanız, tüm girdileri filtrelemeniz veya en güvenli framework'ü kullanmanız bu açığı engellemiyor.
İngiltere'de 32 devlet servisinin, Wikipedia'nın ve dev telekomünikasyon şirketlerinin acil bakım (offline) moduna geçmesine neden olan bu iki devasa zafiyeti, teknik mekanizmalarını ve sunucunuzu korumak için hemen şimdi yapmanız gerekenleri en ince ayrıntısına kadar inceliyoruz.
---
1. Tehlikenin Boyutu: Kimler Risk Altında?
Her iki zafiyet de CVSS v4.0 (Kritiklik Derecesi) üzerinden 9.2 (Kritik) puanıyla derecelendirildi. Yapay zeka destekli derin kaynak kodu analizleriyle (30 yıllık PHP çalışma zamanı kodlarında) keşfedilen bu açıklar, web isteği sunan tüm PHP kurulumlarını doğrudan etkiliyor:
- Apache (`mod_php`): EN YÜKSEK RİSK GRUBU! Tek bir özel hazırlanmış HTTP isteği, uygulama koduna hiç dokunmadan doğrudan RCE (Uzaktan Kod Çalıştırma) tetikleyebiliyor.
- PHP-FPM (Nginx / Apache / Caddy): Tamamen risk altında. Özellikle çoklu istek işleyen (worker reuse) havuzlarda `CVE-2026-109619` üzerinden doğrudan hedef alınıyor.
- LiteSpeed (LSAPI), FrankenPHP ve `php-cgi`: İstisnasız tüm web arayüzleri etkilenmektedir.
- Etkilenen Sürümler: PHP 8.5, 8.4, 8.3, 8.2 ve desteği sona ermiş olan 8.1, 8.0, 7.4, 7.x, 5.x dahil yama uygulanmamış tüm PHP sürümleri.
2. Teknik Derinlik: Bu Açıklar Nasıl Çalışıyor?
Saldırganların PoC (Kavram Kanıtı) exploitlerini hızla geliştirdiği bu iki zafiyet, PHP motorunun C dilindeki bellek yönetimi (Zend Engine Memory Manager) kusurlarını hedef alıyor.
A) CVE-2026-109618: Out-of-Memory (OOM) Bellek Bozulması ile RCE
PHP, kullanıcı tarafından yapılandırılan `memory_limit` değerini aşan herhangi bir isteği durdurmak için C seviyesinde `longjmp()` fonksiyonunu çağırarak işlemi aniden keser ve bir OOM (Bellek Yetersizliği) hatası fırlatır.
- Saldırgan, sunucuya özel olarak hazırlanmış karmaşık bir `multipart/form-data` (dosya yükleme veya form verisi) isteği gönderir.
- PHP bu isteği henüz başlangıç aşamasında ayrıştırırken (internal request data yarı başlatılmış durumdayken) bellek sınırına (`memory_limit`) çarpar ve işlem aniden kesilir.
- İşlem kesildikten sonra devreye giren "İstek Temizleme" (Request Cleanup) mekanizması, henüz tam başlatılmamış bozuk işaretçileri (pointers) geçerli birer veriymiş gibi kabul ederek bellekten silmeye (`free()`) çalışır.
- O sırada bellekte kalan ve saldırganın önceki tahsisatlarla kontrol ettiği veriler işlenerek doğrudan Uzaktan Kod Çalıştırma (RCE) elde edilir! Özellikle Apache `mod_php` kurulumlarında başlangıç (startup) başarısız olsa bile temizleme rutini çalıştığı için tek paketle sunucu ele geçirilebilir.
Bildiğiniz gibi PHP-FPM ve benzeri modern yapılarda bir işçi süreç (worker process), performans için yüzlerce HTTP isteğini arka arkaya işler.
- İlk istekte, isteğe ait dahili bir durum (internal state) oluşturulur. Ancak oluşan ölümcül bir hata (fatal error), zaman aşımı (timeout) veya kapanış (shutdown) sırasındaki bir tanı mesajı, durum temizliğini yarıda keser.
- Arka plandaki bellek alanı serbest bırakılır (`freed`), ancak küresel durum işaretçisi (dangling pointer) bir sonraki isteğe miras kalır.
- Aynı PHP-FPM worker'ına düşen ikinci istek, normal başlatma (initialization) işlemi bu veriyi sıfırlamadan hemen önce o bellek adresini kullanır (Cross-Request Use-After-Free).
- Saldırgan ardışık isteklerle belleği manipüle ederek web sunucusu yetkileriyle (`www-data`, `nginx`, `apache` vb.) kabuk (shell) komutları çalıştırabilir.
3. Kesin Çözüm: Güvenli PHP Sürümlerine Acil Geçiş
PHP ekibi 21 Ekim 2026 itibarıyla acil güvenlik yamalarını yayınladı. Sunucunuzda kullandığınız dalda aşağıdaki sürümlerden birine derhal güncelleme yapmanız gerekmektedir:
Güvenli (Yamalı) PHP Sürümleri:
- PHP 8.5 dalı: 8.5.12
- PHP 8.4 dalı: 8.4.27
- PHP 8.3 dalı: 8.3.36
- PHP 8.2 dalı: 8.2.35
AlmaLinux, Rocky Linux, CentOS veya RHEL üzerinde gönüllü olarak yürütülen popüler `rpms.remirepo.net` deposunu kullanıyorsanız; PHP ekibi bu deponun ilk günde güncelleme alamayacağını duyurdu! Eğer Remi Repo kullanıyorsanız, yama yayınlanana kadar resmi dağıtım paketlerine geçmeli, kaynaktan derlemeli veya aşağıdaki geçici koruma (Mitigation) kurallarını saniye kaybetmeden uygulamalısınız. Plesk, DirectAdmin ve cPanel kullanıcıları ise panel güncelleyicilerini hemen çalıştırmalıdır.
Linux Sunucularda Hızlı Güncelleme ve Kontrol Komutları:
📋
KOD Kodu
# AlmaLinux / RHEL / Rocky Linux
sudo dnf clean all
sudo dnf update php* -y
sudo systemctl restart php-fpm httpd nginx
# Ubuntu / Debian
sudo apt update && sudo apt --only-upgrade install "php*" -y
sudo systemctl restart php*-fpm apache2 nginx
# Versiyon ve Yama Kontrolü
php -v
4. Hemen Güncelleme Yapamayanlar İçin Acil Sıkılaştırma (Mitigation) Rehberi
Eğer eski bir yazılım/eklenti uyumluluğu nedeniyle PHP sürümünüzü hemen şu an güncelleyemiyorsanız, PHP Güvenlik Ekibi ve CERT-EU tarafından yayınlanan aşağıdaki yapılandırma kurallarını doğrudan `php.ini` veya FPM havuz (`www.conf`) dosyalarınıza uygulamak zorundasınız.
Dikkat: Bu ayarları kod içinden `ini_set()` veya `.user.ini` ile yapmak işe yaramaz! Çünkü açık, bu dosyalar okunmadan önce tetiklenmektedir.
Adım 1: CVE-2026-109618 (OOM Bozulması) İçin Koruma Ayarları
Saldırganın isteği yarıda kesmek için kullandığı `memory_limit` tetikleyicisini devre dışı bırakmalı ve POST boyutlarını daraltmalısınız:
📋
KOD Kodu
; php.ini veya FPM pool (php_admin_value olarak) içine ekleyin:
; 1. Kontrollü bellek sınırı hatasını devre dışı bırakın (Kritik!)
; Uygulamaların bunu ezmesini önlemek için FPM'de php_admin_value[memory_limit] = -1 kullanın.
memory_limit = -1
; 2. POST ve Upload sınırlarını minimuma çekin
; Dosya yükleme gerekmeyen sitelerde 8M, gerekenlerde maksimum 32M yapın.
post_max_size = 8M
upload_max_filesize = 4M
max_file_uploads = 5
max_input_vars = 1000
Adım 2: CVE-2026-109619 (Stale Global State) İçin Koruma Ayarları
Doğrulanmış saldırı vektörlerinden biri olan oturum yükleme ilerlemesini (session upload progress) ve hata izlerini kapatın:
📋
KOD Kodu
; php.ini içine ekleyin ve TÜM PHP-FPM WORKER'LARINI YENİDEN BAŞLATIN:
; 1. Doğrulanmış session saldırı yolunu kapatır (Zorunlu!)
session.upload_progress.enabled = 0
; 2. PHP 8.5 kullanıyorsanız fatal error backtrace yolunu kapatın
fatal_error_backtraces = 0
İsteklerin PHP-FPM'e ulaşmadan önce Nginx katmanında sınırlandırılması, büyük boyutlu `multipart` bellek taşma saldırılarını (CVE-2026-109618) ilk kapıda kesecektir:
📋
KOD Kodu
# nginx.conf (http veya server bloğu) içine ekleyin:
client_max_body_size 8M;
client_body_buffer_size 128k;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
Sonuç ve Değerlendirme
PHP2Shell (CVE-2026-109618 & CVE-2026-109619), bize modern siber güvenlikte çok önemli bir gerçeği tekrar hatırlattı: Yapay zeka modelleri artık 30 yıllık C tabanlı çalışma zamanı (runtime) motorlarında insan gözünün kaçırdığı çok karmaşık bellek yönetimi hatalarını bulabiliyor. Aynı teknolojiye saldırganlar da sahip ve şu an dünya genelinde otomatik tarama botları yamalanmamış PHP sunucularını tespit etmek için çalışıyor.
Lütfen yönettiğiniz tüm sunucularda, VDS/VPS'lerde ve paylaşımlı hosting ortamlarında PHP sürümlerinizi hemen kontrol edin (`8.5.12`, `8.4.27`, `8.3.36`, `8.2.35`). Güncelleme sonrası `php-fpm`, `httpd` veya `lsws` servislerinizi yeniden başlatmayı (restart) unutmayın.
Hepimize geçmiş olsun, güvenli ve kesintisiz yayınlar dilerim!