Se soluciona vulnerabilidad crítica en PHP Packagist

Un investigador de ciberseguridad ayudó a reportar el problema

Los administradores de Packagist, el repositorio de paquetes más grande del ecosistema de PHP, han solucionado una vulnerabilidad crítica en su sitio web oficial que podría haber permitido a un atacante el secuestro de su servicio. La vulnerabilidad fue descubierta y reportada por el investigador en ciberseguridad Max Justicz.

Según el investigador, el campo de entrada “Enviar paquete” para enviar nuevos paquetes PHP a través de la página de inicio de Packagist permitió a un atacante ejecutar un comando malicioso con el formato “$ (MALICIOUS_COMMANDS)”.

La causa principal de este problema fue que el servicio de Packagist esperaba que la entrada fuera una URL que redirigiera hacia un repositorio de código fuente alojado en un servidor Git, Perforce, Subversion o Mercurial.

El experto en ciberseguridad descubrió que Packagist estaba escapando incorrectamente de los caracteres ingresados al realizar comprobaciones para ver si la URL lleva a un repositorio Perforce o Subversion, y estaba ejecutando los comandos maliciosos: una vez para el control Perforce y otra vez para la verificación de Subversion.

Dependiendo del nivel de habilidad de un posible atacante, alguien podría haber secuestrado fácilmente el servidor de Packagist subyacente y realizar más acciones intrusivas.

La vulnerabilidad ya ha sido corregida, acorde al propio Max Justicz.

El mencionado experto en ciberseguridad tiene la costumbre de encontrar y reportar fallas en los populares gestores de paquetes de lenguaje de programación y servicios relacionados. Él informó previamente y ayudó a corregir:

  • Una vulnerabilidad de ejecución remota de código en RubyGems.org, el principal repositorio de paquetes de Ruby (servicio de alojamiento)
  • una falla que permitió a un grupo de hackers eliminar archivos del Python Package Index (PyPI)
  • una ejecución remota de código en un espejo del servicio npmjs.org, el repositorio de paquetes principal del ecosistema de JavaScript
  • Una vulnerabilidad en Unpkg.com

Acorde a especialistas en ciberseguridad del Instituto Internacional de Seguridad Cibernética, el número de vulnerabilidades registradas incrementa año con año. Tan sólo en 2017, se alcanzó la cifra histórica de 14 mil 600 casos reportados, un crecimiento de 120% con respecto al registro anterior de 6 mil 640 vulnerabilidades.