Seguridad y privacidad

PHP publica parches de seguridad urgentes para fallos críticos de ejecución remota de código

PHP 8.5.12, 8.4.27, 8.3.36 y 8.2.35 corrigen dos vulnerabilidades críticas que permiten la ejecución remota de código sin autenticación mediante corrupción de memoria y estado global obsoleto.

Ilustración de un rack de servidores con grietas y circuitos brillantes fugándose, representando vulnerabilidades de seguridad.
Ilustración generada para este artículo

Traducido automáticamente del original en inglés.

El proyecto PHP ha publicado actualizaciones de seguridad inmediatas para las versiones 8.5.12, 8.4.27, 8.3.36 y 8.2.35 con el fin de abordar dos vulnerabilidades críticas. Estos fallos permiten a atacantes no autenticados ejecutar código arbitrario en servidores que ejecutan PHP bajo condiciones específicas. El lanzamiento sigue a un esfuerzo de divulgación coordinada que se vio parcialmente interrumpido por filtraciones anticipadas de los identificadores de vulnerabilidad.

Qué ocurrió

Las versiones actualizadas parchean CVE-2026-109618 y CVE-2026-109619, ambas clasificadas con una gravedad alta. La primera vulnerabilidad implica la ejecución remota de código mediante corrupción por falta de memoria (OOM). Si una solicitud alcanza el límite de memoria de PHP en un momento preciso, el motor puede dejar datos internos parcialmente inicializados en la memoria. Las operaciones posteriores pueden tratar estos datos como válidos, lo que conduce a la corrupción de memoria. En Apache con mod_php, una solicitud no autenticada puede desencadenar esto antes de que se ejecute cualquier código de aplicación, habilitando la ejecución completa de código remoto incluso con la configuración predeterminada. Los investigadores también confirmaron rutas de explotación a través de PHP-FPM mediante código a nivel de aplicación.

La segunda vulnerabilidad proviene del manejo incorrecto del estado global obsoleto. Un error fatal que ocurre en un punto específico puede dejar punteros internos referenciando memoria liberada de una solicitud anterior. Las solicitudes subsiguientes gestionadas por el mismo proceso worker pueden acceder a esta memoria liberada, resultando en errores de uso tras la liberación (use-after-free), caídas del worker y potencialmente ejecución remota de código. Esto fue demostrado contra aplicaciones reales que se ejecutan en Apache con mod_php. Ambos problemas residen en componentes centrales tocados por casi todas las solicitudes, lo que los hace particularmente peligrosos y difíciles de corregir sin afectar el rendimiento o romper la compatibilidad con extensiones de terceros.

Cómo funciona

Estas vulnerabilidades explotan aspectos fundamentales de los sistemas de gestión de memoria y manejo de errores de PHP. En el escenario de OOM, el motor falla al reiniciar limpiamente su estado interno cuando se alcanzan los límites de memoria. En lugar de detenerse de forma segura, deja estructuras corruptas que las operaciones posteriores interpretan erróneamente como datos válidos. Esto permite a un atacante manipular la disposición de la memoria provocando el agotamiento de la memoria en puntos estratégicos, obteniendo eventualmente el control sobre el flujo de ejecución.

El problema del estado global obsoleto surge de cómo PHP gestiona los recursos entre múltiples solicitudes dentro del mismo proceso worker. Cuando ocurre un error fatal, las rutinas de limpieza pueden no invalidar completamente los punteros a memoria previamente asignada. Si una nueva solicitud reutiliza estos punteros colgantes, accede a regiones de memoria inválidas. Los atacantes pueden crear secuencias de solicitudes que provoquen estos errores y luego exploten la confusión de memoria resultante para inyectar y ejecutar código malicioso. Dado que estos mecanismos son centrales para la operación de PHP, corregirlos requirió un equilibrio cuidadoso entre seguridad, rendimiento y compatibilidad hacia atrás.

Detalles clave

  • Versiones afectadas: PHP 8.5.12, 8.4.27, 8.3.36 y 8.2.35 contienen las correcciones; las versiones anteriores no soportadas permanecen vulnerables.
  • CVE-2026-109618: Ejecución remota de código mediante corrupción por falta de memoria, explotable en Apache/mod_php sin autenticación.
  • CVE-2026-109619: Ejecución remota de código mediante estado global obsoleto y uso tras la liberación, confirmado en Apache/mod_php.
  • Interrupción de la divulgación: Los IDs de CVE fueron filtrados el 20 de octubre, lo que provocó un calendario de lanzamiento acelerado desde el 22 de octubre hasta el 21 de octubre.
  • Colaboradores de investigación: Calif, OpenAI, Wiz y Trail of Bits identificaron y reportaron las vulnerabilidades a través de canales de divulgación responsable.
  • Historial de la causa raíz: El problema de OOM fue teorizado inicialmente en 2024, pero carecía de un vector de exploit concreto hasta que investigaciones recientes asistidas por IA aclararon la ruta de ataque.

Por qué importa

Para los equipos que mantienen aplicaciones PHP, estas vulnerabilidades representan un riesgo significativo porque pueden ser provocadas sin autenticación y afectan el comportamiento central del motor. El hecho de que la explotación sea posible en configuraciones predeterminadas significa que muchos entornos de producción están expuestos hasta que se apliquen los parches. La complejidad de las correcciones destaca la deuda técnica acumulada en proyectos longevos como PHP, donde cambiar la lógica de gestión de memoria arriesga romper incontables extensiones de terceros y aplicaciones existentes.

El incidente también subraya el panorama evolutivo de la investigación en seguridad de software. Herramientas asistidas por IA jugaron un papel importante en la identificación y validación de estas vulnerabilidades, acelerando el proceso de descubrimiento en comparación con la auditoría manual tradicional. Sin embargo, esta misma tecnología aumenta el volumen de informes que los equipos de seguridad deben triagear, incluyendo muchas presentaciones inválidas o duplicadas. Las recientes inversiones de la Fundación PHP en personal profesional de seguridad y herramientas automatizadas fueron cruciales para gestionar este flujo y entregar parches oportunos, demostrando la necesidad de financiación sostenida para la seguridad de la infraestructura de código abierto.

Qué puedes hacer

  • Actualiza tus instalaciones de PHP a la versión 8.5.12, 8.4.27, 8.3.36 o 8.2.35 inmediatamente según tu rama actual.
  • Verifica que tu pipeline de despliegue pueda extraer automáticamente estas versiones actualizadas de tu gestor de paquetes o repositorio de distribución.
  • Revisa los registros del servidor en busca de eventos inusuales de agotamiento de memoria o errores fatales que puedan indicar intentos de explotación previos al parcheo.
  • Considera patrocinar a la Fundación PHP si tu organización depende de PHP, ya que su trabajo apoya directamente la seguridad y estabilidad del ecosistema.
  • Monitorea los canales oficiales de PHP para cualquier aviso adicional, ya que la reciente filtración podría haber acelerado el desarrollo de exploits públicos de prueba de concepto.
  • Evalúa tu uso de mod_php frente a PHP-FPM, ya que los vectores de ataque difieren ligeramente entre estas configuraciones, aunque ambas están afectadas.
  • #php
  • #security
  • #vulnerability
  • #open source
  • #memory safety

Herramientas de la Tienda de Bytechap

Seguir leyendo

Todos los artículos