Se han detectado múltiples vulnerabilidades críticas en el sistema de ejecución de código en línea de código abierto conocido como Judge0, las cuales podrían ser explotadas para lograr la ejecución de código en el sistema de destino.

Las tres fallas, todas de naturaleza crítica, permiten que un atacante con acceso suficiente pueda sortear las medidas de seguridad y obtener permisos de root en la máquina anfitriona, según informó la firma australiana de ciberseguridad Tanto Security en un informe reciente.

Judge0, pronunciado como “juez cero”, es descrito por sus desarrolladores como un sistema robusto, escalable y de código abierto para la ejecución de código en línea. Este sistema se puede emplear para desarrollar aplicaciones que requieran funciones de ejecución de código en línea, como evaluaciones de candidatos, plataformas de aprendizaje electrónico y entornos de desarrollo integrado (IDE) en línea.

Según su sitio web, Judge0 es utilizado por 23 clientes, incluyendo AlgoDaily, CodeChum y PYnative, entre otros. El proyecto ha sido bifurcado en 412 ocasiones en GitHub hasta la fecha.

Las vulnerabilidades, descubiertas y reportadas por Daniel Cooper en marzo de 2024, se detallan a continuación:

  • CVE-2024-28185 (CVSS score: 10,0): La aplicación no considera los enlaces simbólicos ubicados dentro del directorio del entorno restringido, lo que un atacante podría aprovechar para escribir en archivos arbitrarios y ejecutar código fuera del entorno restringido.
  • CVE-2024-28189 (CVSS score: 10,0): Una omisión de parches para CVE-2024-28185, derivada del uso del comando chown de UNIX en un archivo no confiable dentro del entorno restringido. Un atacante podría abusar de esto creando enlaces simbólicos a archivos fuera del espacio aislado, lo que le permitiría ejecutar chown en archivos arbitrarios fuera del espacio aislado.
  • CVE-2024-29021 (CVSS score: 9,1): La configuración predeterminada de Judge0 deja el servicio vulnerable a una falsificación de solicitudes del lado del servidor (SSRF), lo que permite que un atacante con acceso suficiente a la API de Judge0 ejecute código sin restricciones como root en la máquina de destino.

El problema tiene su origen en un script de Ruby llamado “isolate_job.rb”, el cual se encarga de configurar el entorno restringido, ejecutar el código y almacenar los resultados de la ejecución. Específicamente, implica la creación de enlaces simbólicos en el directorio antes de configurar un script bash para ejecutar el programa basado en el lenguaje de envío, lo que permite escribir en un archivo arbitrario en el sistema sin restricciones.

Un actor malintencionado podría aprovechar esta falla para sobrescribir scripts en el sistema y ejecutar código fuera del entorno restringido y dentro del contenedor de Docker que ejecuta el trabajo de envío. Además, el atacante podría escalar sus privilegios fuera del contenedor de Docker debido a que se ejecuta con privilegios especificados en docker-compose.yml.

Tras la divulgación responsable, estas deficiencias se han abordado en la versión 1.13.1, lanzada el 18 de abril de 2024. Se recomienda a los usuarios de Judge0 que actualicen a la última versión para mitigar posibles amenazas.

fuente:thehackernews