L'equip de PHP va publicar el 21 d'octubre versions de seguretat d'emergència per corregir dues vulnerabilitats crítiques al nucli del llenguatge, batejades com a «PHP2Shell». Les fallades, CVE-2026-109618 i CVE-2026-109619, permeten executar codi al servidor amb una petició web sense autenticar i afecten totes les versions de PHP des de la 5.4 fins a la 8.5.11. Els detalls es van filtrar un dia abans del pedaç i ja hi ha proves de concepte públiques.
A diferència de la majoria d'avisos de seguretat de l'ecosistema PHP, que afecten un connector o una aplicació concreta, aquí el problema és al mateix intèrpret. Això vol dir que tant és si el servidor executa WordPress, Drupal, Laravel o una aplicació feta a mà: si serveix peticions web amb una versió vulnerable, està exposat.
Què ha passat
- 20 d'octubre, al matí: una publicació a Hacker News anuncia dues vulnerabilitats crítiques de PHP abans de la seva divulgació. Es retira, però les captures ja circulen i watchTowr confirma la filtració.
- 20 d'octubre: PHP avança el calendari i anuncia una versió de seguretat fora de cicle per a l'endemà a les 14:00 UTC. L'embargament original era el dijous.
- 21 d'octubre: surten PHP 8.5.12, 8.4.27, 8.3.36 i 8.2.35. Aquella mateixa tarda, Calif i Wiz Research publiquen els detalls tècnics.
Les dues fallades
- CVE-2026-109618 (falta de memòria): si PHP es queda sense memòria mentre prepara les dades d'una petició, el procés s'interromp i aquestes dades queden només mig inicialitzades. La neteja posterior les tracta com a vàlides, i això obre una via per executar codi.
- CVE-2026-109619 (estat que sobreviu): part de l'estat intern d'una petició continua existint després d'alliberar-ne la memòria. La petició següent que atén el mateix procés de PHP pot fer servir aquest estat obsolet abans que es reiniciï, un clàssic use-after-free que permet filtrar memòria o executar codi amb els permisos del servidor web.
El projecte PHP els assigna una puntuació CVSS 4.0 de 9,2 sobre 10: atac per xarxa, sense autenticació ni interacció de l'usuari, tot i que de complexitat alta. Les primeres filtracions parlaven d'un 10. Els detalls filtrats apunten a la funció session.upload_progress, que ve activada per defecte.
A qui afecta
Segons PHP, està en risc qualsevol instal·lació que serveixi peticions web: PHP-FPM, Apache amb mod_php, php-cgi, FrankenPHP i LiteSpeed. PHP ha confirmat a més que existeix un exploit per a mod_php en què la petició maliciosa actua abans que s'arribi a executar el codi de l'aplicació, així que ni el WordPress més ben actualitzat protegeix per si sol.
Wiz va demostrar l'execució remota de codi contra WordPress, Drupal i Joomla, i una via separada de fuga de memòria amb què es podrien llegir contrasenyes, tokens, claus d'API o certificats que siguin a la memòria del procés.
El problema de les versions antigues
Les versions corregides són 8.5.12, 8.4.27, 8.3.36 i 8.2.35. PHP 8.1 i anteriors estan fora de suport i no tindran versió nova; el projecte només ha publicat pedaços mínims de codi font per a 7.4, 8.0 i 8.1, pensats per a qui compila PHP pel seu compte.
Les xifres de VirusTotal donen una idea de la mida del problema. Dels servidors PHP que mostren la versió a les capçaleres, uns 272.000 fan servir branques amb suport, davant d'uns 758.000 que continuen en versions entre la 5.4 i la 8.1; només PHP 7.4 en suma uns 187.000. I com que quatre de cada cinc servidors amaguen la versió, la xifra real és força més gran.
Hi ha un matís important: moltes distribucions Linux (Debian, Ubuntu, Red Hat) apliquen els pedaços als seus propis paquets sense canviar el número de versió. Un PHP que diu ser 8.2.x de Debian pot estar corregit encara que no posi 8.2.35; cal mirar l'avís de seguretat de la distribució.
Explotació
Hi ha proves de concepte públiques des d'abans del pedaç. A la tarda del 21 d'octubre, Huntress encara no havia vist atacs reals als equips que vigila, tot i que altres fonts ja parlen d'intents. Cloudflare ha afegit regles d'emergència als seus conjunts gestionats, inclosos els del pla gratuït.
Què cal fer ja
- Actualitzar PHP a 8.5.12, 8.4.27, 8.3.36 o 8.2.35, o al paquet corregit de la distribució, i reiniciar PHP-FPM o el servidor web. Començar per tot el que estigui exposat a Internet.
- Revisar les imatges Docker: un contenidor amb una etiqueta fixa de PHP no es corregeix sol. Cal reconstruir o descarregar la imatge nova i recrear el contenidor. Per veure la versió:
docker exec <contenidor> php -v. - Fer inventari: PHP apareix en llocs inesperats, com panells d'allotjament (cPanel, Plesk), phpMyAdmin, Nextcloud, Roundcube o programari de tercers.
- Si encara no es pot actualitzar: posar
session.upload_progress.enabled = Offaphp.inii reiniciar. És un pal·liatiu i pot no cobrir tots els vectors, però redueix molt el risc. - Treure d'Internet el que no tingui solució: les instal·lacions en PHP 8.1 o anteriors haurien de quedar darrere d'una VPN o un WAF mentre es migren.
- Vigilar senyals de compromís: processos de PHP que llancen
sh,bash,curl,wgetonc, fitxers nous a l'arrel web, tasques cron desconegudes o usuaris nous. I, per la fuga de memòria, plantejar-se canviar les claus i contrasenyes dels servidors exposats.
Què cal vigilar a continuació
- Si apareixen campanyes d'explotació massiva, una cosa habitual pocs dies després d'un pedaç amb exploit públic.
- Els avisos de les distribucions Linux i dels proveïdors d'allotjament compartit, que concentren milers de webs en versions antigues.
- Pedaços de tercers per a versions sense suport, l'eficàcia dels quals encara no s'ha avaluat.
No és el primer ensurt recent a l'ecosistema PHP: repassa l'atac a la cadena de subministrament que va comprometre més de 700 versions de Laravel-Lang.
Conclusió: PHP2Shell és de les fallades que justifiquen deixar el que s'estigui fent per actualitzar. Afecta l'intèrpret, no una aplicació, funciona sense contrasenya i els detalls ja són públics. Qui continuï en PHP 7.4 o anterior té, a més, l'excusa definitiva per migrar.
Fonts i documentació
- PHP — Avís de seguretat GHSA-w8hw-w9fx-j79w (CVE-2026-109618)
- PHP — Avís de seguretat GHSA-6wmf-4rv5-p3rp (CVE-2026-109619)
- Huntress — Rapid Response: php2shell, Leaked Critical PHP Vulnerabilities
- Google Cloud — Responding to core PHP vulnerabilities CVE-2026-109618 and CVE-2026-109619
- VirusTotal — Sizing the PHP exposure window for CVE-2026-109618 and CVE-2026-109619
- Sophos — Proof-of-concept exploit released for PHP vulnerabilities
- elhacker.NET — PHP alerta sobre dos fallos críticos y lanzará parches de emergencia