Un análisis posterior a los hechos de la Fundación PHP afirma que un pequeño grupo de mantenedores conocía una vulnerabilidad grave de PHP desde dos años antes de que se hiciera pública. El problema ahora se explota en ataques conocidos como PHP2Shell, que pueden permitir la ejecución remota de código cuando los atacantes conocen la versión de PHP y la compilación que se ejecutan en un servidor objetivo.
La falla se debe a la forma en que PHP gestiona el agotamiento de memoria. Si el motor salta a su proceso de limpieza mientras construye una estructura de datos, pueden quedar datos incompletos en la memoria. Una solicitud web especialmente diseñada puede aprovechar ese estado inconsistente para ejecutar código con los permisos del proceso de PHP.
La Fundación dijo que, al principio, los mantenedores no consideraron que el problema fuera urgente y debatieron cómo solucionarlo sin romper la compatibilidad con extensiones de terceros. Reconoció errores de gestión. El equipo descrito en el análisis posterior a los hechos es pequeño: un empleado a tiempo completo y 14 contratistas a tiempo parcial mantienen un lenguaje de programación ampliamente utilizado en la web.
El impacto de la vulnerabilidad se ve agravado por la cantidad de instalaciones que ejecutan software sin soporte. El informe dice que el 73 % de las instalaciones de PHP usaba versiones que habían llegado al final de su vida útil cuando se divulgó el problema. Las ramas de PHP que actualmente reciben mantenimiento van de la 8.1 a la 8.5, mientras que muchas instalaciones antiguas dependen de distribuciones de sistemas operativos o repositorios comunitarios para obtener actualizaciones de seguridad.
La Fundación PHP publicó parches que cubren las versiones 7.4 a 8.1. Otras organizaciones también han puesto a disposición correcciones para versiones anteriores, incluidos paquetes del desarrollador de Debian Ondřej Surý, CloudLinux y AlmaLinux. Los proveedores de soporte comercial Ubuntu Pro y Zend han publicado paquetes para versiones tan antiguas como PHP 5.5. La fuente indica que casi el 8 % de las instalaciones todavía utilizaba PHP 5.x, cuya primera versión se publicó en 2005.
Los cortafuegos de aplicaciones web y otras herramientas de seguridad pueden ayudar a bloquear o detectar actividad maliciosa, pero actualizar a una versión parcheada sigue siendo la solución directa. Cloudflare y Fastly añadieron detecciones de PHP2Shell a sus conjuntos de reglas, mientras que los productos de seguridad para servidores pueden vigilar la actividad sospechosa del binario de PHP. Algunos dispositivos de red y dispositivos NAS también incluyen PHP y podrían necesitar actualizaciones.
El informe describe la explotación en curso, incluida una campaña que combinó la falla de PHP con Fragnesia, también conocida como Dirty Frag, para obtener acceso a nivel de kernel a 25 servidores aparentemente vinculados al Gobierno de EE. UU. La empresa de seguridad BitSight informó de numerosos intentos de intrusión mediante PHP2Shell procedentes de distintas fuentes antes del 29 de octubre. En ese momento, no había encontrado un paquete de explotación único y universal, aunque el informe advirtió que eso podía cambiar.
Al principio, Censys calculó que unos 45,7 millones de 119 millones de instalaciones de PHP eran vulnerables. Su recuento posterior situó en alrededor de 29 millones el número de servicios sin parchear. Sin embargo, el 62 % de los servidores PHP que supervisa no informa de su versión, y es posible que las correcciones incorporadas mediante backport no cambien los números de versión, lo que dificulta determinar el estado real de los parches.
Fuentes: Tom's Hardware.