Vulnerabilidad en el Framework Zend

Recientemente fue descubierta una vulnerabilidad en el framework Zend en su versión 3.0.0 y el proyecto Laminas laminas-http anteriores a la versión 2.14.2 (sucesor de Zend), que permitiría a atacantes explotar un fallo identificado como CVE-2021-3007, que daría paso a la ejecución remota de códigos (RCE) en sitios PHP.

Zend Framework consta de paquetes PHP instalados más de 570 millones de veces. Los desarrolladores utilizan el marco para crear aplicaciones web orientadas a objetos.

Se trata de una vulnerabilidad de deserialización que puede conducir a la ejecución remota de código si el contenido es controlable, relacionado con el método _destruct de la clase Zend \ Http \ Response \ Stream en Stream.php.

La vulnerabilidad proviene del destructor de la clase Stream , que es un método mágico de PHP. Por ejemplo, un objeto Stream recién creado, en este caso, ejecutaría una serie de comandos en su concepción a través del constructor .

Una vez que el objeto ha cumplido su propósito a lo largo del flujo de trabajo de ejecución del programa, el intérprete de PHP eventualmente llamará al destructor del objeto y seguirá otra secuencia de comandos para liberar memoria, realizar tareas de limpieza y eliminar cualquier archivo temporal, como una buena práctica.

El método unlink () llamado por el destructor de Stream para eliminar un archivo espera un nombre de archivo como parámetro, que es del tipo de datos de cadena.

Esto significa que, si la clase Stream recibe un objeto Gravator donde se espera streamName , bajo ciertas circunstancias, el actor de amenazas podría ejecutar comandos arbitrarios dentro de aplicaciones PHP vulnerables creadas con Zend.

Las aplicaciones creadas con Laminas también pueden verse afectadas:

En enero de 2020, Zend Framework se migró al proyecto Laminas con una cantidad significativa de código que simplemente se trasladó a la base de código más nueva.

Por ejemplo, la clase Stream.php de Zend con el destructor antes mencionado continúa existiendo en algunas versiones de Laminas.

«El código puede estar relacionado con Laminas Project laminas-http . Zend Framework ya no es compatible con el mantenedor. Sin embargo, no todas las vulnerabilidades de Zend Framework 3.0.0 existen en una versión de Laminas Project».

Recomendaciones de seguridad

  • Revisar minuciosamente sus aplicaciones web para detectar casos de deserialización de objetos que no sean de confianza.
  • Realizar auditorías de seguridad exhaustivas de sus aplicaciones web para detectar vulnerabilidades específicas de su entorno.
  • Aplicar el parche de seguridad lo antes posible, ACTUALIZAR.

Referencias

Compartir: