php2shell – CVE-2026-109618 / CVE-2026-109619

0 Usuarios y 2 Visitantes están viendo este tema.

hielasangre

  • Administrador
  • Jr. Member
  • *****
    • Mensajes: 61
    • Ver Perfil
Introducción

php2shell es un proyecto de investigación en seguridad informática que presenta una prueba de concepto (PoC) relacionada con vulnerabilidades de corrupción de memoria en PHP, identificadas como CVE-2026-109618 y CVE-2026-109619.

El proyecto, publicado por syrex1013 en GitHub, estudia un problema de tipo Heap Use-After-Free (UAF) localizado en el mecanismo de seguimiento del progreso de carga de archivos de las sesiones PHP, conocido como session.upload_progress.

Estas vulnerabilidades resultan especialmente interesantes porque afectan componentes internos del intérprete PHP y permiten estudiar cómo un error en la administración de memoria puede convertirse en una condición potencialmente explotable.

El repositorio incluye herramientas de investigación, entornos Docker para reproducir el comportamiento vulnerable y una prueba de concepto que contempla diferentes escenarios de ejecución remota de código.

Información general

  • Proyecto: php2shell
  • Autor del repositorio: syrex1013
  • Vulnerabilidades: CVE-2026-109618 / CVE-2026-109619
  • Componente afectado: PHP ext/session/session.c
  • Clasificación: Heap Use-After-Free
  • Severidad indicada por el proyecto: CVSS 9.2 (Crítica)
  • Lenguajes y tecnologías: PHP, Python, Docker y FastCGI
  • Repositorio: github.com/syrex1013/php2shell



¿En qué consiste la vulnerabilidad?

PHP incorpora un mecanismo que permite consultar el progreso de las cargas de archivos realizadas mediante solicitudes HTTP multipart/form-data.

Este mecanismo utiliza estructuras internas para almacenar información relacionada con las sesiones y los bytes procesados durante una transferencia.

El problema investigado por php2shell aparece cuando determinadas referencias a estructuras de memoria permanecen almacenadas después de que la memoria correspondiente haya sido liberada.

Esta situación se conoce como Use-After-Free.

En términos generales, un Use-After-Free ocurre cuando una aplicación intenta acceder a una región de memoria que anteriormente fue liberada y que, potencialmente, puede haber sido reutilizada para almacenar otros datos.

Dependiendo del contexto, estos errores pueden provocar:

  • Corrupción de memoria durante la ejecución del proceso.
  • Finalización inesperada de procesos PHP.
  • Alteración de estructuras internas del intérprete.
  • Comportamientos inesperados relacionados con el procesamiento de sesiones.
  • Posibles escenarios de ejecución de código bajo determinadas condiciones de explotación.

Es importante aclarar que la existencia de un error Use-After-Free no implica automáticamente que cualquier instalación vulnerable permita ejecutar comandos de forma remota.

La explotación efectiva depende de las condiciones del entorno, de la configuración del servidor y de la posibilidad de encadenar otros mecanismos o vulnerabilidades.



Análisis técnico del problema

La investigación identifica el origen del problema en el archivo ext/session/session.c del código fuente de PHP.

Durante el procesamiento de una carga de archivos, el intérprete conserva referencias internas de tipo zval* relacionadas con una tabla hash utilizada para almacenar información de sesión.

Bajo determinadas condiciones de temporización, el procesamiento posterior puede provocar que la estructura original sea liberada mientras todavía existen referencias que apuntan hacia ella.

Cuando el intérprete intenta actualizar nuevamente los valores asociados al progreso de la transferencia, puede terminar escribiendo sobre una región de memoria que ya no pertenece a la estructura original.

El comportamiento puede resumirse en las siguientes etapas:

Código: [Seleccionar]
1. Recepción de una solicitud multipart/form-data.

2. Inicialización del seguimiento de progreso.

3. Almacenamiento de referencias internas zval*.

4. Actualización de estructuras asociadas a la sesión.

5. Liberación de una estructura previamente referenciada.

6. Utilización posterior de una referencia obsoleta.

7. Posible corrupción de memoria.

Las dos vulnerabilidades documentadas se relacionan con referencias internas diferentes:

  • CVE-2026-109618: referencia obsoleta asociada a post_bytes_processed.
  • CVE-2026-109619: referencia obsoleta asociada a current_file_bytes_processed.

Ambas pertenecen a la misma familia de problemas de administración de memoria.



Versiones de PHP afectadas

De acuerdo con la información publicada en el repositorio, las siguientes versiones se encuentran dentro de los rangos afectados:

Código: [Seleccionar]
Rama PHP     Vulnerable hasta     Corregida en
------------------------------------------------
PHP 8.2      8.2.34              8.2.35
PHP 8.3      8.3.35              8.3.36
PHP 8.4      8.4.26              8.4.27
PHP 8.5      8.5.11              8.5.12
------------------------------------------------
PHP <= 8.1   Sin backport indicado (EOL)

Es recomendable comprobar también los avisos de seguridad del proveedor de PHP o de la distribución utilizada, ya que algunas distribuciones incorporan correcciones de seguridad mediante backports sin modificar necesariamente el número principal de versión.



Contenido del repositorio

El proyecto se encuentra organizado en diferentes componentes que permiten estudiar tanto la condición de corrupción de memoria como determinados escenarios de explotación.

1. poc.py

Implementación principal de la prueba de concepto.

El autor documenta diferentes estrategias relacionadas con la ejecución remota de código, incluyendo escenarios que combinan problemas de sesiones, inclusión local de archivos y acceso a servicios FastCGI.

2. lab-uaf/

Entorno de laboratorio basado en Docker destinado a reproducir el comportamiento Use-After-Free.

Este componente permite observar el problema en un entorno controlado sin depender de una aplicación web de producción.

3. lab/

Laboratorio basado en Apache que incorpora una aplicación de prueba para estudiar cadenas de explotación relacionadas con sesiones PHP e inclusión local de archivos.

4. cve-candidate/

Directorio que forma parte del material de investigación incluido en el repositorio.



Escenarios de explotación estudiados

Uno de los aspectos interesantes de php2shell es que no se limita a documentar un error de memoria, sino que también presenta distintas técnicas que podrían intervenir en una cadena de explotación.

Entre ellas se encuentran:

Session Poisoning + LFI

Consiste en estudiar la posibilidad de combinar la manipulación de información de sesión con una vulnerabilidad de inclusión local de archivos (Local File Inclusion).

Log Poisoning + LFI

Analiza escenarios en los que una aplicación vulnerable permite incluir archivos de registro que contienen información previamente controlada por un atacante.

FastCGI

Contempla escenarios relacionados con la exposición o configuración insegura de servicios PHP-FPM mediante FastCGI.

PEAR

Estudia determinadas condiciones en las que componentes asociados a PEAR pueden intervenir en una cadena de ejecución de código.

Estas técnicas requieren condiciones específicas y no deben interpretarse como funcionalidades presentes o explotables en cualquier servidor PHP.



Laboratorio de investigación

El repositorio proporciona un entorno Docker para analizar el comportamiento de la vulnerabilidad de forma aislada.

Requisitos:

  • Docker y Docker Compose.
  • Python 3.8 o superior.
  • Un sistema Linux compatible con Docker.
  • Un entorno de pruebas aislado y autorizado.

Descarga del proyecto:

Código: [Seleccionar]
git clone https://github.com/syrex1013/php2shell

cd php2shell/lab-uaf

Construcción e inicio del laboratorio:

Código: [Seleccionar]
docker compose up -d --build

Una vez iniciado el entorno, el investigador puede utilizar las herramientas de prueba incluidas en el repositorio para analizar el comportamiento de las sesiones y observar los efectos del error de memoria.

El laboratorio está pensado para reproducir la condición vulnerable y estudiar sus características técnicas.

Conviene realizar estas pruebas exclusivamente en máquinas virtuales, contenedores o infraestructuras específicamente destinadas a investigación.



Medidas de mitigación

La medida principal consiste en actualizar PHP a una versión corregida y mantenida.

Adicionalmente, el repositorio documenta una mitigación temporal que permite desactivar el seguimiento del progreso de carga de archivos en sesiones PHP.

Configuración en php.ini:

Código: [Seleccionar]
session.upload_progress.enabled = Off

Después de modificar la configuración, es necesario aplicar los cambios al servicio PHP correspondiente.

Esta mitigación puede afectar aplicaciones que utilizan el seguimiento de progreso de carga, por lo que debe evaluarse antes de implementarla.

Recomendaciones adicionales:

  • Mantener PHP actualizado y utilizar ramas con soporte de seguridad.
  • Revisar las configuraciones de PHP-FPM y Apache.
  • Evitar la exposición innecesaria de servicios FastCGI.
  • Revisar aplicaciones que realizan inclusión dinámica de archivos.
  • Restringir los permisos de lectura y escritura de los procesos web.
  • Implementar monitoreo de errores y finalizaciones inesperadas de procesos PHP.
  • Evaluar los mecanismos de aislamiento de aplicaciones y contenedores.
  • Verificar las correcciones de seguridad incorporadas por la distribución Linux utilizada.



Conclusiones

php2shell constituye un caso de estudio interesante sobre las consecuencias que puede tener un error de administración de memoria dentro de un intérprete ampliamente utilizado en aplicaciones web.

La investigación demuestra la importancia de analizar no solamente las vulnerabilidades presentes en el código de una aplicación, sino también aquellas que pueden encontrarse en sus dependencias, extensiones y componentes internos.

El proyecto también permite comprender cómo determinadas debilidades pueden combinarse para construir escenarios de explotación más complejos.

Desde el punto de vista defensivo, este tipo de investigaciones refuerza la necesidad de mantener inventarios actualizados de software, aplicar parches oportunamente y revisar la exposición de los servicios que forman parte de la infraestructura web.

En definitiva, php2shell es un recurso de interés para investigadores de seguridad, administradores de sistemas, desarrolladores PHP y profesionales dedicados al análisis de vulnerabilidades.



Referencias

Repositorio original:
https://github.com/syrex1013/php2shell

Documentación oficial de PHP:
PHP – Session Upload Progress

Código fuente de PHP:
https://github.com/php/php-src



Aviso: el contenido se presenta exclusivamente con fines educativos, de investigación y auditoría de seguridad autorizada. Las pruebas de concepto deben ejecutarse únicamente sobre sistemas propios o con autorización expresa de sus responsables.