Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en "Bundler" (CVE-2021-43809)

Gravedad CVSS v3.1:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
08/12/2021
Última modificación:
16/11/2023

Descripción

"Bundler" es un paquete para administrar las dependencias de las aplicaciones en Ruby. En "bundler" versiones anteriores a 2.2.33, cuando se trabaja con "Gemfile" no confiables y aparentemente inofensivos, no se espera que conlleven a una ejecución de código externo, a menos que esté explícito en el código ruby dentro del propio "Gemfile". Sin embargo, si el "Gemfile" incluye entradas "gem" que usan la opción "git" con valores inválidos, pero aparentemente inofensivos, con un guion inicial, esto puede ser falso. Para manejar las dependencias que provienen de un repositorio Git en lugar de un registro, Bundler usa varios comandos, como "git clone". Estos comandos son construidos usando la entrada del usuario (por ejemplo, la URL del repositorio). Cuando son construidos los comandos, las versiones de Bundler anteriores a la 2.2.33, evitan correctamente las vulnerabilidades de inyección de comandos pasando una matriz de argumentos en lugar de una cadena de comandos. Sin embargo, se presenta la posibilidad de que una entrada del usuario comience con un guion ("-") y por lo tanto sea tratada como un argumento opcional en lugar de posicional. Esto puede conllevar a una ejecución de código porque algunos de los comandos presentan opciones que pueden ser aprovechadas para ejecutar ejecutables arbitrarios. Como este valor proviene del archivo "Gemfile", puede contener cualquier carácter, incluyendo un guion inicial. Para explotar esta vulnerabilidad, un atacante tiene que diseñar un directorio que contenga un archivo "Gemfile" que declare una dependencia que sea encontrada en un repositorio Git. Esta dependencia tiene que tener una URL Git en forma de "-u./payload". Esta URL será usada para construir un comando de clonación de Git pero será interpretada como el argumento de upload-pack. Entonces este directorio necesita ser compartido con la víctima, que entonces necesita ejecutar un comando que evalúe el Gemfile, como "bundle lock", dentro. Esta vulnerabilidad puede conllevar a una ejecución de código arbitrario, que potencialmente podría llevar a una toma de control del sistema. Sin embargo, la explotabilidad es muy baja, porque requiere mucha interacción del usuario. Bundler versión 2.2.33 ha parcheado este problema insertando "--" como argumento antes de cualquier argumento posicional a aquellos comandos Git que estaban afectados por este problema. Independientemente de si los usuarios pueden actualizar o no, deberían revisar cualquier "Gemfile" no confiable antes de ejecutar cualquier comando "bundler" que pueda leerlo, ya que puede contener código ruby arbitrario

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:bundler:bundler:*:*:*:*:*:ruby:*:* 2.2.33 (excluyendo)