Yazılım ve Yapay Zekâ · security · vulnerability
PHP2Shell: iki açık, tek çare
Web'de PHP çalıştıran hemen herkes, şu sıralar sunucusunu başkasına kaptırmaktan tek bir istek uzakta. Bu ayın en kötü haberi de bu. O isteği gönderecek kişinin şifre bilmesine de gerek yok. Abartmıyorum. PHP projesi 21 Ekim 2026'da 8.5.12, 8.4.27, 8.3.36 ve 8.2.35 sürümlerini acil güvenlik yaması olarak yayınladı. Bu sürümler CVE-2026-109618 ve CVE-2026-109619 numaralı iki açığı kapatıyor. İkisinin de CVSS v4.0 puanı 9.2, ikisi de "kritik" sınıfında ve ikisi de kimlik doğrulaması olmadan uzaktan kod çalıştırmaya izin veriyor. CISA bu ikiliye "php2shell" adını verdi.
Önce dayanaklarımı sayayım: aşağıdaki her bilgi PHP'nin kendi duyurusundan, GitHub'daki güvenlik bildirimlerinden, CISA'nın uyarısından ve güvenlik basınının aktardıklarından geliyor. Hiçbir şeyi kendim denemedim. Açıkların içyapısını da burada anlatmayacağım, çünkü bu yazının derdi saldırana yol göstermek değil, sizin sunucunuzun kapısını kapatmak. Merak eden PHP'nin bildirimlerine baksın, gerisini bilen bilir.
Kim etkileniyor?
Kısa yanıt: hemen herkes. CISA'ya göre web isteklerine yanıt veren her PHP kurulumu bu işin içinde. Apache mod_php, PHP-FPM, php-cgi, FrankenPHP, LiteSpeed... Listede kendinizi bulamadıysanız muhtemelen yeterince dikkatli okumamışsınızdır.
Ama hepsi aynı derecede tehlikede değil. PHP en büyük riski mod_php'de görüyor. Gerekçesi oldukça ürkütücü: gösterilmiş bir saldırı, kimliği doğrulanmamış bir istekle, sizin uygulamanızın tek satırı bile çalışmadan önce tetikleniyor. Yani WordPress'inizi, Laravel'inizi ne kadar güncel tutarsanız tutun fark etmiyor, saldırı o katmana varmadan işini bitiriyor. Tam uzaktan kod çalıştırma, varsayılan sınırlarla ve prefork modunda çalışan bir mod_php'ye karşı HTTP üzerinden doğrulanmış durumda.
PHP-FPM kullananlar biraz daha şanslı, ama sadece biraz. Bildirime göre FPM'e karşı eksiksiz bir saldırı henüz gösterilmemiş. "Henüz" sözcüğünün altını kalın kalemle çizin. FrankenPHP ve LSAPI için de kaynak kodu incelemesine dayanarak "muhtemelen etkileniyor" deniyor, ama bu doğrulanmış değil. Bunu "beni ilgilendirmez" diye okumayın, "kimse daha bakmadı" diye okuyun.
Ne zaman ne oldu?
Takvim gerçekten de sıkışık. PHP 20 Ekim'de bir ön duyuru yayınlayıp ertesi gün 14:00 UTC'de yama çıkacağını haber verdi. Dağıtım sağlayıcıları yamaları önceden aldı, yani Debian'ınız, Ubuntu'nuz, ne kullanıyorsanız onun paketleri büyük olasılıkla hazırdır. Geliştirme aşamasındaki PHP 8.6.0 RC4 de aynı gün düzeltmeleri içerecek biçimde çıktı.
CISA uyarısını 21 Ekim'de yayınladı, 23 Ekim'de bir SIGMA tespit kuralı ekledi, 26 Ekim'de bir kez daha güncelledi. Aynı gün iki açığı da KEV (Known Exploited Vulnerabilities - Bilinen ve istismar edilen açıklar) kataloğuna aldı. Bu katalog, ABD federal sivil kurumlarına "bunu belli bir tarihe kadar kapatmak zorundasınız" demenin resmî yolu. Birçok kaynak o tarihi 29 Ekim 2026 olarak veriyor, yani yarın. NSA'den İngiltere'nin NCSC'sine, Avustralya'dan Hollanda'ya, Yeni Zelanda'dan Kanada'ya kadar bir sürü kurum da kendi uyarısını çıkardı. Bu kadar çok ülkenin aynı gün aynı şeyi söylemesi pek sık görülen bir durum değil.
Açıkları kimin bulduğuna gelince: bildirim lcfr-hax, sagitzadik-wiz, tomash-areion ve amyb-oai adlı kişilere teşekkür ediyor. BleepingComputer bunları Calif, OpenAI ve Wiz'deki araştırmacılar olarak tanıtıyor. Kimin önce bulduğu, ambargoyu kimin deldiği konusunda birbirini tutmayan haberler de dolaşıyor. Birincil kaynak bunların hiçbirini doğrulamıyor, ben de doğrulanmamış dedikoduyu size haber diye satmayacağım.
Saldırı başladı mı?
Başladı. Ama bu konuda da paniği ölçülü tutmak gerekiyor. BleepingComputer'ın 27 Ekim tarihli haberine göre Perplexity'de tespit ekibinin başındaki Adel Karimi, 24-25 Ekim hafta sonunda bir tuzak sunucuda (honeypot) başarılı bir uzaktan kod çalıştırma gördü. O sunucuda Apache mod_php ve PHP 8.4.26 çalışıyordu, yani yamadan hemen önceki sürüm. Daha önceki denemeler başarısız olarak kayda geçmiş. Cloudflare, Amazon, watchTowr, Hadrian, Previdian ve Patchstack bu tür denemeler bildirdi. Amazon'un MadPot tuzaklarındaki kayıtlardan biri 17 Ekim tarihli, yani açıklar kamuya duyurulmadan dört gün önce. Bunu da bir kenara yazın.
Öte yandan Bitdefender 22 Ekim itibarıyla kendi verilerinde hiç deneme görmediğini söyledi. Hollandalı bir kurum da sonradan büyük çaplı bir istismarın ilk sanıldığından daha az olası göründüğünü açıkladı. Bu iki bilgiyi "o zaman acelesi yok" diye okumayın. Bir sunucu bir kez ele geçirildiğinde istatistiğin iyimser olmasının size hiçbir faydası olmaz.
Ölçeğe dair rakamlar da var, ama ikinci el. BleepingComputer, VirusTotal tahminlerine dayanarak internete açık 5,1 milyonun üzerinde PHP sunucusu bulunduğunu yazıyor. Bazı haberlere göre aralarında cyber.gov.au'nun da olduğu birtakım devlet siteleri ve ABD'de bir kredi kooperatifi yama yapmak için bir süre yayından çekildi. Bunları doğrulanmış bilgi değil, tahmin ve haber olarak okuyun.
Ne yapmalısınız?
Bu bölüm kısa, çünkü PHP'nin söylediği de kısa: güncelleyin. PHP'ye göre tam çözüm bu ve yalnızca bu. Bildirimde riski azaltan birtakım geçici ayarlar da sayılıyor, ama PHP bunların sistemi güvenli hâle getirmediğini açıkça yazıyor. Bunları yamayı yapana kadar araya sokulacak birer yara bandı olarak düşünün, ameliyatın yerine geçmez. Ayrıntıları merak ediyorsanız PHP'nin kendi bildirimine bakın, ama oraya vakit ayıracağınıza o vakitle sunucuyu güncelleyin.
Kurulumunuzda neyin çalıştığını bilmiyorsanız (paylaşımlı barındırmada bu oldukça olağan bir durum) barındırma şirketinize sorun. Hangi PHP sürümünü, hangi modda kullandığınızı öğrenin. Yanıt mod_php ise sıranın en başındasınız.
Eski sürüm kullananlar için kötü haber: PHP 8.1 ve daha eskileri projeden güncelleme almıyor. 7.4, 8.0 ve 8.1 için en küçük düzeltmeleri içeren bazı geri taşımalar var, ama bunlara bel bağlamak eski bir arabanın frenini selobantla tamir etmeye benziyor. CISA'nın tavsiyesi bu konuda tavizsiz: hemen yama yapamıyorsanız ya da 8.1 veya daha eski bir sürüm kullanıyorsanız sistemi çevrim dışına alın. Evet, kapatın. Siteniz bir gün kapalı kalırsa bir gün kaybedersiniz, ele geçirilirse çok daha fazlasını.
8.2 kullananlar da rahatlamasın. Bu sürüm bu kez yama aldı, ama 31 Aralık 2026'da ömrünü dolduruyor. İki ay sonra benzer bir haber çıkarsa aynı şansı bulamayacaksınız. Madem şimdi zaten elinizi sunucuya sürüyorsunuz, bir üst sürüme geçmenin de tam zamanı.
Bir de MUTLAKA bilmeniz gereken bir ayrıntı var: aynı günlerde iki ayrı PHP açığı daha duyuruldu. CVE-2026-115560 oturum yükleme ilerlemesiyle ilgili bir uç durum (23 Ekim'de bilgilendirme amaçlı bir bildirim çıktı), CVE-2026-111497 ise Brotli ile ilgili ve 26 Ekim'deki Windows yeniden derlemelerinde (8.x.y-1) düzeltildi. Bunlar PHP2Shell'in parçası değil. Haber başlıklarında hepsi birbirine karışıyor, siz karıştırmayın. Windows'ta PHP çalıştırıyorsanız o "-1" ekli derlemeye de bakın.
Ve her güncellemeden önce olduğu gibi bunda da yedeğinizi alın. Acele işe şeytan karışır derler, acele güncellemeye de bazen bozuk bir yapılandırma dosyası karışır.
Benim hükmüm
Bana sorarsanız bu yılın en ciddi web güvenliği olaylarından biri bu. Bunu söylemem için bir felaket senaryosu kurmam gerekmiyor, PHP'nin kendi bildirimi yeterli: kimlik doğrulaması istemeyen, uygulamadan önce tetiklenen, varsayılan ayarlarda doğrulanmış bir saldırı. Buna bir de KEV kaydını ve gerçek bir sunucuda görülen başarılı istismarı ekleyin. PHP ekibine de hakkını vermek lazım: ön duyuru yaptı, dağıtımlara yamayı önceden verdi, desteklenen dört sürümün dördünü de aynı gün yamaladı ve hangi kurulumun ne kadar risk altında olduğunu açık açık yazdı. Bu, panik yaratmadan doğru bilgiyi vermenin oldukça iyi bir örneği.
Yapılacak iş belli ve tek: sunucunuza bağlanın, PHP sürümünüze bakın, güncelleyin. Bu yazıyı okumak beş dakikanızı aldı, güncelleme büyük olasılıkla bundan da kısa sürer. Hâlâ okuyorsanız, durmayın, gidin güncelleyin!
Hoşçakalın.
Kaynaklar
- Birincil kaynak php.net