• 22-10-2026, 10:01:53
    #1
    Merhaba arkadaşlar,

    Son günlerde PHP ekosistemini ciddi şekilde etkileyen **PHP2Shell** olarak adlandırılan iki kritik güvenlik açığı konuşuluyor: **CVE-2026-109618** ve **CVE-2026-109619**. Bu açıklar WordPress, Laravel, Drupal gibi uygulamaların kendisinde değil, doğrudan **PHP interpreter’ında** bulunuyor. Bu nedenle sadece WordPress çekirdeğini, tema ve eklentileri güncellemek tek başına yeterli değil; sunucudaki **PHP sürümünün de güncellenmesi** gerekiyor.

    PHP güvenlik ekibi, bu iki açık için acil yamalar yayınladı. İki açık da uzaktan kod çalıştırma (RCE) riski taşıyor ve CVSS v4.0 ölçeğinde **9.2 Critical** olarak değerlendiriliyor.[1][2]

    ## Açıklar Ne Yapıyor?

    **CVE-2026-109618**, bellek sınırı aşımı sonrasında eksik başlatılmış bellek bölgesinin kullanılmasına dayanıyor. Saldırgan, özel hazırlanmış bir HTTP isteğiyle PHP işleminin bellek yönetimini bozabiliyor ve sistemde komut çalıştırabiliyor.

    **CVE-2026-109619** ise PHP worker process’inde kalan geçersiz ya da eski global state ve use-after-free durumu üzerinden tetiklenebiliyor. Yani önceki isteklerden arta kalan durum, sonraki istekte kötüye kullanılabiliyor.

    En kritik nokta şu: Saldırı, uygulamanın kendi kodu çalışmaya başlamadan önce tetiklenebiliyor. Bu yüzden uygulama tarafındaki login kontrolü, WAF kuralı ya da CMS güvenlik eklentisi tek başına tam koruma sağlamayabiliyor.[1][3]

    ## Kimler Etkileniyor?

    Aşağıdaki kurulumlar risk altında:

    - Apache `mod_php` ile çalışan sunucular
    - PHP-FPM kullanan Nginx/Apache kurulumları
    - IIS üzerinde FastCGI ile çalışan PHP
    - `php-cgi` tabanlı hosting yapılandırmaları
    - FrankenPHP ve LiteSpeed gibi PHP çalıştıran web sunucuları
    - Docker, Kubernetes veya benzeri container ortamlarında çalışan PHP imajları

    Yani yalnızca VPS/dedicated sunucu sahipleri değil; paylaşımlı hosting kullanıyorsanız da hosting sağlayıcınızın PHP sürümünü kontrol etmeniz gerekiyor.[2]

    ## Etkilenen ve Yamalı PHP Sürümleri

    | PHP Dalı | Yamalı Sürüm |
    |---|---|
    | PHP 8.5 | 8.5.12 |
    | PHP 8.4 | 8.4.27 |
    | PHP 8.3 | 8.3.36 |
    | PHP 8.2 | 8.2.35 |
    | PHP 8.1 ve altı | Resmî upstream yama yok; dağıtım/vendor backport’u kontrol edilmeli |

    PHP 8.1 ve daha eski sürümleri kullananlar için resmî PHP projesinden doğrudan yama yayınlanmadı. Bu durumda dağıtımın LTS güvenlik güncellemesi olup olmadığı kontrol edilmeli; yoksa PHP sürümü yükseltilmeli ya da servis internete açıkken riskli kabul edilmelidir.[2][3]

    ## Sunucunuzda PHP Sürümünü Nasıl Kontrol Edersiniz?

    SSH erişiminiz varsa:

    ```bash
    php -v
    ```

    Windows/IIS ortamında PowerShell ile:

    ```powershell
    & 'Chpphp.exe' -v
    ```

    Paylaşımlı hosting kullanıyorsanız cPanel, Plesk veya hosting panelinizdeki **PHP Selector / PHP Version** bölümünden aktif PHP sürümünü görebilirsiniz.

    Ayrıca web root’unuza geçici olarak şu içeriğe sahip bir `phpinfo.php` dosyası oluşturup tarayıcıdan kontrol edebilirsiniz:

    ```php
    <?php
    phpinfo();
    ```

    **Önemli* Kontrol bittikten sonra bu dosyayı mutlaka silin. `phpinfo()` çıktısı sunucu yapılandırmanız hakkında hassas bilgi içerir.

    ## Acil Olarak Yapılması Gerekenler

    ### 1. PHP’yi Yamalı Sürüme Güncelleyin

    Kalıcı çözüm, PHP’yi yukarıdaki tablodaki yamalı sürümlerden birine çıkarmaktır:

    ```text
    PHP 8.2.35
    PHP 8.3.36
    PHP 8.4.27
    PHP 8.5.12
    ```

    Ubuntu/Debian üzerinde:

    ```bash
    sudo apt update && sudo apt upgrade
    ```

    CentOS/RHEL/AlmaLinux/Rocky Linux üzerinde:

    ```bash
    sudo dnf update php*
    ```

    Docker kullanıyorsanız sadece container’ı yeniden başlatmak yetmez. Base image’ı güncelleyip uygulamayı yeniden build etmeniz gerekir:

    ```bash
    docker compose build --no-cache
    docker compose up -d
    ```

    ### 2. PHP-FPM / Apache / IIS Worker’larını Yeniden Başlatın

    PHP güncellemesi sonrası eski worker süreçleri bellekte kalabilir. Bu yüzden servisi yeniden başlatın.

    Nginx + PHP-FPM:

    ```bash
    sudo systemctl restart php8.3-fpm
    sudo systemctl restart nginx
    ```

    Apache:

    ```bash
    sudo systemctl restart apache2
    ```

    IIS üzerinde PowerShell:

    ```powershell
    Import-Module WebAdministration

    Get-ChildItem IIS:AppPools | ForEach-Object {
    Restart-WebAppPool -Name $_.Name
    }
    ```

    ### 3. Geçici Önlem: `session.upload_progress` Kapatın

    PHP yamasını hemen uygulayamıyorsanız, `php.ini` içinde şu ayarı kapatın:

    ```ini
    session.upload_progress.enabled = 0
    ```

    Ardından PHP-FPM, Apache veya IIS uygulama havuzunu yeniden başlatın.

    ### 4. Bellek ve Yükleme Ayarlarını Gözden Geçirin

    CVE-2026-109618 için bilinen saldırı senaryosunda şu koşul önemli:

    ```text
    memory_limit < 4 x post_max_size
    ```

    Örneğin `post_max_size=64M` iken `memory_limit=128M` ise bu koşul sağlanmış olur. Geçici olarak `post_max_size` değerini düşürmek ve `memory_limit` yapılandırmasını gözden geçirmek faydalı olabilir. Ancak bunlar kalıcı çözüm değildir; PHP güncellemesi şarttır.[1][2]

    ## Saldırı Belirtileri Neler Olabilir?

    Loglarınızda şu tür işaretler varsa dikkatli olun:

    - PHP worker süreçlerinin `cmd.exe`, `powershell.exe`, `curl`, `wget`, `certutil` gibi süreçleri başlatması
    - `uploads`, `tmp`, `cache` veya web root içinde açıklanamayan yeni `.php` dosyaları
    - Aşağıdaki gibi, uygulama kodu çalışmadan oluşan bellek hataları:

    ```text
    PHP Fatal error: Allowed memory size of ... bytes exhausted ... in Unknown on line 0
    ```

    `in Unknown on line 0` ifadesi, hatanın uygulama dosyanızda değil, PHP’nin istek işleme sürecinin erken aşamasında oluştuğuna işaret edebilir.[1][3]

    ## WordPress / Laravel Kullanıcıları İçin Not

    WordPress, Laravel, Symfony, Drupal gibi uygulamaların güncel olması elbette önemli. Ancak bu açık PHP çekirdeğinde olduğu için:

    - WordPress çekirdeği güncel olsa bile risk devam edebilir.
    - Güvenlik eklentisi kurulu olsa bile tam koruma garanti edilmez.
    - Hosting panelinden PHP sürümü değiştirilebiliyorsa, yamalı sürüme geçmek en hızlı çözümdür.
    - Hosting sağlayıcınız güncelleme yapmıyorsa destek talebi açın ve PHP sürümünün yamalı olup olmadığını sorun.

    ## Özet Kontrol Listesi

    - [ ] Aktif PHP sürümünü kontrol et
    - [ ] PHP 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 sürümlerinden birine geç
    - [ ] PHP-FPM, Apache veya IIS uygulama havuzlarını yeniden başlat
    - [ ] `session.upload_progress.enabled = 0` ayarını değerlendir
    - [ ] `memory_limit` ve `post_max_size` yapılandırmasını kontrol et
    - [ ] Web root, uploads ve tmp klasörlerinde şüpheli `.php` dosyası var mı bak
    - [ ] Web sunucusu ve PHP error loglarını incele
    - [ ] Container kullanıyorsanız base image’ı güncelle ve yeniden build et
    - [ ] Paylaşımlı hosting kullanıyorsan hosting sağlayıcına PHP yamasını sor

    ## Kaynaklar

    - BleepingComputer — PHP ships emergency patches for critical PHP2Shell flaws: [https://www.bleepingcomputer.com/new...p2shell-flaws/)[2]
    - CrowdStrike — PHP RCE zero-day koruması: [https://www.crowdstrike.com/en-us/bl...rce-zero-days/)[1]
    - Kaspersky — PHP2Shell: How to Protect Your Server: [https://www.kaspersky.com/blog/cve-2...ilities/56583/)
    - Datadog Security Labs — PHP2Shell detection, analysis and remediation: [https://securitylabs.datadoghq.com/a...ilities-in-php)[3]
    - Check Point — PHP2Shell: What We Know About the Leaked Critical PHP Vulnerabilities: [https://blog.checkpoint.com/security...ve-2026-109619)[4]

    ***

    **Not* Bu başlık yalnızca sunucu güvenliği, yama ve tespit amaçlı hazırlanmıştır. Sahibi olmadığınız ya da yazılı izin almadığınız sistemlerde exploit/PoC denemesi yapmayın.

    Atıflar:
    [1] CrowdStrike Protects Customers from Threats Delivered via ... https://www.crowdstrike.com/en-us/bl...rce-zero-days/
    [2] www.bleepingcomputer.com › news › securityPHP ships emergency patches for critical PHP2Shell flaws https://www.bleepingcomputer.com/new...p2shell-flaws/
    [3] PHP2Shell - Critical vulnerabilities in PHP (CVE-2026-109618, CVE-2026-109619): detection, analysis, and remediation https://securitylabs.datadoghq.com/a...ilities-in-php
    [4] blog.checkpoint.com · security · php2shell-what-wePatch Now: php2shell: What We Know About the Leaked Critical ... https://blog.checkpoint.com/security...ve-2026-109619
  • 23-10-2026, 13:12:47
    #2
    Paylaşımlı hosting kullananlar için pratik bir not: sunucudaki PHP’yi siz değil sağlayıcınız güncelliyor, o yüzden destek talebiyle hangi sürüme geçtiklerini ve servisleri yeniden başlatıp başlatmadıklarını sormak yeterli; kendi sitenizde yapabileceğiniz WordPress ve eklenti güncellemeleri ise bu açığı kapatmıyor.
    VPS’te kendi sunucusunu yönetenlerin (ispmanager ya da benzeri bir panel olsun) PHP sürümünü alan adı bazında tek tek kontrol etmesi gerekiyor.
  • 23-10-2026, 13:19:20
    #3
    Hocam güzel bir kontrol listesi olmuş ama özellikle geçici önlemleri uygulamadan önce resmî duyurulardan doğrulamak lazım; en önemlisi PHP’yi yamalı sürüme çekip sonrasında sunucuda izinsiz dosya ve arka kapı kontrolü yapmak.