# CVE-2026-115560: wskazówka o session upload progress

> CVE-2026-115560: kiedy trzecia wskazówka PHP z 23.10.2026 dotyczy Państwa serwera, jak sprawdzić konfigurację i wyłączyć session upload progress.

Źródło: https://phpsos.de/pl/php2shell/cve-2026-115560/  
Stan: 25.10.2026  
Dostawca: PHP SOS, Pomoc awaryjna PHP i bezpieczeństwo serwerów. Natychmiastowa pomoc przez WhatsApp: https://wa.me/491736494914?text=Dzie%C5%84%20dobry%2C%20PHP%20SOS%2C%20potrzebujemy%20pomocy%20z%20naszym%20serwerem%20PHP.%20Firma%3A%20%E2%80%A6%20Strona%20internetowa%3A%20%E2%80%A6

**Krótko:** CVE-2026-115560 to wskazówka opublikowana przez php.net 23 października 2026. Zdalne wykonanie kodu jest według niej możliwe tylko przy nietypowej konfiguracji sesji. Do kolejnego regularnego wydania poprawkowego środek zaradczy brzmi: ustawić po stronie serwera `session.upload_progress.enabled=0` i zrestartować wszystkie workery.

## Czym jest CVE-2026-115560?

Dwa dni po poprawkach dla luk PHP2Shell CVE-2026-109618 i CVE-2026-109619 projekt PHP opublikował kolejną wskazówkę. CVE-2026-115560 dotyczy obsługi sesji w PHP w połączeniu z funkcją session upload progress, która zapisuje postęp trwających uploadów plików w sesji.

Według php.net możliwe jest zdalne wykonanie złośliwego kodu, ale tylko przy nietypowej konfiguracji. Pełny advisory ze wszystkimi szczegółami ma pojawić się z następnym regularnym wydaniem poprawkowym. Do tego czasu stan wiedzy jest celowo skąpy.

## Co robi session upload progress?

Session upload progress to funkcja wygody w PHP. Gdy odwiedzający wysyła większy plik, PHP w trakcie uploadu na bieżąco zapisuje w sesji dane o postępie: ile danych już dotarło i jaki plik jest właśnie przesyłany. Aplikacja może równolegle odpytywać te dane i zbudować z nich pasek postępu.

W praktyce korzysta z tego niewiele aplikacji, ponieważ nowoczesne formularze uploadu zwykle mierzą postęp bezpośrednio w przeglądarce. W PHP funkcja jest jednak domyślnie włączona. Dlatego pojawia się zarówno przy CVE-2026-115560, jak i wśród środków przejściowych przeciw PHP2Shell: co nie jest potrzebne, powinno być wyłączone.

## Kiedy serwer jest dotknięty przez CVE-2026-115560?

Według wskazówki php.net muszą wystąpić łącznie trzy warunki:

1. W konfiguracji jako `session.serialize_handler` ustawiona jest wartość `php_binary` lub `php_serialize`.
2. Aplikacja przestawia tę wartość w czasie działania przez `ini_set()` na `php`, zanim wywoła `session_start()`.
3. Session upload progress jest aktywny.

Domyślną wartością `session.serialize_handler` jest `php`. Zmiana w konfiguracji i przestawienie z powrotem w kodzie jest nietypowe, ale zdarza się w rozwiniętych rozwiązaniach własnych lub bibliotekach z własną obsługą sesji. Czy dotyczy to Państwa, można sprawdzić.

## Jak sprawdzić konfigurację

Najpierw obowiązujące wartości. CLI może czytać inny php.ini niż PHP-FPM lub mod_php; proszę więc sprawdzić także konfigurację serwera WWW lub puli FPM.

```bash
php -i | grep -E "session.serialize_handler|session.upload_progress.enabled"
grep -rn "serialize_handler\|upload_progress" /etc/php/ 2>/dev/null   # ścieżka zależy od dystrybucji
```

Następnie kod aplikacji. Poniższe wyszukiwanie jest wyłącznie odczytem i pokazuje miejsca, w których handler jest ustawiany w czasie działania:

```bash
grep -rn "session.serialize_handler" /var/www/ --include="*.php"
```

Jeśli wyszukiwanie nic nie znajdzie, a handler w konfiguracji jest ustawiony na `php`, opisana kombinacja jest mało prawdopodobna. Session upload progress należy mimo to wyłączyć, ponieważ php.net podaje to samo ustawienie również jako środek przejściowy przeciw PHP2Shell.

## Środek zaradczy: session.upload_progress.enabled=0

Proszę ustawić wartość w php.ini, w puli FPM lub w konfiguracji serwera. Według php.net wyraźnie nie przez `ini_set()` ani `.user.ini`, ponieważ tam działa za późno lub może zostać nadpisana przez aplikację.

```ini
; php.ini (dla wszystkich pul i SAPI, które czytają ten plik)
session.upload_progress.enabled = 0

; lub w puli FPM
php_admin_flag[session.upload_progress.enabled] = off
```

```apache
# Apache z mod_php, w VirtualHost lub w konfiguracji serwera
php_admin_flag session.upload_progress.enabled off
```

Następnie zrestartować wszystkie workery PHP, na przykład `systemctl restart php8.3-fpm` albo przy mod_php Apache. Nazwy pakietów i usług różnią się zależnie od dystrybucji. Bez restartu działa nadal stare ustawienie. Więcej na stronie [Restart PHP-FPM i wszystkich workerów](https://phpsos.de/pl/php2shell/php-fpm-neustart/).

> **Wskazówka:**
> Po restarcie proszę sprawdzić, czy ustawienie rzeczywiście działa: w kontekście WWW, a nie tylko w wierszu poleceń. Krótko uruchomiona, chroniona dostępem strona phpinfo pokazuje obowiązującą wartość; proszę ją potem od razu usunąć.

## Ocena obok PHP2Shell

CVE-2026-115560 jest wyraźnie węższa niż obie luki PHP2Shell, które działają w zwykłych trybach pracy bez szczególnej konfiguracji. Kto musi teraz ustalać priorytety, powinien najpierw zainstalować aktualizację PHP2Shell, a potem ustawić `session.upload_progress.enabled=0`. Oba kroki są wykonalne w jednym oknie serwisowym.

Dla zarządu i osób nietechnicznych: CVE-2026-115560 nie jest powodem do niepokoju, ale punktem na liście. Ustawienie wprowadza się szybko, na niewiele aplikacji wpływa zauważalnie i jednocześnie pokrywa jeden ze środków przejściowych przeciw PHP2Shell. Pozostałe środki przejściowe php.net znajdą Państwo na stronie [Środki natychmiastowe, gdy nie można jeszcze załatać](https://phpsos.de/pl/php2shell/sofortmassnahmen-ohne-patch/), a ogólne wskazówki o konfiguracji sesji na stronie [Zabezpieczanie sesji w PHP](https://phpsos.de/pl/ratgeber/session-sicherheit-php/).

Czego jeszcze nie wiemy: które dokładnie wersje PHP są dotknięte i które wydanie przyniesie poprawkę. Zaktualizujemy tę stronę, gdy tylko pojawi się advisory.

## Jak konkretnie pomaga PHP SOS?

W ramach [utwardzania serwera](https://phpsos.de/pl/leistungen/server-haertung/) wdrażamy środek zaradczy trwale i w sposób możliwy do sprawdzenia:

- **Odczyt konfiguracji:** obowiązujące wartości sesji dla każdego SAPI, puli i hosta wirtualnego.
- **Przeszukanie kodu:** miejsca, w których handler lub opcje sesji są zmieniane w czasie działania.
- **Wyłączenie we właściwym miejscu:** w php.ini, puli lub konfiguracji serwera, bez możliwości nadpisania przez aplikację, z następującym restartem.
- **Śledzenie:** Gdy pojawi się wydanie poprawkowe, instalujemy je i dokumentujemy stan.


## Częste pytania

**Czy CVE-2026-115560 jest częścią PHP2Shell?**  
Wskazówka pojawiła się dwa dni po poprawkach PHP2Shell i również dotyczy samego PHP. Jest jednak osobną luką z własnym numerem CVE i działa tylko przy określonej, nietypowej konfiguracji. Aktualizacje PHP2Shell z 21 października według dotychczasowego stanu jej nie naprawiają.

**Czy jest już aktualizacja przeciw CVE-2026-115560?**  
Według stanu z 25.10.2026 nie. php.net zapowiada, że pełny advisory pojawi się z następnym regularnym wydaniem poprawkowym. Do tego czasu zalecanym środkiem jest session.upload_progress.enabled=0.

**Co przestanie działać, jeśli wyłączę session upload progress?**  
Funkcja zgłasza aplikacji postęp trwających uploadów plików. Wskaźnik postępu stracą tylko aplikacje, które realizują taki pasek postępu przez tę funkcję PHP. Sam upload działa dalej.

## Źródła

- [php.net: komunikaty o bezpieczeństwie](https://www.php.net/)
- [PHP 8 ChangeLog](https://www.php.net/ChangeLog-8.php)
- [OWASP Cheat Sheets](https://cheatsheetseries.owasp.org/)
