Azure • Haberler • Microsoft • Security

PHP2Shell açıkları: PHP güncellemesi ve Azure WAF

php2shell-cover

PHP2Shell (CVE-2026-109618, CVE-2026-109619) RCE açıkları için yamalı PHP sürümleri ve Azure Front Door, Application Gateway WAF geçici önlemleri.

PHP’de iki kritik uzaktan kod çalıştırma (RCE) açığı duyuruldu: CVE-2026-109618 ve CVE-2026-109619. Kamuoyunda “PHP2Shell” adıyla anılan açıklar için PHP ekibi yamalı sürümleri yayımladı. Microsoft da Azure Web Application Firewall (WAF) tarafında geçici koruma kuralları hazırladı. Microsoft’un mesajı net: Açığı tamamen kapatmanın tek yolu PHP’yi güncellemek. WAF kuralları yalnızca güncelleme yapılana kadar ek bir katman.

Microsoft, bu süreçte PHP Foundation, Wiz, güvenlik araştırmacıları ve diğer sektör ortaklarıyla koordineli çalıştığını belirtiyor.

Açıklar ne yapıyor?

  • CVE-2026-109618: Bellek yetersizliği (OOM) sırasında oluşan bozulma üzerinden RCE
  • CVE-2026-109619: Eskimiş global durum (stale global state) üzerinden RCE

İki açık da ağ üzerinden, yetki ya da kullanıcı etkileşimi gerektirmeden istismar edilebiliyor. Gizlilik, bütünlük ve erişilebilirlik üzerindeki olası etkisi yüksek.

Sorun, bir istek beklenmedik şekilde sonlandığında (örneğin bellek tükendiğinde ya da ölümcül bir hata oluştuğunda) PHP’nin belleği nasıl yönettiğiyle ilgili. Belirli koşullarda hatalı bellek yönetimi, saldırganın sunucuda kod çalıştırmasına imkân verebiliyor.

Yamalı sürümler: 8.5.12, 8.4.27, 8.3.36 ve 8.2.35. Sürüm bazındaki ayrıntılar için PHP’nin resmi duyurusuna bakılabilir.

Önerilen adım: PHP’yi güncelleyin

  • Sanal makineler, container’lar, base image’lar ve platform runtime’ları dahil tüm PHP kurulumlarını yamalı sürüme yükseltin. İnternete açık iş yüklerinden başlayın.
  • Kendi PHP runtime’ını barındıran container image’larını yeniden derleyip dağıtın. Host’u güncellemek, image içindeki PHP’yi güncellemez.
  • Kullandığınız PHP dalı artık güvenlik yaması almıyorsa desteklenen bir dala geçin.
  • Aşağıdaki Azure WAF önlemlerini geçici ve tamamlayıcı bir tedbir olarak görün. Bu kurallar belirli bir tekniği hedefliyor, açığın kendisini kapatmıyor.

Azure WAF ile geçici koruma

PHP’yi hemen güncelleyemiyorsanız, servise göre şu önlemler uygulanabilir:

  • Azure Front Door WAF: İstek tarafı için özel kurallar (custom rules), yanıt tarafı için yönetilen kural (managed rule).
  • Application Gateway WAF: İstek tarafı için özel kurallar, yanıt tarafı için rewrite kuralı.
  • Application Gateway for Containers WAF: İstek tarafı için özel kurallar.

Özel kurallarla koruma

Özel kurallar, bu açıkların istismarında kullanılan bazı istek kalıplarına maruz kalmayı azaltmayı hedefliyor. Uygulamanızın trafiğine bağlı olarak yanlış pozitif üretebilir ve meşru istekleri etkileyebilir. Kuralların ayrıntıları Microsoft’un ayrı yazısında yer alıyor: Azure WAF custom rules for PHP2Shell mitigation.

Microsoft’a göre bazı istismar girişimlerini yalnızca istek tarafındaki sinyallerle güvenilir şekilde ayırt etmek mümkün değil. Sunucunun yanıtındaki sinyaller, saldırının gerçekleştiğine dair ek kanıt sağlıyor ve daha az yanlış pozitifle daha hedefli bir önlem almayı mümkün kılıyor. Azure WAF, oturumdaki bilinen kötü amaçlı kalıpları tespit edip olası zararlı öğeleri yanıt istemciye ulaşmadan kaldırıyor.

Azure Front Door WAF: yönetilen kural

Azure Front Door WAF için yanıt tarafındaki saldırı vektörünü ele alan yönetilen kural dağıtılıyor. Dağıtımın 28 Ekim’de tamamlanması bekleniyor. Kural ayrıntıları şöyle:

  • Kural grubu: MS-ThreatIntel-Response-CVEs
  • Kural ID: 99006001
  • Varsayılan durum: Kapalı. Kuralı müşterinin etkinleştirmesi gerekiyor.
  • Desteklenen kural setleri: DRS 2.0, 2.1 ve 2.2

Bu kural diğer WAF kurallarından farklı çalışıyor: Trafiği engellemiyor ya da doğrulamaya (challenge) yönlendirmiyor. Oturumda istismara dair güçlü sinyal bulduğunda yanıttaki olası zararlı öğeleri kaldırıyor, yanıtın geri kalanına dokunmuyor. Önlemin devreye girmesi için kural aksiyonunun “Block on anomaly” olarak ayarlanması gerekiyor. Yanıt tarafındaki bu önlem WAF loglarında kayıt ya da hit sayısı üretmiyor, bunu izleme planınızda hesaba katın.

Application Gateway WAF: rewrite kuralı

Application Gateway için yönetilen kural daha sonra gelecek. O zamana kadar v2 SKU’larda bulunan HTTP header rewrite özelliğiyle hemen bir geçici önlem uygulanabilir:

1. Routing kuralınızla ilişkili bir rewrite set içinde yeni bir rewrite kuralı oluşturun.

2. Set-Cookie yanıt header’ını aşağıdaki regular expression ile değerlendiren bir koşul ekleyin:

^PHPSESSID=(?:[a-zA-Z0-9-]|%2[Cc])*(?:[^a-zA-Z0-9;%-]|%(?!2[Cc]))+[a-zA-Z0-9-]*[^;]+;
Application Gateway rewrite koşulu: Set-Cookie yanıt header'ı için regex eşleşmesi
Application Gateway rewrite koşulu: Set-Cookie yanıt header’ı için regex eşleşmesi

3. Aksiyon olarak eşleşen Set-Cookie header’ını silmeyi seçin. İsterseniz header’a kendi belirlediğiniz bir değer de atayabilirsiniz. Ancak değer atamak, Path=/; gibi öznitelikler dahil header’ın tamamının üzerine yazar.

Rewrite aksiyonu: eşleşen Set-Cookie header'ının silinmesi
Rewrite aksiyonu: eşleşen Set-Cookie header’ının silinmesi

Dikkat edilmesi gerekenler:

  • Kural yalnızca kalıpla eşleşen Set-Cookie header’ını etkiler. Aynı yanıttaki diğer Set-Cookie header’ları değişmez.
  • Kuralı geniş çapta uygulamadan önce üretim dışı bir gateway’de test edin.

Rewrite özelliğinin ayrıntıları için: Rewrite HTTP headers and URL with Azure Application Gateway.

Kaynak yazının altındaki yorumlarda bazı kullanıcılar, kuralı uyguladıktan sonra boş yanıtlar ya da tüm isteklerde 502 hataları aldığını bildirdi. Microsoft da 22 Ekim’de regex ifadesini güncelledi. Kuralı uygulamadan önce kaynaktaki güncel ifadeyi kontrol edip test ortamında denemek bu yüzden önemli.

Application Gateway for Containers (AGC)

AGC için yönetilen kural da daha sonra gelecek. Bu arada özel kurallar uygulanabilir. AGC, HTTP yanıtlarında regex tabanlı rewrite kurallarını desteklemediği için yanıt tarafında bir geçici önlem şimdilik yok.

Özet tablo

ServisMevcut korumaÖnerilen aksiyon
Azure Front Door WAFÖzel kurallar; 99006001 numaralı yönetilen kural dağıtılıyor (28 Ekim 2026’ya kadar tamamlanması bekleniyor), trafiği engellemeden yüksek güvenilirlikli sinyallerle korumaPHP’yi yamalı sürüme yükseltin. Hemen yapamıyorsanız geçici olarak özel kuralları uygulayın.
Application Gateway WAFÖzel kurallar ve header rewrite önlemi hemen kullanılabilir; yönetilen kural daha sonra gelecekPHP’yi yükseltin. Yapamıyorsanız geçici olarak özel kuralları ve rewrite kuralını uygulayın.
Application Gateway for ContainersÖzel kurallar; yönetilen kural daha sonra gelecekPHP’yi yükseltin. Yapamıyorsanız özel kuralları uygulayın.

Sonuç

Kalıcı çözüm, PHP güvenlik duyurusunu izleyip yamalı sürüme geçmek. Azure WAF önlemleri güncelleme süresince maruz kalmayı azaltabilir ama yerini tutmaz. WordPress gibi PHP tabanlı uygulamaları Azure’da ya da başka bir ortamda çalıştıranların, özellikle internete açık sunucularda ve kendi PHP runtime’ını taşıyan container image’larında sürümü hemen kontrol etmesi gerekiyor.

Kaynak yazı 21 Ekim’de özel kurallarla ilgili ek bilgilerle, 22 Ekim’de de rewrite regex ifadesiyle güncellendi.


Kendi ortamınızda php -v çıktısını kontrol etmek ilk adım. Sürümünüz 8.5.12, 8.4.27, 8.3.36 veya 8.2.35’in altındaysa güncellemeyi öne alın.

Kaynak: https://techcommunity.microsoft.com/blog/AzureNetworkSecurityBlog/addressing-php2shell-cve-2026-109618-and-cve-2026-109619-upgrade-guidance-and-az/4566623

Yazar Hakkında

Kerem Şuğle

Solution Architect, VMware vExpert ve Microsoft sertifikalı altyapı uzmanı. VMware vSphere/vSAN/VCF, Azure, AWS, Google Cloud, enterprise sanallaştırma ve yapay zeka konularında 15+ yıl deneyim. AI/cloud dönüşümü, sovereign cloud, enterprise güvenlik ve modern altyapı mimarisi alanlarında yazıyor.

Leave a Comment