Pe scurt: CVE-2026-109618 este una dintre cele două vulnerabilități din spatele PHP2Shell. O stare Out-of-Memory poate întrerupe PHP în timp ce datele cererii sunt inițializate doar parțial; la curățare, date invalide pot fi apoi considerate valide. Asta permite execuția de cod fără autentificare. Eroarea este remediată în PHP 8.5.12, 8.4.27, 8.3.36 și 8.2.35.
Ce este CVE-2026-109618?
CVE-2026-109618 (identificator GitHub GHSA-w8hw-w9fx-j79w) este o vulnerabilitate de eroare de memorie în nucleul PHP. Este evaluată cu CVSS v4.0 9.2. Împreună cu CVE-2026-109619 formează ceea ce în presă este numit PHP2Shell.
Efectul este o așa-numită unauthenticated Remote Code Execution: un atacator poate executa cod pe serverul web de la distanță și fără cont de utilizator. Astfel vulnerabilitatea face parte din cea mai periculoasă clasă de slăbiciuni pe care le poate avea un server web.
Cum apare vulnerabilitatea, în principiu
Când PHP procesează o cerere web, creează intern structuri de date pentru acea cerere, de exemplu pentru datele de formular transmise. Dacă PHP ajunge la limita sa de memorie, se oprește cu o stare Out-of-Memory. Potrivit php.net, acest lucru se poate întâmpla în timp ce datele cererii sunt inițializate doar parțial.
La sfârșitul fiecărei cereri, PHP face curățenie și eliberează memoria. Exact acolo se află eroarea: curățarea poate trata date invalide, create doar pe jumătate, ca valide. Din acest comportament greșit se poate deriva, în anumite condiții, execuția de cod.
De ce este o asemenea eroare atât de gravă? O eroare de memorie în limbajul de programare afectează toate aplicațiile care rulează pe el, indiferent cât de atent au fost programate. O instalare WordPress îngrijită, cu plugin-uri la zi, este afectată la fel ca o dezvoltare proprie veche. De aceea nu ajută aici o actualizare a aplicației, ci doar o actualizare a PHP.
Alte detalii tehnice despre exploatare nu le publicăm în mod deliberat. Pentru apărare nu sunt necesare: decisiv este dacă serverul dumneavoastră folosește o versiune remediată și dacă noile procese rulează într-adevăr.
Versiuni și moduri de operare afectate
| Ramura PHP | Ultima stare dinaintea corecției | Remediat de la |
|---|---|---|
| 8.5 | 8.5.11 | 8.5.12 |
| 8.4 | 8.4.26 | 8.4.27 |
| 8.3 | 8.3.35 | 8.3.36 |
| 8.2 | 8.2.34 | 8.2.35 |
| 8.1 și mai vechi | nicio actualizare oficială | doar backporturi minime în codul sursă pentru 7.4, 8.0, 8.1 |
Sunt afectate modurile de operare PHP-FPM, Apache cu mod_php, php-cgi, FrankenPHP și LiteSpeed. Echipa PHP evaluează riscul ca fiind cel mai ridicat la mod_php. Distribuțiile și furnizorii de hosting aplică uneori backporturi, astfel încât se afișează un număr de versiune mai vechi deși eroarea este remediată. Decisive sunt starea pachetului și confirmarea furnizorului.
Pentru ordinul de mărime: Palo Alto Networks (Unit 42) a numărat peste 22,6 milioane de instanțe expuse, potențial vulnerabile. BSI a emis nivelul de avertizare 3 (portocaliu) și a anticipat o exploatare rapidă, la scară largă.
Remedierea CVE-2026-109618: actualizare și repornire
Singurul remediu complet este actualizarea. Verificați mai întâi versiunea și starea pachetului. Numele pachetelor diferă de la o distribuție la alta; exemplele pornesc de la PHP 8.3:
php -v
apt policy php8.3-fpm # Debian/Ubuntu
dnf info php-fpm # RHEL, AlmaLinux, Rocky, Fedora
rpm -q --changelog php-fpm | grep -i "CVE-2026-109618"
Dacă changelogul pachetului menționează numărul CVE, backportul este aplicat. Dacă lipsește, nu înseamnă automat că pachetul este vulnerabil; atunci ajută confruntarea cu tabelul de versiuni sau întrebarea adresată furnizorului.
După actualizare, toate procesele PHP trebuie repornite, de exemplu cu systemctl restart php8.3-fpm sau, la mod_php, cu o repornire a Apache. Cum vă asigurați că nu mai rulează niciun worker vechi aflați la Cum reporniți PHP-FPM și toți workerii.
Măsuri provizorii dacă actualizarea nu este încă posibilă
php.net a publicat măsuri provizorii pentru PHP2Shell. Ele se aplică ambelor vulnerabilități împreună și nu sunt în mod expres o protecție completă. Faptul că mai multe dintre ele se referă la limite de memorie se potrivește cu declanșatorul Out-of-Memory al CVE-2026-109618; o atribuire oficială a măsurilor individuale la CVE-uri individuale nu există însă.
; exemplu pool FPM, de ex. /etc/php/8.3/fpm/pool.d/www.conf (calea diferă în funcție de distribuție)
php_admin_value[memory_limit] = -1
php_admin_value[post_max_size] = 8M ; 32M, dacă sunt necesare uploaduri
php_admin_value[upload_max_filesize] = 6M ; immer unter post_max_size
php_admin_flag[session.upload_progress.enabled] = off
Valorile trebuie setate astfel încât aplicațiile să nu le poată suprascrie, de aceea php_admin_value. Cu memory_limit=-1, serviciul are nevoie de o limită de memorie din exterior, prin container sau cgroup, nu prin RLIMIT_AS sau RLIMIT_DATA. La PHP 8.5 se adaugă fatal_error_backtraces=0. Toate detaliile le găsiți la Măsuri imediate dacă nu puteți încă aplica patchul.
Dacă nici actualizarea, nici măsurile provizorii nu sunt posibile imediat, BSI recomandă scoaterea temporară din rețea a serverelor web afectate.
Cum ajută PHP SOS concret?
Prin serviciul nostru de patch PHP închidem CVE-2026-109618 în mod structurat:
- Stabilirea stării actuale: ramura PHP, modul de operare, sursa pachetelor și starea backportului pentru fiecare server.
- Aplicarea actualizării din sursa de pachete potrivită sau, unde nu este posibil, setarea corectă a măsurilor provizorii în configurația pool-ului sau a serverului.
- Verificarea repornirii: controlăm ca niciun proces PHP vechi să nu mai ruleze.
- Dovadă: Primiți o documentație cu versiuni și stări ale pachetelor înainte și după intervenție, de exemplu pentru conducere, asigurător sau protecția datelor.
Întrebări frecvente
Cât de critică este CVE-2026-109618?
Vulnerabilitatea este evaluată cu CVSS v4.0 9.2 și este, prin urmare, critică. Ea permite execuția de cod malițios de la distanță, fără autentificare. BSI (Oficiul Federal German pentru Securitatea Informațiilor) a emis pentru PHP2Shell nivelul de avertizare 3 (portocaliu).
Este suficient să ridic memory_limit?
Nu. php.net menționează memory_limit=-1, fixat în configurația serverului, ca una dintre mai multe măsuri provizorii. Ea nu este în mod expres o protecție completă și necesită o limită de memorie prin container sau cgroup. Soluția rămâne actualizarea.
Ce identificator GHSA aparține de CVE-2026-109618?
În GitHub Security Advisory, vulnerabilitatea este listată sub GHSA-w8hw-w9fx-j79w. A doua vulnerabilitate PHP2Shell, CVE-2026-109619, are identificatorul GHSA-6wmf-4rv5-p3rp.